@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> 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()); }
private void extractPayloadFromMessage(final JmsMessage message, final ExternalMessageBuilder builder) throws JMSException { if (message instanceof TextMessage) { final String payload = ((TextMessage) message).getText(); builder.withText(payload); } else if (message instanceof BytesMessage) { final BytesMessage bytesMessage = (BytesMessage) message; final long bodyLength = bytesMessage.getBodyLength(); if (bodyLength >= Integer.MIN_VALUE && bodyLength <= Integer.MAX_VALUE) { final int length = (int) bodyLength; final ByteBuffer byteBuffer = ByteBuffer.allocate(length); bytesMessage.readBytes(byteBuffer.array()); builder.withBytes(byteBuffer); } else { throw new IllegalArgumentException("Message too large..."); } } else { final Destination destination = message.getJMSDestination(); final Map<String, String> headersMapFromJmsMessage = extractHeadersMapFromJmsMessage(message); log.debug("Received message at '{}' of unsupported type ({}) with headers: {}", destination, message.getClass().getName(), headersMapFromJmsMessage); } }
@Override public Optional<ExternalMessage> map(final Adaptable adaptable) { final Optional<ExternalMessage> mappedOpt = delegate.map(adaptable); return mappedOpt.map(mapped -> { final ExternalMessageBuilder messageBuilder = ExternalMessageFactory.newExternalMessageBuilder(mapped); messageBuilder.asResponse(adaptable.getPayload().getStatus().isPresent()); adaptable.getHeaders() .map(h -> h.get(ExternalMessage.REPLY_TO_HEADER)) .ifPresent( replyTo -> messageBuilder.withAdditionalHeaders(ExternalMessage.REPLY_TO_HEADER, replyTo)); return messageBuilder.build(); }); }
if (shouldBeInterpretedAsText(contentType)) { final String text = new String(body, MessageMappers.determineCharset(contentType)); externalMessageBuilder.withText(text); } else { externalMessageBuilder.withBytes(body); externalMessageBuilder.withAuthorizationContext(authorizationContext); externalMessageBuilder.withEnforcement(headerEnforcementFilterFactory.getFilter(headers)); externalMessageBuilder.withHeaderMapping(headerMapping); final ExternalMessage externalMessage = externalMessageBuilder.build(); messageMappingProcessor.forward(externalMessage, getContext()); } catch (final DittoRuntimeException e) {
messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, ((CharSequence) contentType).toString()); messageBuilder.withBytes(byteBuffer.get()); } else if (!(textPayload instanceof Undefined)) { messageBuilder.withText(((CharSequence) textPayload).toString()); } else { throw MessageMappingFailedException.newBuilder("") return messageBuilder.build(); })); } catch (final RhinoException e) {
.withBytes(message.payload().toByteBuffer()) .withAuthorizationContext(sourceAuthorizationContext) .withEnforcement(getEnforcementFilter(message.topic())) .build();
headers = extractHeadersMapFromJmsMessage(message); final ExternalMessageBuilder builder = ExternalMessageFactory.newExternalMessageBuilder(headers); builder.withAuthorizationContext(authorizationContext); extractPayloadFromMessage(message, builder); builder.withEnforcement(headerEnforcementFilterFactory.getFilter(headers)); builder.withHeaderMapping(headerMapping); final ExternalMessage externalMessage = builder.build(); LogUtil.enhanceLogWithCorrelationId(log, externalMessage .findHeader(DittoHeaderDefinition.CORRELATION_ID.getKey()));
.clearHeaders(); messageBuilder.withAdditionalHeaders(DittoHeaderDefinition.CORRELATION_ID.getKey(), c)); Optional.ofNullable(originalHeaders.get(ExternalMessage.CONTENT_TYPE_HEADER)) .ifPresent(c -> messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, c)); Optional.ofNullable(originalHeaders.get(ExternalMessage.REPLY_TO_HEADER)) .ifPresent(r -> messageBuilder.withAdditionalHeaders(ExternalMessage.REPLY_TO_HEADER, r)); return messageBuilder.build(); .withAdditionalHeaders(mappedHeaders) .build(); }).orElseGet(messageBuilder::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 ExternalMessage withHeaders(final Map<String, String> additionalHeaders) { return new UnmodifiableExternalMessageBuilder(this) .withAdditionalHeaders(additionalHeaders) .build(); }
if (shouldBeInterpretedAsText(contentType)) { final String text = new String(body, MessageMappers.determineCharset(contentType)); externalMessageBuilder.withText(text); } else { externalMessageBuilder.withBytes(body); externalMessageBuilder.withAuthorizationContext(authorizationContext); externalMessageBuilder.withEnforcement(headerEnforcementFilterFactory.getFilter(headers)); externalMessageBuilder.withHeaderMapping(headerMapping); final ExternalMessage externalMessage = externalMessageBuilder.build(); messageMappingProcessor.forward(externalMessage, getContext()); } catch (final DittoRuntimeException e) {
messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, ((CharSequence) contentType).toString()); messageBuilder.withBytes(byteBuffer.get()); } else if (!(textPayload instanceof Undefined)) { messageBuilder.withText(((CharSequence) textPayload).toString()); } else { throw MessageMappingFailedException.newBuilder("") return messageBuilder.build(); })); } catch (final RhinoException e) {
.withBytes(message.payload().toByteBuffer()) .withAuthorizationContext(sourceAuthorizationContext) .withEnforcement(getEnforcementFilter(message.topic())) .build();
@Override public Optional<ExternalMessage> map(final Adaptable adaptable) { final Optional<ExternalMessage> mappedOpt = delegate.map(adaptable); return mappedOpt.map(mapped -> { final ExternalMessageBuilder messageBuilder = ExternalMessageFactory.newExternalMessageBuilder(mapped); messageBuilder.asResponse(adaptable.getPayload().getStatus().isPresent()); adaptable.getHeaders() .map(h -> h.get(ExternalMessage.REPLY_TO_HEADER)) .ifPresent( replyTo -> messageBuilder.withAdditionalHeaders(ExternalMessage.REPLY_TO_HEADER, replyTo)); return messageBuilder.build(); }); }
headers = extractHeadersMapFromJmsMessage(message); final ExternalMessageBuilder builder = ExternalMessageFactory.newExternalMessageBuilder(headers); builder.withAuthorizationContext(authorizationContext); extractPayloadFromMessage(message, builder); builder.withEnforcement(headerEnforcementFilterFactory.getFilter(headers)); builder.withHeaderMapping(headerMapping); final ExternalMessage externalMessage = builder.build(); LogUtil.enhanceLogWithCorrelationId(log, externalMessage .findHeader(DittoHeaderDefinition.CORRELATION_ID.getKey()));
.clearHeaders(); messageBuilder.withAdditionalHeaders(DittoHeaderDefinition.CORRELATION_ID.getKey(), c)); Optional.ofNullable(originalHeaders.get(ExternalMessage.CONTENT_TYPE_HEADER)) .ifPresent(c -> messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, c)); Optional.ofNullable(originalHeaders.get(ExternalMessage.REPLY_TO_HEADER)) .ifPresent(r -> messageBuilder.withAdditionalHeaders(ExternalMessage.REPLY_TO_HEADER, r)); return messageBuilder.build(); .withAdditionalHeaders(mappedHeaders) .build(); }).orElseGet(messageBuilder::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 ExternalMessage withHeader(final String key, final String value) { return new UnmodifiableExternalMessageBuilder(this).withAdditionalHeaders(key, value).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()); }