@Override public DittoHeaders apply(final InboundExternalMessage inboundExternalMessage) { final Signal<?> signal = inboundExternalMessage.getSignal(); final ExternalMessage externalMessage = inboundExternalMessage.getSource(); return externalMessage.getHeaderMapping().map(mapping -> { final DittoHeaders dittoHeaders = signal.getDittoHeaders(); final String thingId = signal.getId(); final DittoHeadersBuilder dittoHeadersBuilder = dittoHeaders.toBuilder(); mapping.getMapping().entrySet().stream() .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), dittoHeaders, HEADERS_PLACEHOLDER, true)) ) .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), thingId, THING_PLACEHOLDER, true)) ) .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), inboundExternalMessage.getTopicPath(), TOPIC_PLACEHOLDER, true)) ) .forEach(e -> dittoHeadersBuilder.putHeader(e.getKey(), e.getValue())); LogUtil.enhanceLogWithCorrelationId(log, signal); final DittoHeaders newHeaders = dittoHeadersBuilder.build(); log.debug("Result of header mapping <{}> are these headers: {}", mapping, newHeaders); return newHeaders; }).orElse(signal.getDittoHeaders()); }
@Override public DittoHeaders apply(final InboundExternalMessage inboundExternalMessage) { final Signal<?> signal = inboundExternalMessage.getSignal(); final ExternalMessage externalMessage = inboundExternalMessage.getSource(); return externalMessage.getHeaderMapping().map(mapping -> { final DittoHeaders dittoHeaders = signal.getDittoHeaders(); final String thingId = signal.getId(); final DittoHeadersBuilder dittoHeadersBuilder = dittoHeaders.toBuilder(); mapping.getMapping().entrySet().stream() .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), dittoHeaders, HEADERS_PLACEHOLDER, true)) ) .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), thingId, THING_PLACEHOLDER, true)) ) .map(e -> newEntry(e.getKey(), PlaceholderFilter.apply(e.getValue(), inboundExternalMessage.getTopicPath(), TOPIC_PLACEHOLDER, true)) ) .forEach(e -> dittoHeadersBuilder.putHeader(e.getKey(), e.getValue())); LogUtil.enhanceLogWithCorrelationId(log, signal); final DittoHeaders newHeaders = dittoHeadersBuilder.build(); log.debug("Result of header mapping <{}> are these headers: {}", mapping, newHeaders); return newHeaders; }).orElse(signal.getDittoHeaders()); }