private MessageMapper getMapper(final Adaptable adaptable) { enhanceLogFromAdaptable(adaptable); return registry.getMapper().orElseGet(() -> { log.debug("Falling back to Default MessageMapper for mapping Adaptable as no MessageMapper was present: {}", adaptable); return registry.getDefaultMapper(); }); }
private MessageMapper getMapper(final Adaptable adaptable) { enhanceLogFromAdaptable(adaptable); return registry.getMapper().orElseGet(() -> { log.debug("Falling back to Default MessageMapper for mapping Adaptable as no MessageMapper was present: {}", adaptable); return registry.getDefaultMapper(); }); }
private Optional<ExternalMessage> convertToExternalMessage(final Supplier<Adaptable> adaptableSupplier, final StartedTimer overAllProcessingTimer) { checkNotNull(adaptableSupplier); try { final Adaptable adaptable = withTimer(overAllProcessingTimer.startNewSegment(PROTOCOL_SEGMENT_NAME), adaptableSupplier); enhanceLogFromAdaptable(adaptable); return withTimer(overAllProcessingTimer.startNewSegment(PAYLOAD_SEGMENT_NAME), () -> getMapper(adaptable).map(adaptable)); } catch (final DittoRuntimeException e) { throw e; } catch (final Exception e) { final Optional<DittoHeaders> headers = adaptableSupplier.get() .getHeaders(); final String contentType = headers .map(h -> h.get(ExternalMessage.CONTENT_TYPE_HEADER)) .orElse(""); throw MessageMappingFailedException.newBuilder(contentType) .description("Could not map Adaptable due to unknown problem: " + e.getMessage()) .dittoHeaders(headers.orElseGet(DittoHeaders::empty)) .cause(e) .build(); } }
private Optional<ExternalMessage> convertToExternalMessage(final Supplier<Adaptable> adaptableSupplier, final StartedTimer overAllProcessingTimer) { checkNotNull(adaptableSupplier); try { final Adaptable adaptable = withTimer(overAllProcessingTimer.startNewSegment(PROTOCOL_SEGMENT_NAME), adaptableSupplier); enhanceLogFromAdaptable(adaptable); return withTimer(overAllProcessingTimer.startNewSegment(PAYLOAD_SEGMENT_NAME), () -> getMapper(adaptable).map(adaptable)); } catch (final DittoRuntimeException e) { throw e; } catch (final Exception e) { final Optional<DittoHeaders> headers = adaptableSupplier.get() .getHeaders(); final String contentType = headers .map(h -> h.get(ExternalMessage.CONTENT_TYPE_HEADER)) .orElse(""); throw MessageMappingFailedException.newBuilder(contentType) .description("Could not map Adaptable due to unknown problem: " + e.getMessage()) .dittoHeaders(headers.orElseGet(DittoHeaders::empty)) .cause(e) .build(); } }
private Optional<InboundExternalMessage> convertMessage(final ExternalMessage message, final StartedTimer overAllProcessingTimer) { checkNotNull(message); try { final Optional<Adaptable> adaptableOpt = withTimer( overAllProcessingTimer.startNewSegment(PAYLOAD_SEGMENT_NAME), () -> getMapper(message).map(message)); return adaptableOpt.map(adaptable -> { enhanceLogFromAdaptable(adaptable); final Signal<?> signal = this.<Signal<?>>withTimer( overAllProcessingTimer.startNewSegment(PROTOCOL_SEGMENT_NAME), () -> protocolAdapter.fromAdaptable(adaptable)); return MappedInboundExternalMessage.of(message, adaptable.getTopicPath(), signal); }); } catch (final DittoRuntimeException e) { throw e; } catch (final Exception e) { throw MessageMappingFailedException.newBuilder(message.findContentType().orElse("")) .description("Could not map ExternalMessage due to unknown problem: " + e.getClass().getSimpleName() + " " + e.getMessage()) .dittoHeaders(DittoHeaders.of(message.getHeaders())) .cause(e) .build(); } }
private Optional<InboundExternalMessage> convertMessage(final ExternalMessage message, final StartedTimer overAllProcessingTimer) { checkNotNull(message); try { final Optional<Adaptable> adaptableOpt = withTimer( overAllProcessingTimer.startNewSegment(PAYLOAD_SEGMENT_NAME), () -> getMapper(message).map(message)); return adaptableOpt.map(adaptable -> { enhanceLogFromAdaptable(adaptable); final Signal<?> signal = this.<Signal<?>>withTimer( overAllProcessingTimer.startNewSegment(PROTOCOL_SEGMENT_NAME), () -> protocolAdapter.fromAdaptable(adaptable)); return MappedInboundExternalMessage.of(message, adaptable.getTopicPath(), signal); }); } catch (final DittoRuntimeException e) { throw e; } catch (final Exception e) { throw MessageMappingFailedException.newBuilder(message.findContentType().orElse("")) .description("Could not map ExternalMessage due to unknown problem: " + e.getClass().getSimpleName() + " " + e.getMessage()) .dittoHeaders(DittoHeaders.of(message.getHeaders())) .cause(e) .build(); } }