@Override public <R, Q> Stream<R> scatterGather(String queryName, Q query, ResponseType<R> responseType, long timeout, TimeUnit timeUnit) { GenericQueryMessage<Q, R> queryMessage = new GenericQueryMessage<>(query, queryName, responseType); return queryBus.scatterGather(processInterceptors(queryMessage), timeout, timeUnit) .map(QueryResponseMessage::getPayload); }
@Override public QueryMessage<T, R> withMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().withMetaData(metaData), queryName, responseType); }
@Override public QueryMessage<T, R> andMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().andMetaData(metaData), queryName, responseType); }
@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; }
@Override public <R, Q> Stream<R> scatterGather(String queryName, Q query, ResponseType<R> responseType, long timeout, TimeUnit timeUnit) { GenericQueryMessage<Q, R> queryMessage = new GenericQueryMessage<>(query, queryName, responseType); return queryBus.scatterGather(processInterceptors(queryMessage), timeout, timeUnit) .map(QueryResponseMessage::getPayload); }
@Override public <R, Q> CompletableFuture<R> query(String queryName, Q query, ResponseType<R> responseType) { return queryBus.query(processInterceptors(new GenericQueryMessage<>(query, queryName, responseType))) .thenApply(QueryResponseMessage::getPayload); }
@Override public <R, Q> Stream<R> scatterGather(String queryName, Q query, ResponseType<R> responseType, long timeout, TimeUnit timeUnit) { GenericQueryMessage<Q, R> queryMessage = new GenericQueryMessage<>(query, queryName, responseType); return queryBus.scatterGather(processInterceptors(queryMessage), timeout, timeUnit) .map(QueryResponseMessage::getPayload); }
@Override public QueryMessage<T, R> andMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().andMetaData(metaData), queryName, responseType); }
@Override public QueryMessage<T, R> withMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().withMetaData(metaData), queryName, responseType); }
@Override public QueryMessage<T, R> withMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().withMetaData(metaData), queryName, responseType); }
@Override public QueryMessage<T, R> andMetaData(Map<String, ?> metaData) { return new GenericQueryMessage<>(getDelegate().andMetaData(metaData), queryName, responseType); }
@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; }