X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/a8bbdb54d006f157a009ece0cae5bf72fb636ced..9c86baf0ea310341e588eb7d41856c270ebb2c0d:/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java diff --git a/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java index 67fced0d..c2727d28 100644 --- a/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java +++ b/src/main/java/org/asamk/signal/jsonrpc/JsonRpcReader.java @@ -41,15 +41,16 @@ public class JsonRpcReader { JsonRpcMessage message = readMessage(); if (message == null) break; - if (message instanceof JsonRpcRequest) { - final var response = handleRequest(requestHandler, (JsonRpcRequest) message); + if (message instanceof final JsonRpcRequest jsonRpcRequest) { + logger.debug("Received json rpc request, method: " + jsonRpcRequest.method); + final var response = handleRequest(requestHandler, jsonRpcRequest); if (response != null) { jsonRpcSender.sendResponse(response); } - } else if (message instanceof JsonRpcResponse) { - responseHandler.accept((JsonRpcResponse) message); + } else if (message instanceof JsonRpcResponse jsonRpcResponse) { + responseHandler.accept(jsonRpcResponse); } else { - final var responseList = ((JsonRpcBulkMessage) message).getMessages().stream().map(jsonNode -> { + final var responseList = ((JsonRpcBatchMessage) message).getMessages().stream().map(jsonNode -> { final JsonRpcRequest request; try { request = parseJsonRpcRequest(jsonNode); @@ -60,7 +61,7 @@ public class JsonRpcReader { return handleRequest(requestHandler, request); }).filter(Objects::nonNull).collect(Collectors.toList()); - jsonRpcSender.sendBulkResponses(responseList); + jsonRpcSender.sendBatchResponses(responseList); } } } @@ -70,10 +71,17 @@ public class JsonRpcReader { final var result = requestHandler.apply(request.getMethod(), request.getParams()); if (request.getId() != null) { return JsonRpcResponse.forSuccess(result, request.getId()); + } else { + logger.debug("Command '{}' succeeded but client didn't specify an id, dropping response", + request.getMethod()); } } catch (JsonRpcException e) { if (request.getId() != null) { return JsonRpcResponse.forError(e.getError(), request.getId()); + } else { + logger.debug("Command '{}' failed but client didn't specify an id, dropping error: {}", + request.getMethod(), + e.getMessage()); } } return null; @@ -122,7 +130,7 @@ public class JsonRpcReader { null), null)); return null; } - return new JsonRpcBulkMessage(StreamSupport.stream(jsonNode.spliterator(), false) + return new JsonRpcBatchMessage(StreamSupport.stream(jsonNode.spliterator(), false) .collect(Collectors.toList())); } else if (jsonNode.isObject()) { if (jsonNode.has("result") || jsonNode.has("error")) {