protected RequestMessage createRequestMessage(String method, Object parameter) { RequestMessage requestMessage = new RequestMessage(); requestMessage.setId(String.valueOf(nextRequestId.incrementAndGet())); requestMessage.setMethod(method); requestMessage.setParams(parameter); return requestMessage; }
protected RequestMessage createRequestMessage(String method, Object parameter) { RequestMessage requestMessage = new RequestMessage(); requestMessage.setId(String.valueOf(nextRequestId.incrementAndGet())); requestMessage.setMethod(method); requestMessage.setParams(parameter); return requestMessage; }
@Test public void testRequest1() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp); endpoint.consume(init(new RequestMessage(), it -> { it.setId("1"); it.setMethod("foo"); it.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()); ResponseMessage responseMessage = (ResponseMessage) consumer.messages.get(0); assertEquals("success", responseMessage.getResult()); assertEquals(Either.forLeft("1"), responseMessage.getRawId()); }
@Test public void testRequest2() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp); endpoint.consume(init(new RequestMessage(), it -> { it.setId(1); it.setMethod("foo"); it.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()); ResponseMessage responseMessage = (ResponseMessage) consumer.messages.get(0); assertEquals("success", responseMessage.getResult()); assertEquals(Either.forRight(1), responseMessage.getRawId()); }
@Test public void testRequestValidation() { ReflectiveMessageValidator validator = new ReflectiveMessageValidator(); RequestMessage message = new RequestMessage(); message.setId("1"); message.setParams(new Object()); try { validator.consume(message); Assert.fail(); } catch (MessageIssueException e) { Assert.assertEquals("The accessor 'RequestMessage.getMethod()' must return a non-null value. Path: $.method", e.getMessage()); } }
@Test public void testCancellation() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp); endpoint.consume(init(new RequestMessage(), it -> { it.setId("1"); it.setMethod("foo"); it.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"); }
@Test public void testNullResponse() throws InterruptedException, ExecutionException { LogMessageAccumulator logMessages = new LogMessageAccumulator(); try { logMessages.registerTo(GenericEndpoint.class); Endpoint endpoint = ServiceEndpoints.toEndpoint(this); Map<String, JsonRpcMethod> methods = ServiceEndpoints.getSupportedMethods(LanguageServer.class); MessageJsonHandler handler = new MessageJsonHandler(methods); List<Message> msgs = new ArrayList<>(); MessageConsumer consumer = (message) -> { msgs.add(message); }; RemoteEndpoint re = new RemoteEndpoint(consumer, endpoint); RequestMessage request = new RequestMessage(); request.setId("1"); request.setMethod("shutdown"); re.consume(request); Assert.assertEquals("{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"result\":null}", handler.serialize(msgs.get(0))); msgs.clear(); shutdownReturn = new Object(); re.consume(request); Assert.assertEquals("{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"result\":{}}", handler.serialize(msgs.get(0))); } finally { logMessages.unregister(); } }
@Test public void testHandleRequestIssues() { TestEndpoint endp = new TestEndpoint(); TestMessageConsumer consumer = new TestMessageConsumer(); RemoteEndpoint endpoint = new RemoteEndpoint(consumer, endp); endpoint.handle(init(new RequestMessage(), it -> { it.setId("1"); it.setMethod("foo"); it.setParams("myparam"); }), Collections.singletonList(new MessageIssue("bar"))); ResponseMessage responseMessage = (ResponseMessage) consumer.messages.get(0); assertNotNull(responseMessage.getError()); assertEquals("bar", responseMessage.getError().getMessage()); }
@Test public void testInvalidCompletion() { RequestMessage message = new RequestMessage(); message.setJsonrpc("2.0"); message.setId("1"); message.setMethod(MessageMethods.DOC_COMPLETION); TextDocumentPositionParams params = new TextDocumentPositionParams(); params.setTextDocument(new TextDocumentIdentifier("file:///tmp/foo")); message.setParams(params); assertIssues(message, "The accessor 'TextDocumentPositionParams.getPosition()' must return a non-null value."); }
it.setId("1"); it.setMethod("foo"); it.setParams("myparam");
@Test public void testExceptionHandlerMisbehaving1() { 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(init(new RequestMessage(), it -> { it.setId("1"); it.setMethod("foo"); it.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(); } }
it.setId("1"); it.setMethod("foo"); it.setParams("myparam");
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("1"); it.setMethod(MessageMethods.INITIALIZE); InitializeParams _initializeParams = new InitializeParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("1"); it.setMethod(MessageMethods.INITIALIZE); InitializeParams _initializeParams = new InitializeParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("1"); it.setMethod(MessageMethods.INITIALIZE); InitializeParams _initializeParams = new InitializeParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("12"); it.setMethod(MessageMethods.DOC_FORMATTING); DocumentFormattingParams _documentFormattingParams = new DocumentFormattingParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("1"); it.setMethod(MessageMethods.INITIALIZE); InitializeParams _initializeParams = new InitializeParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("1"); it.setMethod(MessageMethods.DOC_COMPLETION); TextDocumentPositionParams _textDocumentPositionParams = new TextDocumentPositionParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId(1); it.setMethod(MessageMethods.DOC_COMPLETION); CompletionParams _completionParams = new CompletionParams();
final Procedure1<RequestMessage> _function = (RequestMessage it) -> { it.setJsonrpc("2.0"); it.setId("12"); it.setMethod(MessageMethods.DOC_FORMATTING); DocumentFormattingParams _documentFormattingParams = new DocumentFormattingParams();