@Override public <Q, I, U> SubscriptionQueryResult<I, U> subscriptionQuery(String queryName, Q query, ResponseType<I> initialResponseType, ResponseType<U> updateResponseType, SubscriptionQueryBackpressure backpressure, int updateBufferSize) { SubscriptionQueryMessage<Q, I, U> subscriptionQueryMessage = new GenericSubscriptionQueryMessage<>(query, queryName, initialResponseType, updateResponseType); SubscriptionQueryResult<QueryResponseMessage<I>, SubscriptionQueryUpdateMessage<U>> result = queryBus .subscriptionQuery(processInterceptors(subscriptionQueryMessage), backpressure, updateBufferSize); return new DefaultSubscriptionQueryResult<>( result.initialResult() .filter(initialResult -> Objects.nonNull(initialResult.getPayload())) .map(Message::getPayload) .onErrorMap(e -> e instanceof IllegalPayloadAccessException ? e.getCause() : e), result.updates() .filter(update -> Objects.nonNull(update.getPayload())) .map(SubscriptionQueryUpdateMessage::getPayload), result ); }
QueryProviderOutbound serialize(SubscriptionQueryUpdateMessage<?> update, String subscriptionId) { QueryUpdate.Builder builder = QueryUpdate.newBuilder() .setPayload(payloadSerializer.apply(update)) .putAllMetaData(metadataSerializer.apply(update.getMetaData())) .setMessageIdentifier(update.getIdentifier()) .setClientId(conf.getClientId()) .setComponentName(conf.getComponentName()); return newBuilder().setSubscriptionQueryResponse( SubscriptionQueryResponse.newBuilder() .setSubscriptionIdentifier(subscriptionId) .setUpdate(builder.build())).build(); }
@Override public <Q, I, U> SubscriptionQueryResult<I, U> subscriptionQuery(String queryName, Q query, ResponseType<I> initialResponseType, ResponseType<U> updateResponseType, SubscriptionQueryBackpressure backpressure, int updateBufferSize) { SubscriptionQueryMessage<Q, I, U> subscriptionQueryMessage = new GenericSubscriptionQueryMessage<>(query, queryName, initialResponseType, updateResponseType); SubscriptionQueryResult<QueryResponseMessage<I>, SubscriptionQueryUpdateMessage<U>> result = queryBus .subscriptionQuery(processInterceptors(subscriptionQueryMessage), backpressure, updateBufferSize); return new DefaultSubscriptionQueryResult<>( result.initialResult() .filter(initialResult -> Objects.nonNull(initialResult.getPayload())) .map(Message::getPayload) .onErrorMap(e -> e instanceof IllegalPayloadAccessException ? e.getCause() : e), result.updates() .filter(update -> Objects.nonNull(update.getPayload())) .map(SubscriptionQueryUpdateMessage::getPayload), result ); }
QueryProviderOutbound serialize(SubscriptionQueryUpdateMessage<?> update, String subscriptionId) { QueryUpdate.Builder builder = QueryUpdate.newBuilder() .setPayload(payloadSerializer.apply(update)) .putAllMetaData(metadataSerializer.apply(update.getMetaData())) .setMessageIdentifier(update.getIdentifier()) .setClientId(conf.getClientId()) .setComponentName(conf.getComponentName()); return newBuilder().setSubscriptionQueryResponse( SubscriptionQueryResponse.newBuilder() .setSubscriptionIdentifier(subscriptionId) .setUpdate(builder.build())).build(); }
@Override public <Q, I, U> SubscriptionQueryResult<I, U> subscriptionQuery(String queryName, Q query, ResponseType<I> initialResponseType, ResponseType<U> updateResponseType, SubscriptionQueryBackpressure backpressure, int updateBufferSize) { SubscriptionQueryMessage<Q, I, U> subscriptionQueryMessage = new GenericSubscriptionQueryMessage<>(query, queryName, initialResponseType, updateResponseType); SubscriptionQueryResult<QueryResponseMessage<I>, SubscriptionQueryUpdateMessage<U>> result = queryBus .subscriptionQuery(processInterceptors(subscriptionQueryMessage), backpressure, updateBufferSize); return new DefaultSubscriptionQueryResult<>( result.initialResult() .filter(initialResult -> Objects.nonNull(initialResult.getPayload())) .map(QueryResponseMessage::getPayload), result.updates() .filter(update -> Objects.nonNull(update.getPayload())) .map(SubscriptionQueryUpdateMessage::getPayload), result ); }