/** * Returns a mutable builder to create immutable {@code Adaptable} instances for a given {@code topicPath}. * * @param topicPath the topic path. * @return the builder. * @throws NullPointerException if {@code topicPath} is {@code null}. */ static AdaptableBuilder newBuilder(final TopicPath topicPath) { return ProtocolFactory.newAdaptableBuilder(topicPath); }
/** * Returns a mutable builder to create immutable {@code Adaptable} instances for a given {@code topicPath}. * * @param topicPath the topic path. * @return the builder. * @throws NullPointerException if {@code topicPath} is {@code null}. */ static AdaptableBuilder newBuilder(final TopicPath topicPath) { return ProtocolFactory.newAdaptableBuilder(topicPath); }
/** * Returns a new {@code AdaptableBuilder} for the existing {@code existingAdaptable}. * * @param existingAdaptable the existingAdaptable to initialize the AdaptableBuilder with. * @return the builder. */ public static AdaptableBuilder newAdaptableBuilder(final Adaptable existingAdaptable) { return newAdaptableBuilder(existingAdaptable, existingAdaptable.getTopicPath()); }
/** * Returns a new {@code AdaptableBuilder} for the existing {@code existingAdaptable}. * * @param existingAdaptable the existingAdaptable to initialize the AdaptableBuilder with. * @return the builder. */ public static AdaptableBuilder newAdaptableBuilder(final Adaptable existingAdaptable) { return newAdaptableBuilder(existingAdaptable, existingAdaptable.getTopicPath()); }
@Override public Optional<Adaptable> map(final ExternalMessage message) { final String payload = extractPayloadAsString(message); final JsonifiableAdaptable jsonifiableAdaptable = DittoJsonException.wrapJsonRuntimeException(() -> ProtocolFactory.jsonifiableAdaptableFromJson(JsonFactory.newObject(payload)) ); final DittoHeaders mergedHeaders = mergeHeaders(message, jsonifiableAdaptable); return Optional.of( ProtocolFactory.newAdaptableBuilder(jsonifiableAdaptable).withHeaders(mergedHeaders).build()); }
@Override public Optional<Adaptable> map(final ExternalMessage message) { final String payload = extractPayloadAsString(message); final JsonifiableAdaptable jsonifiableAdaptable = DittoJsonException.wrapJsonRuntimeException(() -> ProtocolFactory.jsonifiableAdaptableFromJson(JsonFactory.newObject(payload)) ); final DittoHeaders mergedHeaders = mergeHeaders(message, jsonifiableAdaptable); return Optional.of( ProtocolFactory.newAdaptableBuilder(jsonifiableAdaptable).withHeaders(mergedHeaders).build()); }
@Override public Optional<Adaptable> map(final ExternalMessage message) { final ExternalMessage enhancedMessage; final String correlationId; if (!message.getHeaders().containsKey(DittoHeaderDefinition.CORRELATION_ID.getKey())) { // if no correlation-id was provided in the ExternalMessage, generate one here: correlationId = UUID.randomUUID().toString(); enhancedMessage = ExternalMessageFactory.newExternalMessageBuilder(message) .withAdditionalHeaders(DittoHeaderDefinition.CORRELATION_ID.getKey(), correlationId) .build(); } else { correlationId = message.getHeaders().get(DittoHeaderDefinition.CORRELATION_ID.getKey()); enhancedMessage = message; } final Optional<Adaptable> mappedOpt = delegate.map(enhancedMessage); return mappedOpt.map(mapped -> { final DittoHeadersBuilder headersBuilder = DittoHeaders.newBuilder(); headersBuilder.correlationId(correlationId); Optional.ofNullable(message.getHeaders().get(ExternalMessage.REPLY_TO_HEADER)).ifPresent(replyTo -> headersBuilder.putHeader(ExternalMessage.REPLY_TO_HEADER, replyTo) ); final Optional<DittoHeaders> headersOpt = mapped.getHeaders(); headersOpt.ifPresent(headersBuilder::putHeaders); // overwrite with mapped headers (if any) return ProtocolFactory.newAdaptableBuilder(mapped) .withHeaders(headersBuilder.build()) .build(); }); }
@Override public Optional<Adaptable> map(final ExternalMessage message) { final ExternalMessage enhancedMessage; final String correlationId; if (!message.getHeaders().containsKey(DittoHeaderDefinition.CORRELATION_ID.getKey())) { // if no correlation-id was provided in the ExternalMessage, generate one here: correlationId = UUID.randomUUID().toString(); enhancedMessage = ExternalMessageFactory.newExternalMessageBuilder(message) .withAdditionalHeaders(DittoHeaderDefinition.CORRELATION_ID.getKey(), correlationId) .build(); } else { correlationId = message.getHeaders().get(DittoHeaderDefinition.CORRELATION_ID.getKey()); enhancedMessage = message; } final Optional<Adaptable> mappedOpt = delegate.map(enhancedMessage); return mappedOpt.map(mapped -> { final DittoHeadersBuilder headersBuilder = DittoHeaders.newBuilder(); headersBuilder.correlationId(correlationId); Optional.ofNullable(message.getHeaders().get(ExternalMessage.REPLY_TO_HEADER)).ifPresent(replyTo -> headersBuilder.putHeader(ExternalMessage.REPLY_TO_HEADER, replyTo) ); final Optional<DittoHeaders> headersOpt = mapped.getHeaders(); headersOpt.ifPresent(headersBuilder::putHeaders); // overwrite with mapped headers (if any) return ProtocolFactory.newAdaptableBuilder(mapped) .withHeaders(headersBuilder.build()) .build(); }); }