Skip to content

Commit 594ebb4

Browse files
committed
fix 修改COLLECT_BATCH接口的参数,Http Param支持解析List结构
1 parent 3008904 commit 594ebb4

File tree

5 files changed

+54
-40
lines changed

5 files changed

+54
-40
lines changed

common/src/main/java/org/beifengtz/jvmm/common/util/ReflexUtil.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,17 @@ public static Set<Method> scanMethodAnnotation(Set<Class<?>> classes, Class<? ex
178178
return result;
179179
}
180180

181-
@SuppressWarnings("unchecked")
181+
@SuppressWarnings({"unchecked", "rawtypes"})
182182
public static Object parseValueFromStr(Class<?> type, String source) {
183183
if (source == null) {
184184
return null;
185185
}
186186
if (type.isAssignableFrom(String.class)) {
187187
return source;
188+
} else if (type.isAssignableFrom(byte.class)) {
189+
return Byte.parseByte(source);
190+
} else if (type.isAssignableFrom(Byte.class)) {
191+
return Byte.valueOf(source);
188192
} else if (type.isAssignableFrom(short.class)) {
189193
return Short.parseShort(source);
190194
} else if (type.isAssignableFrom(Short.class)) {
@@ -209,7 +213,7 @@ public static Object parseValueFromStr(Class<?> type, String source) {
209213
return Long.parseLong(source);
210214
} else if (type.isAssignableFrom(Long.class)) {
211215
return Long.valueOf(source);
212-
} else if (type.isAssignableFrom(Enum.class)) {
216+
} else if (type.isEnum()) {
213217
return Enum.valueOf((Class<? extends Enum>) type, source);
214218
}
215219
return null;

convey/src/main/java/org/beifengtz/jvmm/convey/handler/HttpChannelHandler.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import java.lang.reflect.InvocationTargetException;
4242
import java.lang.reflect.Method;
4343
import java.lang.reflect.Modifier;
44+
import java.lang.reflect.ParameterizedType;
45+
import java.lang.reflect.Type;
4446
import java.net.URI;
4547
import java.net.URISyntaxException;
4648
import java.net.URLDecoder;
@@ -165,7 +167,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception {
165167
}
166168

167169
@Override
168-
@SuppressWarnings("unchecked")
170+
@SuppressWarnings({"unchecked","rawtypes"})
169171
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) throws Exception {
170172
PairKey<URI, String> pair = filterUri(ctx, msg);
171173
if (pair == null) {
@@ -220,6 +222,14 @@ protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) thro
220222
Array.set(array, j, ReflexUtil.parseValueFromStr(componentType, valueArr.get(j)));
221223
}
222224
parameter[i] = array;
225+
} else if (parameterType.isAssignableFrom(List.class)) {
226+
List<String> valueArr = (List<String>) params.get(key + "[]");
227+
Type componentType = ((ParameterizedType) method.getGenericParameterTypes()[0]).getActualTypeArguments()[0];
228+
List list = new ArrayList(valueArr.size());
229+
for (String s : valueArr) {
230+
list.add(ReflexUtil.parseValueFromStr((Class<?>) componentType, s));
231+
}
232+
parameter[i] = list;
223233
} else {
224234
parameter[i] = ReflexUtil.parseValueFromStr(parameterType, (String) value);
225235
if (parameter[i] == null) {
@@ -287,7 +297,7 @@ private Map<String, Object> loadParam(URI uri) throws UnsupportedEncodingExcepti
287297
if (kv.length <= 1) {
288298
continue;
289299
}
290-
String key = kv[0];
300+
String key = URLDecoder.decode(kv[0], "UTF-8");
291301
String value = URLDecoder.decode(kv[1], "UTF-8");
292302
if (key.endsWith("[]")) {
293303
List<String> array = (List<String>) params.computeIfAbsent(key, o -> new ArrayList<>());

convey/src/main/java/org/beifengtz/jvmm/convey/handler/JvmmChannelHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
198198

199199
public abstract Logger logger();
200200

201-
@SuppressWarnings("unchecked")
201+
@SuppressWarnings({"unchecked", "rawtypes"})
202202
public void handleRequest(ChannelHandlerContext ctx, JvmmRequest reqMsg) {
203203
try {
204204
if (!handleBefore(ctx, reqMsg)) {
@@ -273,7 +273,7 @@ public void handleRequest(ChannelHandlerContext ctx, JvmmRequest reqMsg) {
273273
}
274274
ctx.channel().writeAndFlush(response.serialize());
275275
});
276-
} else if (parameterType.isAssignableFrom(Enum.class)) {
276+
} else if (parameterType.isEnum()) {
277277
parameter[i] = Enum.valueOf((Class<? extends Enum>) parameterType, reqMsg.getData().toString());
278278
} else {
279279
parameter[i] = new Gson().fromJson(reqMsg.getData(), method.getGenericParameterTypes()[i]);

0 commit comments

Comments
 (0)