protected boolean handleCancellation(NotificationMessage notificationMessage) { if (MessageJsonHandler.CANCEL_METHOD.getMethodName().equals(notificationMessage.getMethod())) { Object cancelParams = notificationMessage.getParams(); if (cancelParams != null) { if (cancelParams instanceof CancelParams) { synchronized (receivedRequestMap) { String id = ((CancelParams) cancelParams).getId(); CompletableFuture<?> future = receivedRequestMap.get(id); if (future != null) future.cancel(true); else LOG.warning("Unmatched cancel notification for request id " + id); } return true; } else { LOG.warning("Cancellation support disabled, since the '" + MessageJsonHandler.CANCEL_METHOD.getMethodName() + "' method has been registered explicitly."); return false; } } else { LOG.warning("Missing 'params' attribute of cancel notification."); } } return false; }
@Test public void testNotification_AllOrders() { Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>(); supportedMethods.put("foo", JsonRpcMethod.request("foo", new TypeToken<Void>() {}.getType(), new TypeToken<Location>() { }.getType())); DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods); handler.setMethodProvider((id) -> "foo"); String[] properties = new String[] { "\"seq\":2", "\"type\":\"event\"", "\"event\":\"foo\"", "\"body\": {\"uri\": \"dummy://mymodel.mydsl\"}" }; testAllPermutations(properties, json -> { NotificationMessage message = (NotificationMessage) handler.parseMessage(json); Object params = message.getParams(); Class<? extends Object> class1 = params.getClass(); Assert.assertEquals(Location.class, class1); Assert.assertEquals("dummy://mymodel.mydsl", ((Location)params).uri); }); }
@Test public void testNotification_AllOrders() { Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>(); supportedMethods.put("foo", JsonRpcMethod.request("foo", new TypeToken<Void>() {}.getType(), new TypeToken<Location>() { }.getType())); MessageJsonHandler handler = new MessageJsonHandler(supportedMethods); handler.setMethodProvider((id) -> "foo"); String[] properties = new String[] { "\"jsonrpc\":\"2.0\"", "\"method\":\"foo\"", "\"params\": {\"uri\": \"dummy://mymodel.mydsl\"}" }; testAllPermutations(properties, json -> { NotificationMessage message = (NotificationMessage) handler.parseMessage(json); Object params = message.getParams(); Class<? extends Object> class1 = params.getClass(); Assert.assertEquals(Location.class, class1); Assert.assertEquals("dummy://mymodel.mydsl", ((Location)params).uri); }); }
@Test public void testNotification() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp); endpoint.consume(new NotificationMessage() {{ setMethod("foo"); setParams("myparam"); }}); NotificationMessage notificationMessage = endp.notifications.get(0); assertEquals("foo", notificationMessage.getMethod()); assertEquals("myparam", notificationMessage.getParams()); assertTrue(consumer.messages.isEmpty()); }
@Override public void notify(String method, Object parameter) { NotificationMessage notificationMessage = new NotificationMessage(); notificationMessage.setJsonrpc(MessageConstants.JSONRPC_VERSION); notificationMessage.setMethod(method); notificationMessage.setParams(parameter); out.consume(notificationMessage); }
@Override public void consume(Message message) { if (message instanceof NotificationMessage) { NotificationMessage notificationMessage = (NotificationMessage) message; handleNotification(notificationMessage); } else if (message instanceof RequestMessage) { RequestMessage requestMessage = (RequestMessage) message; handleRequest(requestMessage); } else if (message instanceof ResponseMessage) { ResponseMessage responseMessage = (ResponseMessage) message; handleResponse(responseMessage); } }
protected void handleNotification(NotificationMessage notificationMessage) { if (!handleCancellation(notificationMessage)) { try { localEndpoint.notify(notificationMessage.getMethod(), notificationMessage.getParams()); } catch (RuntimeException e) { LOG.log(Level.WARNING, "Notification threw an exception: " + notificationMessage, e); } } }
@Test public void testTelemetry() { NotificationMessage _notificationMessage = new NotificationMessage(); final Procedure1<NotificationMessage> _function = (NotificationMessage it) -> { it.setJsonrpc("2.0"); it.setMethod(MessageMethods.TELEMETRY_EVENT); JsonSerializeTest.TestObject _testObject = new JsonSerializeTest.TestObject(); it.setParams(_testObject); }; final NotificationMessage message = ObjectExtensions.<NotificationMessage>operator_doubleArrow(_notificationMessage, _function); StringConcatenation _builder = new StringConcatenation(); _builder.append("{"); _builder.newLine(); _builder.append(" "); _builder.append("\"jsonrpc\": \"2.0\","); _builder.newLine(); _builder.append(" "); _builder.append("\"method\": \"telemetry/event\","); _builder.newLine(); _builder.append(" "); _builder.append("\"params\": {"); _builder.newLine(); _builder.append(" "); _builder.append("\"foo\": 12.3,"); _builder.newLine(); _builder.append(" "); _builder.append("\"bar\": \"qwertz\""); _builder.newLine(); _builder.append(" "); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); this.assertSerialize(message, _builder); }
@Test public void testTelemetry() { StringConcatenation _builder = new StringConcatenation(); _builder.append("{"); _builder.newLine(); _builder.append("\t"); _builder.append("\"jsonrpc\": \"2.0\","); _builder.newLine(); _builder.append("\t"); _builder.append("\"method\": \"telemetry/event\","); _builder.newLine(); _builder.append("\t"); _builder.append("\"params\": {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("\"foo\": 12.3,"); _builder.newLine(); _builder.append("\t\t"); _builder.append("\"bar\": \"qwertz\""); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("}"); _builder.newLine(); NotificationMessage _notificationMessage = new NotificationMessage(); final Procedure1<NotificationMessage> _function = (NotificationMessage it) -> { it.setJsonrpc("2.0"); it.setMethod(MessageMethods.TELEMETRY_EVENT); Pair<String, Double> _mappedTo = Pair.<String, Double>of("foo", Double.valueOf(12.3)); Pair<String, String> _mappedTo_1 = Pair.<String, String>of("bar", "qwertz"); it.setParams(CollectionLiterals.<String, Object>newLinkedHashMap(_mappedTo, _mappedTo_1)); }; NotificationMessage _doubleArrow = ObjectExtensions.<NotificationMessage>operator_doubleArrow(_notificationMessage, _function); this.assertParse(_builder, _doubleArrow); }
@Test public void testNotification() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new DebugRemoteEndpoint(consumer, endp); endpoint.consume(new NotificationMessage() {{ setMethod("foo"); setParams("myparam"); }}); NotificationMessage notificationMessage = endp.notifications.get(0); assertEquals("foo", notificationMessage.getMethod()); assertEquals("myparam", notificationMessage.getParams()); assertTrue(consumer.messages.isEmpty()); }
protected NotificationMessage createNotificationMessage(String method, Object parameter) { NotificationMessage notificationMessage = new NotificationMessage(); notificationMessage.setJsonrpc(MessageConstants.JSONRPC_VERSION); notificationMessage.setMethod(method); notificationMessage.setParams(parameter); return notificationMessage; }
public void notify(String method, Object parameter) { notifications.add(new NotificationMessage() {{ setMethod(method); setParams(parameter); }}); }
@Override public void notify(String method, Object parameter) { NotificationMessage notificationMessage = createNotificationMessage(method, parameter); out.consume(notificationMessage); }