Skip to content

Commit 79e2cf7

Browse files
committed
Omit missing params when writing request/notification messages
Fixes #655.
1 parent 783b6e7 commit 79e2cf7

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

org.eclipse.lsp4j.jsonrpc/src/main/java/org/eclipse/lsp4j/jsonrpc/json/adapters/MessageTypeAdapter.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -418,12 +418,11 @@ public void write(JsonWriter out, Message message) throws IOException {
418418
writeId(out, requestMessage.getRawId());
419419
out.name("method");
420420
out.value(requestMessage.getMethod());
421-
out.name("params");
422421
Object params = requestMessage.getParams();
423-
if (params == null)
424-
writeNullValue(out);
425-
else
422+
if (params != null) {
423+
out.name("params");
426424
handleParameter(out, params, requestMessage.getMethod());
425+
}
427426
} else if (message instanceof ResponseMessage) {
428427
final var responseMessage = (ResponseMessage) message;
429428
out.name("id");
@@ -443,12 +442,11 @@ public void write(JsonWriter out, Message message) throws IOException {
443442
final var notificationMessage = (NotificationMessage) message;
444443
out.name("method");
445444
out.value(notificationMessage.getMethod());
446-
out.name("params");
447445
Object params = notificationMessage.getParams();
448-
if (params == null)
449-
writeNullValue(out);
450-
else
446+
if (params != null) {
447+
out.name("params");
451448
handleParameter(out, params, notificationMessage.getMethod());
449+
}
452450
}
453451

454452
out.endObject();

org.eclipse.lsp4j/src/test/java/org/eclipse/lsp4j/test/services/JsonSerializeTest.xtend

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,36 @@ class JsonSerializeTest {
792792
}
793793
''')
794794
}
795+
796+
@Test
797+
def void testNoRequestParams() {
798+
val message = new RequestMessage => [
799+
jsonrpc = "2.0"
800+
id = "12"
801+
method = MessageMethods.SHUTDOWN
802+
]
803+
message.assertSerialize('''
804+
{
805+
"jsonrpc": "2.0",
806+
"id": "12",
807+
"method": "shutdown"
808+
}
809+
''')
810+
}
811+
812+
@Test
813+
def void testNoNotificationParams() {
814+
val message = new NotificationMessage => [
815+
jsonrpc = "2.0"
816+
method = MessageMethods.EXIT
817+
]
818+
message.assertSerialize('''
819+
{
820+
"jsonrpc": "2.0",
821+
"method": "exit"
822+
}
823+
''')
824+
}
795825

796826
@Test
797827
def void testProgressCreate() {

0 commit comments

Comments
 (0)