@Override public <R, Q> CompletableFuture<R> query(String queryName, Q query, ResponseType<R> responseType) { CompletableFuture<QueryResponseMessage<R>> queryResponse = queryBus .query(processInterceptors(new GenericQueryMessage<>(query, queryName, responseType))); CompletableFuture<R> result = new CompletableFuture<>(); queryResponse.exceptionally(cause -> asResponseMessage(responseType.responseMessagePayloadType(), cause)) .thenAccept(queryResponseMessage -> { try { if (queryResponseMessage.isExceptional()) { result.completeExceptionally(queryResponseMessage.exceptionResult()); } else { result.complete(queryResponseMessage.getPayload()); } } catch (Exception e) { result.completeExceptionally(e); } }); return result; }
public QueryResponse serializeResponse(QueryResponseMessage<?> response, String requestMessageId) { QueryResponse.Builder builder = QueryResponse.newBuilder(); if (response.isExceptional()) { Throwable exceptionResult = response.exceptionResult(); builder.setErrorCode(ErrorCode.QUERY_EXECUTION_ERROR.errorCode()); builder.setErrorMessage(ExceptionSerializer.serialize(configuration.getClientId(), exceptionResult)); } else { builder.setPayload(payloadSerializer.apply(response)); } return builder .putAllMetaData(metadataSerializer.apply(response.getMetaData())) .setMessageIdentifier(response.getIdentifier()) .setRequestIdentifier(requestMessageId) .build(); }
@Override public <R, Q> CompletableFuture<R> query(String queryName, Q query, ResponseType<R> responseType) { CompletableFuture<QueryResponseMessage<R>> queryResponse = queryBus .query(processInterceptors(new GenericQueryMessage<>(query, queryName, responseType))); CompletableFuture<R> result = new CompletableFuture<>(); queryResponse.exceptionally(cause -> asResponseMessage(responseType.responseMessagePayloadType(), cause)) .thenAccept(queryResponseMessage -> { if (queryResponseMessage.isExceptional()) { result.completeExceptionally(queryResponseMessage.exceptionResult()); } else { result.complete(queryResponseMessage.getPayload()); } }); return result; }
public QueryResponse serializeResponse(QueryResponseMessage<?> response, String requestMessageId) { QueryResponse.Builder builder = QueryResponse.newBuilder(); if (response.isExceptional()) { Throwable exceptionResult = response.exceptionResult(); builder.setErrorCode(ErrorCode.QUERY_EXECUTION_ERROR.errorCode()); builder.setErrorMessage(ExceptionSerializer.serialize(configuration.getClientId(), exceptionResult)); } else { builder.setPayload(payloadSerializer.apply(response)); } return builder .putAllMetaData(metadataSerializer.apply(response.getMetaData())) .setMessageIdentifier(response.getIdentifier()) .setRequestIdentifier(requestMessageId) .build(); }