private DevOpsCommandResponseCorrelationActor(final ActorRef devOpsCommandSender, final DevOpsCommand<?> devOpsCommand) { this.devOpsCommandSender = devOpsCommandSender; this.devOpsCommand = devOpsCommand; final Duration receiveTimeout = Optional.ofNullable(devOpsCommand.getDittoHeaders().get(TIMEOUT_HEADER)) .map(Integer::parseInt) .map(Duration::ofMillis) .orElse(DEFAULT_RECEIVE_TIMEOUT); aggregateResults = Optional.ofNullable(devOpsCommand.getDittoHeaders() .get(AGGREGATE_HEADER)) .map(Boolean::valueOf) .orElse(DEFAULT_AGGREGATE); getContext().setReceiveTimeout(receiveTimeout); }
private static boolean hasPlainTextContentType(final DittoHeaders dittoHeaders) { final String contentTypeHeader = DittoHeaderDefinition.CONTENT_TYPE.name(); return dittoHeaders.containsKey(contentTypeHeader) && "text/plain".equalsIgnoreCase(dittoHeaders.get(contentTypeHeader)); }
private DevOpsCommandResponseCorrelationActor(final ActorRef devOpsCommandSender, final DevOpsCommand<?> devOpsCommand) { this.devOpsCommandSender = devOpsCommandSender; this.devOpsCommand = devOpsCommand; final FiniteDuration receiveTimeout = Optional.ofNullable(devOpsCommand.getDittoHeaders().get(TIMEOUT_HEADER)) .map(Integer::parseInt) .map(t -> FiniteDuration.apply(t, TimeUnit.MILLISECONDS)) .orElse(DEFAULT_RECEIVE_TIMEOUT); aggregateResults = Optional.ofNullable(devOpsCommand.getDittoHeaders() .get(AGGREGATE_HEADER)) .map(Boolean::valueOf) .orElse(DEFAULT_AGGREGATE); getContext().setReceiveTimeout(receiveTimeout); }
@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(); }); }
@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(); }); }
final long responseTimeout = Optional.ofNullable(cmd.getDittoHeaders().get("timeout")) .map(Long::parseLong) .orElse(clientActorAskTimeout.toMillis());
final long timeout = Optional.ofNullable(cmd.getDittoHeaders().get("timeout")) .map(Long::parseLong) .orElse(DEFAULT_TIMEOUT_MS);
jsonifiable -> { final Optional<String> topic = Optional.ofNullable(executePiggyback.getDittoHeaders().get(TOPIC_HEADER)) .map(Optional::of) .orElseGet(() -> executePiggyback.getPiggybackCommand() if (topic.isPresent()) { final String isGroupTopicValue = executePiggyback.getDittoHeaders().get(IS_GROUP_TOPIC_HEADER); final boolean isGroupTopic = isGroupTopicValue != null && !"false".equalsIgnoreCase(isGroupTopicValue);
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(); } }