diff --git a/src/org/redkale/net/http/Rest.java b/src/org/redkale/net/http/Rest.java index 5f2bef9b6..a46fe55fb 100644 --- a/src/org/redkale/net/http/Rest.java +++ b/src/org/redkale/net/http/Rest.java @@ -424,6 +424,21 @@ public final class Rest { mv.visitMaxs(1, 1); mv.visitEnd(); } + { //getNames + mv = new AsmMethodVisitor(cw2.visitMethod(ACC_PUBLIC, "getNames", "()[Ljava/lang/String;", null, null)); + pushInt(mv, paramap.size()); + mv.visitTypeInsn(ANEWARRAY, "java/lang/String"); + int index = -1; + for (Map.Entry en : paramap.entrySet()) { + mv.visitInsn(DUP); + mv.visitInsn(++index); + mv.visitLdcInsn(en.getKey()); + mv.visitInsn(AASTORE); + } + mv.visitInsn(ARETURN); + mv.visitMaxs(paramap.size() + 2, 1); + mv.visitEnd(); + } { //getValue mv = new AsmMethodVisitor(cw2.visitMethod(ACC_PUBLIC, "getValue", "(Ljava/lang/String;)Ljava/lang/Object;", "(Ljava/lang/String;)TT;", null)); for (Map.Entry en : paramap.entrySet()) { diff --git a/src/org/redkale/net/http/WebSocketParam.java b/src/org/redkale/net/http/WebSocketParam.java index 6cd807289..927bc6d53 100644 --- a/src/org/redkale/net/http/WebSocketParam.java +++ b/src/org/redkale/net/http/WebSocketParam.java @@ -16,4 +16,6 @@ package org.redkale.net.http; public interface WebSocketParam { public T getValue(String name); + + public String[] getNames(); } diff --git a/src/org/redkale/net/http/WebSocketServlet.java b/src/org/redkale/net/http/WebSocketServlet.java index 78924c12e..1775a8ea1 100644 --- a/src/org/redkale/net/http/WebSocketServlet.java +++ b/src/org/redkale/net/http/WebSocketServlet.java @@ -219,7 +219,7 @@ public abstract class WebSocketServlet extends HttpServlet implements Resourcabl temprunner = null; webSocket._userid = userid; if (single && !anyuser) { - WebSocketServlet.this.node.existsWebSocket(userid).whenComplete((rs, ex) -> { + WebSocketServlet.this.node.existsWebSocket(userid).whenComplete((rs, nex) -> { if (rs) webSocket.onSingleRepeatConnect(); WebSocketServlet.this.node.localEngine.add(webSocket); WebSocketRunner runner = new WebSocketRunner(context, webSocket, restMessageConsumer, response.removeChannel()); diff --git a/test/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java b/test/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java index d86568975..3bfe24c36 100644 --- a/test/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java +++ b/test/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java @@ -70,6 +70,11 @@ public final class _DyncChatWebSocketServlet extends WebSocketServlet { @ConvertDisabled public _DyncChatWebSocket _redkale_websocket; + @Override + public String[] getNames() { + return new String[]{"message", "extmap"}; + } + @Override public T getValue(String name) { if ("message".equals(name)) return (T) message; @@ -100,6 +105,11 @@ public final class _DyncChatWebSocketServlet extends WebSocketServlet { @ConvertDisabled public _DyncChatWebSocket _redkale_websocket; + @Override + public String[] getNames() { + return new String[]{"roomid"}; + } + @Override public T getValue(String name) { if ("roomid".equals(name)) return (T) (Integer) roomid;