Skip to content

Commit 829b3f8

Browse files
committed
增加多类型匹配
增加多类型匹配
1 parent 4192a75 commit 829b3f8

5 files changed

Lines changed: 96 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.arex.inst.httpservlet.convert;
2+
3+
import io.arex.agent.bootstrap.util.CollectionUtil;
4+
5+
import java.util.*;
6+
7+
public class BodyConvertFactory {
8+
9+
10+
private static final List<BodyConverters> cacheList = new ArrayList<>();
11+
12+
static {
13+
ServiceLoader<BodyConverters> load = ServiceLoader.load(BodyConverters.class);
14+
if (load != null) {
15+
Iterator<BodyConverters> iterator = load.iterator();
16+
while (iterator.hasNext()) {
17+
cacheList.add(iterator.next());
18+
}
19+
}
20+
}
21+
22+
public static List<BodyConverters> getAllList() {
23+
synchronized (BodyConvertFactory.class) {
24+
if (CollectionUtil.isNotEmpty(cacheList)) {
25+
return Collections.unmodifiableList(cacheList);
26+
}
27+
return null;
28+
}
29+
}
30+
31+
}
Lines changed: 10 additions & 0 deletions
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 BodyConverters<HttpServletRequest, HttpServletResponse> {
6+
7+
boolean match(HttpServletRequest request, ServletAdapter adapter);
8+
9+
String getBody(HttpServletRequest request, ServletAdapter adapter);
10+
}
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.BodyConverters;
6+
7+
import javax.servlet.http.HttpServletRequest;
8+
import javax.servlet.http.HttpServletResponse;
9+
import java.util.Base64;
10+
11+
public class ApplicationJsonBodyConvert implements BodyConverters<HttpServletRequest, HttpServletResponse> {
12+
13+
private static final String CONTENT_TYPE = "application/json";
14+
15+
@Override
16+
public boolean match(HttpServletRequest httpServletRequest, ServletAdapter adapter) {
17+
if (httpServletRequest == null || adapter == null) {
18+
return false;
19+
}
20+
String contentType = adapter.getContentType(httpServletRequest);
21+
return StringUtil.isNotEmpty(contentType) && contentType.contains(CONTENT_TYPE);
22+
}
23+
24+
@Override
25+
public String getBody(HttpServletRequest httpServletRequest, ServletAdapter adapter) {
26+
if (httpServletRequest == null || adapter == null) {
27+
return null;
28+
}
29+
return Base64.getEncoder().encodeToString(adapter.getRequestBytes(httpServletRequest));
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.arex.inst.httpservlet.convert.impl;
2+
3+
import io.arex.inst.httpservlet.adapter.ServletAdapter;
4+
import io.arex.inst.httpservlet.convert.BodyConverters;
5+
6+
import javax.servlet.http.HttpServletRequest;
7+
import javax.servlet.http.HttpServletResponse;
8+
9+
public class ApplicationXmlBodyConvert implements BodyConverters<HttpServletRequest, HttpServletResponse> {
10+
11+
private static final String CONTENT_TYPE = "application/xml";
12+
13+
@Override
14+
public boolean match(HttpServletRequest httpServletRequest, ServletAdapter adapter) {
15+
return false;
16+
}
17+
18+
@Override
19+
public String getBody(HttpServletRequest httpServletRequest, ServletAdapter adapter) {
20+
return null;
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
io.arex.inst.httpservlet.convert.impl.ApplicationJsonBodyConvert
2+
io.arex.inst.httpservlet.convert.impl.ApplicationXmlBodyConvert

0 commit comments

Comments
 (0)