66import java .nio .charset .Charset ;
77import java .nio .charset .StandardCharsets ;
88import java .util .Optional ;
9+ import java .util .Random ;
910import java .util .UUID ;
1011import java .util .concurrent .ArrayBlockingQueue ;
1112import java .util .concurrent .TimeUnit ;
@@ -150,11 +151,20 @@ public void showMessage(ShowMessageParams params) {
150151 @ Override
151152 public void registerCapability (String method , JsonElement options ) {
152153 var params = new RegistrationParams ();
153- params .id = UUID .randomUUID ().toString ();
154- params .method = method ;
155- params .registerOptions = options ;
156-
157- notifyClient (send , "client/registerCapability" , params );
154+ var registration = new RegistrationParams .Registration ();
155+ registration .id = UUID .randomUUID ().toString ();
156+ registration .method = method ;
157+ registration .registerOptions = options ;
158+ params .registrations .add (registration );
159+ var jsonText = toJson (params );
160+ var requestMethod = "client/registerCapability" ;
161+ // The request should contain the id param. Otherwise, it will be considered a notification.
162+ var id = new Random ().nextInt ();
163+ var messageText =
164+ String .format (
165+ "{\" jsonrpc\" :\" 2.0\" ,\" id\" :\" %d\" ,\" method\" :\" %s\" ,\" params\" :%s}" ,
166+ id , requestMethod , jsonText );
167+ writeClient (send , messageText );
158168 }
159169
160170 @ Override
@@ -172,7 +182,7 @@ public static void connect(
172182 // Read messages and process cancellations on a separate thread
173183 class MessageReader implements Runnable {
174184 void peek (Message message ) {
175- if (message . method . equals ( "$/cancelRequest" )) {
185+ if ("$/cancelRequest" . equals ( message . method )) {
176186 var params = gson .fromJson (message .params , CancelParams .class );
177187 var removed = pending .removeIf (r -> r .id != null && r .id .equals (params .id ));
178188 if (removed ) LOG .info (String .format ("Cancelled request %d, which had not yet started" , params .id ));
0 commit comments