@Override public Optional<ExternalMessage> apply(final Adaptable adaptable) { final JsonifiableAdaptable jsonifiableAdaptable = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable); final ExternalMessageBuilder messageBuilder = ExternalMessageFactory.newExternalMessageBuilder( adaptable.getHeaders().orElseGet(adaptable::getDittoHeaders)) .withTopicPath(adaptable.getTopicPath()); messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, DittoConstants.DITTO_PROTOCOL_CONTENT_TYPE); messageBuilder.withText(jsonifiableAdaptable.toJsonString()); return Optional.of(messageBuilder.build()); }
final String correlationId = jsonifiableAdaptable.getHeaders() .flatMap(DittoHeaders::getCorrelationId) .orElse(jmsCorrelationId); log.debug("received public command: {}", jsonifiableAdaptable.toJsonString());
@Override public Optional<ExternalMessage> apply(final Adaptable adaptable) { final JsonifiableAdaptable jsonifiableAdaptable = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable); final ExternalMessageBuilder messageBuilder = ExternalMessageFactory.newExternalMessageBuilder( adaptable.getHeaders().orElseGet(adaptable::getDittoHeaders)) .withTopicPath(adaptable.getTopicPath()); messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, DittoConstants.DITTO_PROTOCOL_CONTENT_TYPE); messageBuilder.withText(jsonifiableAdaptable.toJsonString()); return Optional.of(messageBuilder.build()); }
@Override public Optional<ExternalMessage> map(final Adaptable adaptable) { final Map<String, String> headers = new LinkedHashMap<>(adaptable.getHeaders().orElse(DittoHeaders.empty())); final String jsonString = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable).toJsonString(); final boolean isError = TopicPath.Criterion.ERRORS.equals(adaptable.getTopicPath().getCriterion()); final boolean isResponse = adaptable.getPayload().getStatus().isPresent(); return Optional.of( ExternalMessageFactory.newExternalMessageBuilder(headers) .withTopicPath(adaptable.getTopicPath()) .withText(jsonString) .asResponse(isResponse) .asError(isError) .build()); }
@Override public Optional<ExternalMessage> map(final Adaptable adaptable) { final Map<String, String> headers = new LinkedHashMap<>(adaptable.getHeaders().orElse(DittoHeaders.empty())); final String jsonString = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable).toJsonString(); final boolean isError = TopicPath.Criterion.ERRORS.equals(adaptable.getTopicPath().getCriterion()); final boolean isResponse = adaptable.getPayload().getStatus().isPresent(); return Optional.of( ExternalMessageFactory.newExternalMessageBuilder(headers) .withTopicPath(adaptable.getTopicPath()) .withText(jsonString) .asResponse(isResponse) .asError(isError) .build()); }
private static Function<Jsonifiable.WithPredicate<JsonObject, JsonField>, String> jsonifiableToString( final ProtocolAdapter adapter) { return jsonifiable -> { if (jsonifiable instanceof StreamingAck) { return streamingAckToString((StreamingAck) jsonifiable); } final Adaptable adaptable; if (jsonifiable instanceof WithDittoHeaders && ((WithDittoHeaders) jsonifiable).getDittoHeaders().getChannel().isPresent()) { // if channel was present in headers, use that one: final TopicPath.Channel channel = TopicPath.Channel.forName(((WithDittoHeaders) jsonifiable).getDittoHeaders().getChannel().get()) .orElse(TopicPath.Channel.TWIN); adaptable = jsonifiableToAdaptable(jsonifiable, channel, adapter); } else if (jsonifiable instanceof Signal && isLiveSignal((Signal<?>) jsonifiable)) { adaptable = jsonifiableToAdaptable(jsonifiable, TopicPath.Channel.LIVE, adapter); } else { adaptable = jsonifiableToAdaptable(jsonifiable, TopicPath.Channel.TWIN, adapter); } final JsonifiableAdaptable jsonifiableAdaptable = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable); return jsonifiableAdaptable.toJsonString(); }; }
return Optional.ofNullable((ExternalMessage) contextFactory.call(cx -> { final Object dittoProtocolMessage = NativeJSON.parse(cx, scope, jsonifiableAdaptable.toJsonString(), new NullCallable());
return Optional.ofNullable((ExternalMessage) contextFactory.call(cx -> { final Object dittoProtocolMessage = NativeJSON.parse(cx, scope, jsonifiableAdaptable.toJsonString(), new NullCallable());