Skip to content

Commit 56ef8d4

Browse files
committed
调整代码逻辑+增加unitTest
1 parent e83962c commit 56ef8d4

15 files changed

+293
-139
lines changed

arex-instrumentation/servlet/arex-httpservlet/src/main/java/io/arex/inst/httpservlet/convert/BodyConvertFactory.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

arex-instrumentation/servlet/arex-httpservlet/src/main/java/io/arex/inst/httpservlet/convert/BodyConverters.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.arex.inst.httpservlet.convert;
2+
3+
import io.arex.agent.bootstrap.util.CollectionUtil;
4+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
5+
import io.arex.inst.httpservlet.convert.impl.DefaultHttpMessageConverter;
6+
7+
import java.util.*;
8+
9+
public class HttpMessageConvertFactory {
10+
11+
12+
private static final List<HttpMessageConverter> cacheList = new ArrayList<>();
13+
14+
15+
16+
static {
17+
ServiceLoader<HttpMessageConverter> load = ServiceLoader.load(HttpMessageConverter.class);
18+
if (load != null) {
19+
Iterator<HttpMessageConverter> iterator = load.iterator();
20+
while (iterator.hasNext()) {
21+
cacheList.add(iterator.next());
22+
}
23+
}
24+
}
25+
26+
27+
public static <P, R> HttpMessageConverter<P, R> getSupportedConverter(P p, R r, ServletAdapter adapter) {
28+
synchronized (HttpMessageConvertFactory.class) {
29+
if (CollectionUtil.isNotEmpty(cacheList)) {
30+
for (HttpMessageConverter converter : cacheList) {
31+
if (converter.match(p, r, adapter)) {
32+
return converter;
33+
}
34+
}
35+
}
36+
return DefaultHttpMessageConverter.getInstance();
37+
}
38+
}
39+
40+
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.arex.inst.httpservlet.convert;
2+
3+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
4+
5+
public interface HttpMessageConverter<HttpServletRequest, HttpServletResponse> {
6+
7+
boolean match(HttpServletRequest request,HttpServletResponse response, ServletAdapter adapter);
8+
byte[] getRequest(HttpServletRequest request, ServletAdapter adapter);
9+
byte[] getResponse(HttpServletResponse request, ServletAdapter adapter);
10+
}

arex-instrumentation/servlet/arex-httpservlet/src/main/java/io/arex/inst/httpservlet/convert/impl/ApplicationJsonBodyConvert.java

Lines changed: 0 additions & 29 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package io.arex.inst.httpservlet.convert.impl;
2+
3+
import io.arex.agent.bootstrap.util.StringUtil;
4+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
5+
import io.arex.inst.httpservlet.convert.HttpMessageConverter;
6+
7+
public class ApplicationJsonBodyConverter<HttpServletRequest, HttpServletResponse> implements HttpMessageConverter<HttpServletRequest, HttpServletResponse> {
8+
9+
private static final String CONTENT_TYPE = "application/json";
10+
11+
@Override
12+
public boolean match(HttpServletRequest request, HttpServletResponse response, ServletAdapter adapter) {
13+
if (request == null || response ==null || adapter == null) {
14+
return false;
15+
}
16+
String contentType = adapter.getContentType(request);
17+
return StringUtil.isNotEmpty(contentType) && contentType.contains(CONTENT_TYPE);
18+
}
19+
20+
@Override
21+
public byte[] getRequest(HttpServletRequest request, ServletAdapter adapter) {
22+
if (request == null || adapter == null) {
23+
return new byte[0];
24+
}
25+
return adapter.getRequestBytes(request);
26+
}
27+
28+
@Override
29+
public byte[] getResponse(HttpServletResponse response, ServletAdapter adapter) {
30+
return new byte[0];
31+
}
32+
}
33+
34+
35+
36+

arex-instrumentation/servlet/arex-httpservlet/src/main/java/io/arex/inst/httpservlet/convert/impl/ApplicationXmlBodyConvert.java

Lines changed: 0 additions & 25 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.arex.inst.httpservlet.convert.impl;
2+
3+
import io.arex.agent.bootstrap.util.StringUtil;
4+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
5+
import io.arex.inst.httpservlet.convert.HttpMessageConverter;
6+
7+
8+
public class ApplicationXmlBodyConverter<HttpServletRequest, HttpServletResponse> implements HttpMessageConverter<HttpServletRequest, HttpServletResponse> {
9+
10+
private static final String CONTENT_TYPE = "application/xml";
11+
12+
@Override
13+
public boolean match(HttpServletRequest request, HttpServletResponse response, ServletAdapter adapter) {
14+
if (request == null || response ==null || adapter == null) {
15+
return false;
16+
}
17+
String contentType = adapter.getContentType(request);
18+
return StringUtil.isNotEmpty(contentType) && contentType.contains(CONTENT_TYPE);
19+
}
20+
21+
@Override
22+
public byte[] getRequest(HttpServletRequest request, ServletAdapter adapter) {
23+
return new byte[0];
24+
}
25+
26+
@Override
27+
public byte[] getResponse(HttpServletResponse response, ServletAdapter adapter) {
28+
return new byte[0];
29+
}
30+
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.arex.inst.httpservlet.convert.impl;
2+
3+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
4+
import io.arex.inst.httpservlet.convert.HttpMessageConverter;
5+
6+
public class DefaultHttpMessageConverter<HttpServletRequest, HttpServletResponse> implements HttpMessageConverter<HttpServletRequest, HttpServletResponse> {
7+
8+
private DefaultHttpMessageConverter() {
9+
10+
}
11+
12+
private volatile static DefaultHttpMessageConverter instance;
13+
14+
15+
public static final DefaultHttpMessageConverter getInstance() {
16+
if (instance == null) {
17+
synchronized (DefaultHttpMessageConverter.class) {
18+
if (instance == null) {
19+
instance = new DefaultHttpMessageConverter();
20+
}
21+
}
22+
}
23+
return instance;
24+
}
25+
26+
27+
@Override
28+
public boolean match(HttpServletRequest request, HttpServletResponse response, ServletAdapter adapter) {
29+
return false;
30+
}
31+
32+
@Override
33+
public byte[] getRequest(HttpServletRequest request, ServletAdapter adapter) {
34+
return new byte[0];
35+
}
36+
37+
@Override
38+
public byte[] getResponse(HttpServletResponse response, ServletAdapter adapter) {
39+
return new byte[0];
40+
}
41+
}

arex-instrumentation/servlet/arex-httpservlet/src/main/resources/META-INF/services/io.arex.inst.httpservlet.convert.BodyConverters

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)