diff options
author | George Fraser <george@fivetran.com> | 2019-01-04 23:53:59 -0800 |
---|---|---|
committer | George Fraser <george@fivetran.com> | 2019-01-04 23:54:24 -0800 |
commit | 1465f556a064e5b8e1fc4154c2b4587ee04f0654 (patch) | |
tree | 0861ff2416e43695cce3592e91a808e253a2fce2 | |
parent | a60cfe8bd27bfea6128779e17457faac7e59e36b (diff) | |
download | java-language-server-1465f556a064e5b8e1fc4154c2b4587ee04f0654.zip |
Send error responses
-rw-r--r-- | src/main/java/org/javacs/lsp/LSP.java | 26 | ||||
-rw-r--r-- | src/main/java/org/javacs/lsp/ResponseError.java | 8 |
2 files changed, 24 insertions, 10 deletions
diff --git a/src/main/java/org/javacs/lsp/LSP.java b/src/main/java/org/javacs/lsp/LSP.java index 4663e0c..a63b581 100644 --- a/src/main/java/org/javacs/lsp/LSP.java +++ b/src/main/java/org/javacs/lsp/LSP.java @@ -209,17 +209,23 @@ public class LSP { LOG.info("Reading messages from queue..."); processMessages: while (true) { + Message r; try { // Take a break every 1s to check if receive has been closed - var r = pending.poll(1, TimeUnit.SECONDS); - // If receive has been closed, exit - if (r == endOfStream) { - LOG.warning("Stream from client has been closed, exiting..."); - break processMessages; - } - // If poll(_) failed, loop again - if (r == null) continue; - // Otherwise, process the new message + r = pending.poll(1, TimeUnit.SECONDS); + } catch (Exception e) { + LOG.log(Level.SEVERE, e.getMessage(), e); + continue; + } + // If receive has been closed, exit + if (r == endOfStream) { + LOG.warning("Stream from client has been closed, exiting..."); + break processMessages; + } + // If poll(_) failed, loop again + if (r == null) continue; + // Otherwise, process the new message + try { switch (r.method) { case "initialize": { @@ -415,7 +421,7 @@ public class LSP { } } catch (Exception e) { LOG.log(Level.SEVERE, e.getMessage(), e); - // TODO send failure response if r was a request + respond(send, r.id, new ResponseError(ErrorCodes.InternalError, e.getMessage(), null)); } } } diff --git a/src/main/java/org/javacs/lsp/ResponseError.java b/src/main/java/org/javacs/lsp/ResponseError.java index d6a19c8..2c30850 100644 --- a/src/main/java/org/javacs/lsp/ResponseError.java +++ b/src/main/java/org/javacs/lsp/ResponseError.java @@ -6,4 +6,12 @@ public class ResponseError { public int code; public String message; public JsonElement data; + + public ResponseError() {} + + public ResponseError(int code, String message, JsonElement data) { + this.code = code; + this.message = message; + this.data = data; + } } |