@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()); }
private MessageMappingProcessorActor(final ActorRef publisherActor, final ActorRef conciergeForwarder, final MessageMappingProcessor processor, final String connectionId) { this.publisherActor = publisherActor; this.conciergeForwarder = conciergeForwarder; this.processor = processor; this.connectionId = connectionId; timers = new ConcurrentHashMap<>(); placeholderSubstitution = new PlaceholderSubstitution(); adjustHeaders = new AdjustHeaders(connectionId); mapHeaders = new ApplyHeaderMapping(log); applySignalIdEnforcement = new ApplySignalIdEnforcement(log); }
private MessageMappingProcessorActor(final ActorRef publisherActor, final ActorRef conciergeForwarder, final MessageMappingProcessor processor, final String connectionId) { this.publisherActor = publisherActor; this.conciergeForwarder = conciergeForwarder; this.processor = processor; this.connectionId = connectionId; timers = new ConcurrentHashMap<>(); placeholderSubstitution = new PlaceholderSubstitution(); adjustHeaders = new AdjustHeaders(connectionId); mapHeaders = new ApplyHeaderMapping(log); applySignalIdEnforcement = new ApplySignalIdEnforcement(log); }