|
13 | 13 |
|
14 | 14 | import java.io.InputStream; |
15 | 15 | import java.io.OutputStream; |
16 | | -import java.util.concurrent.CompletionException; |
17 | 16 | import java.util.logging.Level; |
18 | 17 | import java.util.logging.Logger; |
19 | 18 |
|
20 | 19 | import com.microsoft.java.debug.core.Configuration; |
21 | 20 | import com.microsoft.java.debug.core.UsageDataSession; |
22 | 21 | import com.microsoft.java.debug.core.protocol.AbstractProtocolServer; |
23 | 22 | import com.microsoft.java.debug.core.protocol.Messages; |
24 | | -import com.sun.jdi.VMDisconnectedException; |
25 | 23 |
|
26 | 24 | public class ProtocolServer extends AbstractProtocolServer { |
27 | 25 | private static final Logger logger = Logger.getLogger(Configuration.LOGGER_NAME); |
@@ -67,36 +65,11 @@ protected void sendMessage(Messages.ProtocolMessage message) { |
67 | 65 |
|
68 | 66 | protected void dispatchRequest(Messages.Request request) { |
69 | 67 | usageDataSession.recordRequest(request); |
70 | | - this.debugAdapter.dispatchRequest(request).whenComplete((response, ex) -> { |
71 | | - if (response != null) { |
72 | | - sendMessage(response); |
73 | | - } else { |
74 | | - response = new Messages.Response(request.seq, request.command); |
75 | | - if (ex != null) { |
76 | | - if (ex instanceof CompletionException && ex.getCause() != null) { |
77 | | - ex = ex.getCause(); |
78 | | - } |
79 | | - |
80 | | - if (ex instanceof VMDisconnectedException) { |
81 | | - // mark it success to avoid reporting error on VSCode. |
82 | | - response.success = true; |
83 | | - sendMessage(response); |
84 | | - } else { |
85 | | - sendMessage(AdapterUtils.setErrorResponse(response, |
86 | | - ErrorCode.UNKNOWN_FAILURE, |
87 | | - ex.getMessage() != null ? ex.getMessage() : ex.toString())); |
88 | | - } |
89 | | - } else { |
90 | | - logger.log(Level.SEVERE, "The request dispatcher should not return null response."); |
91 | | - sendMessage(AdapterUtils.setErrorResponse(response, |
92 | | - ErrorCode.UNKNOWN_FAILURE, |
93 | | - "The request dispatcher should not return null response.")); |
94 | | - } |
95 | | - } |
96 | | - }).whenComplete((r, e) -> { |
| 68 | + debugAdapter.dispatchRequest(request).thenAccept(this::sendMessage).exceptionally(e -> { |
97 | 69 | if (e != null) { |
98 | | - logger.log(Level.SEVERE, "Unexpected exception occurs when sending message to VSCode: %s" + e.getMessage()); |
| 70 | + logger.log(Level.SEVERE, "Unexpected exception occurs when processing message to VSCode: %s" + e.getMessage()); |
99 | 71 | } |
| 72 | + return null; |
100 | 73 | }); |
101 | 74 | } |
102 | 75 |
|
|
0 commit comments