Java 类org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage 实例源码

项目:dsp4e    文件:DebugRemoteEndpointTest.java   
@Test public void testRequest() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().complete("success");
    assertEquals("foo", entry.getKey().getMethod());
    assertEquals("myparam", entry.getKey().getParams());
    assertEquals("success", ((ResponseMessage)consumer.messages.get(0)).getResult());
}
项目:dsp4e    文件:DebugRemoteEndpointTest.java   
@Test public void testCancellation() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().cancel(true);
    ResponseMessage message = (ResponseMessage) consumer.messages.get(0);
    assertNotNull(message);
    ResponseError error = message.getError();
    assertNotNull(error);
    assertEquals(error.getCode(), ResponseErrorCode.RequestCancelled.getValue());
    assertEquals(error.getMessage(), "The request (id: 1, method: 'foo') has been cancelled");

}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<List<? extends Entry>>() {}.getType(),
            new TypeToken<List<? extends Entry>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    List<? extends Entry> result = (List<? extends Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Set<Entry>>() {}.getType(),
            new TypeToken<Set<Entry>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    Set<Entry> result = (Set<Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<MyEnum, Map<String,String>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": 2\n"
            + "}");
    Either<MyEnum, List<Map<String, String>>> result = (Either<MyEnum, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals(MyEnum.B, result.getLeft());
}
项目:lsp4j    文件:DebugRemoteEndpointTest.java   
@Test public void testRequest() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new DebugRemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().complete("success");
    assertEquals("foo", entry.getKey().getMethod());
    assertEquals("myparam", entry.getKey().getParams());
    assertEquals("success", ((ResponseMessage)consumer.messages.get(0)).getResult());
}
项目:lsp4j    文件:DebugRemoteEndpointTest.java   
@Test public void testCancellation() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new DebugRemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().cancel(true);
    ResponseMessage message = (ResponseMessage) consumer.messages.get(0);
    assertNotNull(message);
    ResponseError error = message.getError();
    assertNotNull(error);
    assertEquals(error.getCode(), ResponseErrorCode.RequestCancelled.getValue());
    assertEquals(error.getMessage(), "The request (id: 1, method: 'foo') has been cancelled");

}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<List<? extends Entry>>() {}.getType(),
            new TypeToken<List<? extends Entry>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    List<? extends Entry> result = (List<? extends Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Set<Entry>>() {}.getType(),
            new TypeToken<Set<Entry>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    Set<Entry> result = (Set<Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<Integer, Map<String,String>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": 2\n"
            + "}");
    Either<Integer, List<Map<String, String>>> result = (Either<Integer, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals(Integer.valueOf(2), result.getLeft());
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@Test
public void testNormalResponse_AllOrders() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Location>() {}.getType(),
            new TypeToken<Void>() {
            }.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    String[] properties = new String[] {
            "\"seq\":2",
            "\"type\":\"response\"",
            "\"request_seq\":5",
            "\"success\":true",
            "\"body\": {\"uri\": \"dummy://mymodel.mydsl\"}"
            };
    testAllPermutations(properties, json -> {
        ResponseMessage message = (ResponseMessage) handler.parseMessage(json);
        Object result = message.getResult();
        Class<? extends Object> class1 = result.getClass();
        Assert.assertEquals(Location.class, class1);
        Assert.assertEquals("dummy://mymodel.mydsl", ((Location)result).uri);
        Assert.assertNull(message.getError());
    });
}
项目:lsp4j    文件:RemoteEndpoint.java   
@Override
public CompletableFuture<Object> request(String method, Object parameter) {
    RequestMessage requestMessage = createRequestMessage(method, parameter);
    final String id = requestMessage.getId();
    final CompletableFuture<Object> result = new CompletableFuture<Object>() {
        @Override
        public boolean cancel(boolean mayInterruptIfRunning) {
            sendCancelNotification(id);
            return super.cancel(mayInterruptIfRunning);
        }
    };
    Consumer<ResponseMessage> responseHandler = (responseMessage) -> {
        if (responseMessage.getError() != null) {
            result.completeExceptionally(new ResponseErrorException(responseMessage.getError()));
        } else {
            result.complete(responseMessage.getResult());
        }
    };
    synchronized(sentRequestMap) {
        sentRequestMap.put(id, new PendingRequestInfo(requestMessage, responseHandler));
    }
    out.consume(requestMessage);
    return result;
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<List<? extends Entry>>() {}.getType(),
            new TypeToken<List<? extends Entry>>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n" 
            + " \"result\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    List<? extends Entry> result = (List<? extends Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testParseList_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Set<Entry>>() {}.getType(),
            new TypeToken<Set<Entry>>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id)->"foo");
    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n" 
            + " \"result\": [\n"
            + "  {\"name\":\"$schema\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":1,\"character\":3},\"end\":{\"line\":1,\"character\":55}}}},\n"
            + "  {\"name\":\"type\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":2,\"character\":3},\"end\":{\"line\":2,\"character\":19}}}},\n"
            + "  {\"name\":\"title\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":3,\"character\":3},\"end\":{\"line\":3,\"character\":50}}}},\n"
            + "  {\"name\":\"additionalProperties\",\"kind\":17,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":4,\"character\":4},\"end\":{\"line\":4,\"character\":32}}}},\n"
            + "  {\"name\":\"properties\",\"kind\":15,\"location\":{\"uri\":\"file:/home/mistria/runtime-EclipseApplication-with-patch/EclipseConEurope/something.json\",\"range\":{\"start\":{\"line\":5,\"character\":3},\"end\":{\"line\":5,\"character\":20}}}}\n"
            + "]}");
    Set<Entry> result = (Set<Entry>) ((ResponseMessage)message).getResult();
    Assert.assertEquals(5, result.size());
    for (Entry e : result) {
        Assert.assertTrue(e.location.uri, e.location.uri.startsWith("file:/home/mistria"));
    }
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_02() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<MyEnum, Map<String,String>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + "\"result\": 2\n"
            + "}");
    Either<MyEnum, List<Map<String, String>>> result = (Either<MyEnum, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals(MyEnum.B, result.getLeft());
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@Test
public void testNormalResponse_AllOrders() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Location>() {}.getType(),
            new TypeToken<Void>() {
            }.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    String[] properties = new String[] {
            "\"jsonrpc\":\"2.0\"",
            "\"id\":2",
            "\"result\": {\"uri\": \"dummy://mymodel.mydsl\"}"
            };
    testAllPermutations(properties, json -> {
        ResponseMessage message = (ResponseMessage) handler.parseMessage(json);
        Object result = message.getResult();
        Class<? extends Object> class1 = result.getClass();
        Assert.assertEquals(Location.class, class1);
        Assert.assertEquals("dummy://mymodel.mydsl", ((Location)result).uri);
        Assert.assertNull(message.getError());
    });
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@Test
public void testErrorResponse_AllOrders() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Location>() {}.getType(),
            new TypeToken<Void>() {
            }.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    String[] properties = new String[] {
            "\"jsonrpc\":\"2.0\"",
            "\"id\":2",
            "\"message\": \"failed\"",
            "\"error\": {\"code\": 123456, \"message\": \"failed\", \"data\": {\"uri\": \"failed\"}}"
            };
    testAllPermutations(properties, json -> {
        ResponseMessage message = (ResponseMessage) handler.parseMessage(json);
        Assert.assertEquals("failed", message.getError().getMessage());
        Object data = message.getError().getData();
        Map<String, String> expected = new HashMap<>();
        expected.put("uri", "failed");
        Assert.assertEquals(expected, data);
        Assert.assertNull(message.getResult());
    });
}
项目:lsp4j    文件:RemoteEndpointTest.java   
@Test public void testRequest() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().complete("success");
    assertEquals("foo", entry.getKey().getMethod());
    assertEquals("myparam", entry.getKey().getParams());
    assertEquals("success", ((ResponseMessage)consumer.messages.get(0)).getResult());
}
项目:lsp4j    文件:RemoteEndpointTest.java   
@Test public void testCancellation() {
    TestEndpoint endp = new TestEndpoint();
    TestMessageConsumer consumer = new TestMessageConsumer();
    RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp);

    endpoint.consume(new RequestMessage() {{
        setId("1");
        setMethod("foo");
        setParams("myparam");
    }});

    Entry<RequestMessage, CompletableFuture<Object>> entry = endp.requests.entrySet().iterator().next();
    entry.getValue().cancel(true);
    ResponseMessage message = (ResponseMessage) consumer.messages.get(0);
    assertNotNull(message);
    ResponseError error = message.getError();
    assertNotNull(error);
    assertEquals(error.getCode(), ResponseErrorCode.RequestCancelled.getValue());
    assertEquals(error.getMessage(), "The request (id: 1, method: 'foo') has been cancelled");
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_01() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<String, List<Map<String,String>>>>() {}.getType(),
            new TypeToken<Either<String, Integer>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"foo\"},\n"
            + "  {\"name\":\"bar\"}\n"
            + "]}");
    Either<String, List<Map<String, String>>> result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    for (Map<String, String> e : result.getRight()) {
        Assert.assertNotNull(e.get("name"));
    }
    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": \"name\"\n"
            + "}");
    result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertFalse(result.isRight());
    Assert.assertEquals("name",result.getLeft());
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_04() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<MyClass, List<? extends MyClass>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": {\n"
            + "  value:\"foo\"\n"
            + "}}");
    Either<MyClass, List<? extends MyClass>> result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().getValue());

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": [{\n"
            + "  value:\"bar\"\n"
            + "}]}");
    result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().get(0).getValue());
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_05() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<List<MyClass>, MyClassList>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": [{\n"
            + "  value:\"foo\"\n"
            + "}]}");
    Either<List<MyClass>, MyClassList> result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().get(0).getValue());

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": {\n"
            + "  items: [{\n"
            + "    value:\"bar\"\n"
            + "}]}}");
    result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().getItems().get(0).getValue());
}
项目:SOMns-vscode    文件:RemoteEndpoint.java   
@Override
public CompletableFuture<Object> request(String method, Object parameter) {
    RequestMessage requestMessage = new RequestMessage();
    final String id = String.valueOf(nextRequestId.incrementAndGet());
    requestMessage.setId(id);
    requestMessage.setMethod(method);
    requestMessage.setParams(parameter);
    final CompletableFuture<Object> result = new CompletableFuture<Object>() {
        @Override
        public boolean cancel(boolean mayInterruptIfRunning) {
            sendCancelNotification(id);
            return super.cancel(mayInterruptIfRunning);
        }
    };
    Consumer<ResponseMessage> responseHandler = (responseMessage) -> {
        if (responseMessage.getError() != null) {
            result.completeExceptionally(new ResponseErrorException(responseMessage.getError()));
        } else {
            result.complete(responseMessage.getResult());
        }
    };
    synchronized(sentRequestMap) {
        sentRequestMap.put(id, new PendingRequestInfo(requestMessage, responseHandler));
    }
    out.consume(requestMessage);
    return result;
}
项目:SOMns-vscode    文件:RemoteEndpoint.java   
@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);
    }
}
项目:SOMns-vscode    文件:RemoteEndpoint.java   
protected void handleResponse(ResponseMessage responseMessage) {
    PendingRequestInfo pendingRequestInfo;
    synchronized (sentRequestMap) {
        pendingRequestInfo = sentRequestMap.remove(responseMessage.getId());
    }
    if (pendingRequestInfo == null) {
        LOG.log(Level.WARNING, "Unmatched response message: " + responseMessage);
    } else {
        try {
            pendingRequestInfo.responseHandler.accept(responseMessage);
        } catch (RuntimeException e) {
            LOG.log(Level.WARNING, "Handling repsonse threw an exception: " + responseMessage, e);
        }
    }
}
项目:lsp4j    文件:ValidationTest.java   
@Test
public void testInvalidCodeLens() {
    ResponseMessage message = new ResponseMessage();
    message.setId("1");
    CodeLens codeLens = new CodeLens(new Range(new Position(3, 32), new Position(3, 35)), null, null);
    // forbidden self reference!
    codeLens.setData(codeLens);
    message.setResult(codeLens);
    assertIssues(message, "An element of the message has a direct or indirect reference to itself.");
}
项目:lsp4j    文件:JsonSerializeTest.java   
@Test
public void testResponseError() {
  ResponseMessage _responseMessage = new ResponseMessage();
  final Procedure1<ResponseMessage> _function = (ResponseMessage it) -> {
    it.setJsonrpc("2.0");
    it.setId("12");
    ResponseError _responseError = new ResponseError();
    final Procedure1<ResponseError> _function_1 = (ResponseError it_1) -> {
      it_1.setCode(ResponseErrorCode.InvalidRequest);
      it_1.setMessage("Could not parse request.");
    };
    ResponseError _doubleArrow = ObjectExtensions.<ResponseError>operator_doubleArrow(_responseError, _function_1);
    it.setError(_doubleArrow);
  };
  final ResponseMessage message = ObjectExtensions.<ResponseMessage>operator_doubleArrow(_responseMessage, _function);
  StringConcatenation _builder = new StringConcatenation();
  _builder.append("{");
  _builder.newLine();
  _builder.append("  ");
  _builder.append("\"jsonrpc\": \"2.0\",");
  _builder.newLine();
  _builder.append("  ");
  _builder.append("\"id\": \"12\",");
  _builder.newLine();
  _builder.append("  ");
  _builder.append("\"error\": {");
  _builder.newLine();
  _builder.append("    ");
  _builder.append("\"code\": -32600,");
  _builder.newLine();
  _builder.append("    ");
  _builder.append("\"message\": \"Could not parse request.\"");
  _builder.newLine();
  _builder.append("  ");
  _builder.append("}");
  _builder.newLine();
  _builder.append("}");
  _builder.newLine();
  this.assertSerialize(message, _builder);
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_01() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<String, List<Map<String,String>>>>() {}.getType(),
            new TypeToken<Either<String, Integer>>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  {\"name\":\"foo\"},\n"
            + "  {\"name\":\"bar\"}\n"
            + "]}");
    Either<String, List<Map<String, String>>> result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    for (Map<String, String> e : result.getRight()) {
        Assert.assertNotNull(e.get("name"));
    }
    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": \"name\"\n"
            + "}");
    result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertFalse(result.isRight());
    Assert.assertEquals("name",result.getLeft());
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_04() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<MyClass, List<? extends MyClass>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": {\n"
            + "  value:\"foo\"\n"
            + "}}");
    Either<MyClass, List<? extends MyClass>> result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().getValue());

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": [{\n"
            + "  value:\"bar\"\n"
            + "}]}");
    result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().get(0).getValue());
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_05() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<List<MyClass>, MyClassList>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": [{\n"
            + "  value:\"foo\"\n"
            + "}]}");
    Either<List<MyClass>, MyClassList> result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().get(0).getValue());

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": {\n"
            + "  items: [{\n"
            + "    value:\"bar\"\n"
            + "}]}}");
    result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().getItems().get(0).getValue());
}
项目:lsp4j    文件:DebugMessageJsonHandlerTest.java   
@Test
public void testErrorResponse_AllOrders() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Location>() {}.getType(),
            new TypeToken<Void>() {
            }.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    String[] properties = new String[] {
            "\"seq\":2",
            "\"type\":\"response\"",
            "\"request_seq\":5",
            "\"success\":false",
            "\"message\": \"failed\"",
            "\"body\": {\"uri\": \"failed\"}"
            };
    testAllPermutations(properties, json -> {
        ResponseMessage message = (ResponseMessage) handler.parseMessage(json);
        Assert.assertEquals("failed", message.getError().getMessage());
        Object data = message.getError().getData();
        Map<String, String> expected = new HashMap<>();
        expected.put("uri", "failed");
        Assert.assertEquals(expected, data);
        Assert.assertNull(message.getResult());
    });
}
项目:lsp4j    文件:RemoteEndpoint.java   
@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);
    }
}
项目:lsp4j    文件:RemoteEndpoint.java   
protected void handleResponse(ResponseMessage responseMessage) {
    PendingRequestInfo pendingRequestInfo;
    synchronized (sentRequestMap) {
        pendingRequestInfo = sentRequestMap.remove(responseMessage.getId());
    }
    if (pendingRequestInfo == null) {
        LOG.log(Level.WARNING, "Unmatched response message: " + responseMessage);
    } else {
        try {
            pendingRequestInfo.responseHandler.accept(responseMessage);
        } catch (RuntimeException e) {
            LOG.log(Level.WARNING, "Handling response threw an exception: " + responseMessage, e);
        }
    }
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_01() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<String, List<Map<String,String>>>>() {}.getType(),
            new TypeToken<Either<String, Integer>>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");
    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + " \"result\": [\n"
            + "  {\"name\":\"foo\"},\n"
            + "  {\"name\":\"bar\"}\n"
            + "]}");
    Either<String, List<Map<String, String>>> result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    for (Map<String, String> e : result.getRight()) {
        Assert.assertNotNull(e.get("name"));
    }
    message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n" 
            + "\"result\": \"name\"\n"
            + "}");
    result = (Either<String, List<Map<String,String>>>) ((ResponseMessage)message).getResult();
    Assert.assertFalse(result.isRight());
    Assert.assertEquals("name",result.getLeft());
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_04() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<MyClass, List<? extends MyClass>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + "\"result\": {\n"
            + "  value:\"foo\"\n"
            + "}}");
    Either<MyClass, List<? extends MyClass>> result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().getValue());

    message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + "\"result\": [{\n"
            + "  value:\"bar\"\n"
            + "}]}");
    result = (Either<MyClass, List<? extends MyClass>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().get(0).getValue());
}
项目:lsp4j    文件:MessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_05() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<List<MyClass>, MyClassList>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    MessageJsonHandler handler = new MessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + "\"result\": [{\n"
            + "  value:\"foo\"\n"
            + "}]}");
    Either<List<MyClass>, MyClassList> result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertEquals("foo", result.getLeft().get(0).getValue());

    message = handler.parseMessage("{\"jsonrpc\":\"2.0\","
            + "\"id\":\"2\",\n"
            + "\"result\": {\n"
            + "  items: [{\n"
            + "    value:\"bar\"\n"
            + "}]}}");
    result = (Either<List<MyClass>, MyClassList>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertEquals("bar", result.getRight().getItems().get(0).getValue());
}
项目:lsp4j    文件:RemoteEndpointTest.java   
@Test public void testException() {
    LogMessageAccumulator logMessages = new LogMessageAccumulator();
    try {
        // Don't show the exception in the test execution log
        logMessages.registerTo(RemoteEndpoint.class);

        TestEndpoint endp = new TestEndpoint() {
            @Override
            public CompletableFuture<Object> request(String method, Object parameter) {
                throw new RuntimeException("BAAZ");
            }
        };
        TestMessageConsumer consumer = new TestMessageConsumer();
        RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp);

        endpoint.consume(new RequestMessage() {{
            setId("1");
            setMethod("foo");
            setParams("myparam");
        }});

        ResponseMessage response = (ResponseMessage) consumer.messages.get(0);
        assertEquals("Internal error.", response.getError().getMessage());
        assertEquals(ResponseErrorCode.InternalError.getValue(), response.getError().getCode());
        String exception = (String) response.getError().getData();
        String expected = "java.lang.RuntimeException: BAAZ\n\tat org.eclipse.lsp4j.jsonrpc.test.RemoteEndpointTest";
        assertEquals(expected, exception.substring(0, expected.length()));
    } finally {
        logMessages.unregister();
    }
}
项目:lsp4j    文件:RemoteEndpointTest.java   
@Test public void testExceptionHandlerMisbehaving01() {
    LogMessageAccumulator logMessages = new LogMessageAccumulator();
    try {
        // Don't show the exception in the test execution log
        logMessages.registerTo(RemoteEndpoint.class);

        TestEndpoint endp = new TestEndpoint() {
            @Override
            public CompletableFuture<Object> request(String method, Object parameter) {
                throw new RuntimeException("BAAZ");
            }
        };
        TestMessageConsumer consumer = new TestMessageConsumer();
        // Misbehaving exception handler that returns null
        RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp, (e) -> null);

        endpoint.consume(new RequestMessage() {{
            setId("1");
            setMethod("foo");
            setParams("myparam");
        }});

        assertEquals("Check some response received", 1, consumer.messages.size());
        ResponseMessage response = (ResponseMessage) consumer.messages.get(0);
        assertEquals(ResponseErrorCode.InternalError.getValue(), response.getError().getCode());
    } finally {
        logMessages.unregister();
    }
}
项目:lsp4j    文件:RemoteEndpointTest.java   
@Test public void testExceptionHandlerMisbehaving02() {
    LogMessageAccumulator logMessages = new LogMessageAccumulator();
    try {
        // Don't show the exception in the test execution log
        logMessages.registerTo(RemoteEndpoint.class);

        TestEndpoint endp = new TestEndpoint() {
            @Override
            public CompletableFuture<Object> request(String method, Object parameter) {
                return CompletableFuture.supplyAsync(() -> "baz");
            }
        };
        TestMessageConsumer2 consumer = new TestMessageConsumer2();
        // Misbehaving exception handler that returns null
        RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp, (e) -> null);

        endpoint.consume(new RequestMessage() {{
            setId("1");
            setMethod("foo");
            setParams("myparam");
        }});

        assertEquals("Check some response received", 1, consumer.messages.size());
        ResponseMessage response = (ResponseMessage) consumer.messages.get(0);
        assertNotNull("Check response has error", response.getError());
        assertEquals(ResponseErrorCode.InternalError.getValue(), response.getError().getCode());
    } finally {
        logMessages.unregister();
    }
}
项目:dsp4e    文件:DebugMessageJsonHandlerTest.java   
@SuppressWarnings({ "unchecked" })
@Test
public void testEither_03() {
    Map<String, JsonRpcMethod> supportedMethods = new LinkedHashMap<>();
    supportedMethods.put("foo", JsonRpcMethod.request("foo",
            new TypeToken<Either<Either<MyEnum, Map<String,String>>, List<Either<MyEnum, Map<String,String>>>>>() {}.getType(),
            new TypeToken<Object>() {}.getType()));
    DebugMessageJsonHandler handler = new DebugMessageJsonHandler(supportedMethods);
    handler.setMethodProvider((id) -> "foo");

    Message message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + "\"body\": 2\n"
            + "}");
    Either<Either<MyEnum, Map<String,String>>, List<Either<MyEnum, Map<String,String>>>> result = (Either<Either<MyEnum, Map<String, String>>, List<Either<MyEnum, Map<String, String>>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertTrue(result.getLeft().isLeft());
    Assert.assertEquals(MyEnum.B, result.getLeft().getLeft());

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": {\n"
            + "  \"foo\":\"1\",\n"
            + "  \"bar\":\"2\"\n"
            + "}}");
    result = (Either<Either<MyEnum, Map<String, String>>, List<Either<MyEnum, Map<String, String>>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isLeft());
    Assert.assertTrue(result.getLeft().isRight());
    Assert.assertEquals("1", result.getLeft().getRight().get("foo"));
    Assert.assertEquals("2", result.getLeft().getRight().get("bar"));

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [{\n"
            + "  \"foo\":\"1\",\n"
            + "  \"bar\":\"2\"\n"
            + "}]}");
    result = (Either<Either<MyEnum, Map<String, String>>, List<Either<MyEnum, Map<String, String>>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertTrue(result.getRight().get(0).isRight());
    Assert.assertEquals("1", result.getRight().get(0).getRight().get("foo"));
    Assert.assertEquals("2", result.getRight().get(0).getRight().get("bar"));

    message = handler.parseMessage("{"
            + "\"seq\":2,\n"
            + "\"type\":\"response\",\n"
            + " \"body\": [\n"
            + "  2\n"
            + "]}");
    result = (Either<Either<MyEnum, Map<String, String>>, List<Either<MyEnum, Map<String, String>>>>) ((ResponseMessage)message).getResult();
    Assert.assertTrue(result.isRight());
    Assert.assertTrue(result.getRight().get(0).isLeft());
    Assert.assertEquals(MyEnum.B, result.getRight().get(0).getLeft());
}