- if (message instanceof JsonRpcRequest) {
- final var response = handleRequest(requestHandler, (JsonRpcRequest) message);
- if (response != null) {
- jsonRpcSender.sendResponse(response);
+ private void handleMessage(
+ final JsonRpcMessage message,
+ final RequestHandler requestHandler,
+ final Consumer<JsonRpcResponse> responseHandler
+ ) {
+ if (message instanceof final JsonRpcRequest jsonRpcRequest) {
+ logger.debug("Received json rpc request, method: " + jsonRpcRequest.getMethod());
+ final var response = handleRequest(requestHandler, jsonRpcRequest);
+ if (response != null) {
+ jsonRpcSender.sendResponse(response);
+ }
+ } else if (message instanceof JsonRpcResponse jsonRpcResponse) {
+ responseHandler.accept(jsonRpcResponse);
+ } else {
+ final var responseList = ((JsonRpcBatchMessage) message).getMessages().stream().map(jsonNode -> {
+ final JsonRpcRequest request;
+ try {
+ request = parseJsonRpcRequest(jsonNode);
+ } catch (JsonRpcException e) {
+ return JsonRpcResponse.forError(e.getError(), getId(jsonNode));