public List<MethodCall<Object>> createMethodCallListToBeParsedFromBody( final String addressPrefix, final Object body, final Request<Object> originatingRequest) { List<MethodCall<Object>> methodCalls; if (body != null) { methodCalls = parserRef.get().parseMethodCalls(addressPrefix, body.toString()); } else { methodCalls = Collections.emptyList(); } if (methodCalls == null || methodCalls.size() == 0) { if (originatingRequest instanceof WebSocketMessage) { WebSocketMessage webSocketMessage = ((WebSocketMessage) originatingRequest); final Response<Object> response = ResponseImpl.response(-1, Timer.timer().now(), "SYSTEM", "ERROR", "CAN'T HANDLE CALL", originatingRequest, true); final WebSocketSender sender = webSocketMessage.getSender(); sender.sendText(encoderRef.get().encodeResponses("SYSTEM", Lists.list(response))); } return Collections.emptyList(); } //noinspection Convert2streamapi for (MethodCall<Object> methodCall : methodCalls) { if (methodCall instanceof MethodCallImpl) { MethodCallImpl method = ((MethodCallImpl) methodCall); method.originatingRequest(originatingRequest); } } return methodCalls; }
@Override public void sendText(final String body) { httpSendWebSocketCalled.set(true); periodicFlushCallback.accept(null); final List<MethodCall<Object>> methodCalls = QBit.factory().createProtocolParser().parseMethodCalls("", body); serviceBundle.call(methodCalls); serviceBundle.flush(); Sys.sleep(100); if (response != null) { if (response.wasErrors()) { puts("FAILED RESPONSE", response); } else { String simulatedMessageFromServer = QBit.factory().createEncoder().encodeResponses("", Lists.list(response)); webSocket.onTextMessage(simulatedMessageFromServer); } } else { puts(response); } } };
@Test public void testEncodeDecodeMap() { MultiMap<String, String> multiMap = new MultiMapImpl<>(ArrayList.class); multiMap.add("fruit", "apple"); multiMap.add("fruit", "pair"); multiMap.add("fruit", "watermelon"); multiMap.put("veggies", "yuck"); MethodCall<Object> method = new MethodCallBuilder().setName("foo").setBody("bar").setAddress("somebody").setParams(multiMap).build(); BoonProtocolEncoder encoder = new BoonProtocolEncoder(); final String s = encoder.encodeMethodCalls("", Lists.list(method)); puts(s); ProtocolParser parser = new BoonProtocolParser(); final MethodCall<Object> parse = parser.parseMethodCalls("", s).get(0); final List<String> fruit = (List<String>) parse.params().getAll("fruit"); Assert.assertEquals(Lists.list("apple", "pair", "watermelon"), fruit); Assert.assertEquals("yuck", parse.params().get("veggies")); }
public List<MethodCall<Object>> createMethodCallListToBeParsedFromBody( final String addressPrefix, final Object body, final Request<Object> originatingRequest) { List<MethodCall<Object>> methodCalls; if (body != null) { methodCalls = parserRef.get().parseMethodCalls(addressPrefix, body.toString()); } else { methodCalls = Collections.emptyList(); } if (methodCalls == null || methodCalls.size() == 0) { if (originatingRequest instanceof WebSocketMessage) { WebSocketMessage webSocketMessage = ((WebSocketMessage) originatingRequest); final Response<Object> response = ResponseImpl.response(-1, Timer.timer().now(), "SYSTEM", "ERROR", "CAN'T HANDLE CALL", originatingRequest, true); final WebSocketSender sender = webSocketMessage.getSender(); sender.sendText(encoderRef.get().encodeResponses("SYSTEM", Lists.list(response))); } return Collections.emptyList(); } //noinspection Convert2streamapi for (MethodCall<Object> methodCall : methodCalls) { if (methodCall instanceof MethodCallImpl) { MethodCallImpl method = ((MethodCallImpl) methodCall); method.originatingRequest(originatingRequest); } } return methodCalls; }