private static DittoHeaders createHeaders(final Optional<Long> optionalTimeout) { final DittoHeadersBuilder headersBuilder = DittoHeaders.newBuilder().correlationId(UUID.randomUUID().toString()); optionalTimeout.ifPresent(t -> headersBuilder.putHeader(TIMEOUT_PARAMETER, Long.toString(t))); return headersBuilder.build(); }
private DittoHeaders buildDittoHeaders() { return DittoHeaders.newBuilder() .correlationId(batchId) .build(); }
private static DittoHeaders buildDevOpsDittoHeaders(final CharSequence correlationId) { return DittoHeaders.newBuilder() .schemaVersion(JsonSchemaVersion.V_2) .correlationId(correlationId) .build(); }
private void retrievePolicy(final String thePolicyId) { final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId("thingUpdater-sudoRetrievePolicy-" + UUID.randomUUID()) .build(); final SudoRetrievePolicy retrievePolicyCmd = SudoRetrievePolicy.of(thePolicyId, dittoHeaders); policiesShardRegion.tell(retrievePolicyCmd, getSelf()); }
private void retrievePolicy(final String thePolicyId) { final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId("thingUpdater-sudoRetrievePolicy-" + UUID.randomUUID()) .build(); final SudoRetrievePolicy retrievePolicyCmd = SudoRetrievePolicy.of(thePolicyId, dittoHeaders); policiesShardRegion.tell(retrievePolicyCmd, getSelf()); }
private CommandResponse unfixCorrelationId(final CommandResponse response) { final String correlationId = response.getDittoHeaders() .getCorrelationId() .flatMap(s -> decodeCommandCorrelationId(s).getValue(ORIGINAL_CORRELATION_ID)) .map(JsonValue::asString) .orElse(null); final DittoHeaders dittoHeaders = response.getDittoHeaders().toBuilder() .correlationId(correlationId) .build(); return response.setDittoHeaders(dittoHeaders); }
/** * Creates a sudo command for retrieving a policy. * * @param policyId the policyId. * @return the created command. */ static SudoRetrievePolicy sudoRetrievePolicy(final String policyId) { return SudoRetrievePolicy.of(policyId, DittoHeaders.newBuilder().correlationId(getCorrelationId(policyId)).build()); }
private void reconnect(final String persistenceId) { // yes, this is intentionally a RetrieveConnectionStatus instead of OpenConnection. // ConnectionActor manages its own reconnection on recovery. // OpenConnection would set desired state to OPEN even for deleted connections. if (persistenceId.startsWith(ConnectionActor.PERSISTENCE_ID_PREFIX)) { final String connectionId = persistenceId.substring(ConnectionActor.PERSISTENCE_ID_PREFIX.length()); final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId(toCorrelationId(connectionId)) .build(); log.debug("Sending a reconnect for Connection {}", connectionId); connectionShardRegion.tell(RetrieveConnectionStatus.of(connectionId, dittoHeaders), getSelf()); } else { log.debug("Unknown persistence id '{}', ignoring.", persistenceId); } }
private void reconnect(final String persistenceId) { // yes, this is intentionally a RetrieveConnectionStatus instead of OpenConnection. // ConnectionActor manages its own reconnection on recovery. // OpenConnection would set desired state to OPEN even for deleted connections. if (persistenceId.startsWith(ConnectionActor.PERSISTENCE_ID_PREFIX)) { final String connectionId = persistenceId.substring(ConnectionActor.PERSISTENCE_ID_PREFIX.length()); final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId(toCorrelationId(connectionId)) .build(); log.debug("Sending a reconnect for Connection {}", connectionId); connectionShardRegion.tell(RetrieveConnectionStatus.of(connectionId, dittoHeaders), getSelf()); } else { log.debug("Unknown persistence id '{}', ignoring.", persistenceId); } }
private static DittoRuntimeException buildMissingJwtException(final String correlationId) { return GatewayAuthenticationFailedException .newBuilder("The JWT was missing.") .dittoHeaders(DittoHeaders.newBuilder().correlationId(correlationId).build()) .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(); }); }
private void tellCommandAsDryRun(final Command command) { final String correlationId = encodeCorrelationId(command.getDittoHeaders()); final DittoHeadersBuilder dittoHeadersBuilder = command.getDittoHeaders() .toBuilder() .correlationId(correlationId); commands.put(correlationId, command.setDittoHeaders(dittoHeadersBuilder.build())); pendingCommands.add(correlationId); final Command commandAsDryRun = command.setDittoHeaders(dittoHeadersBuilder.dryRun(true).build()); conciergeForwarder.tell(commandAsDryRun, getSelf()); }
private static DittoRuntimeException buildAuthenticationProviderUnavailableException(final String correlationId, final Throwable cause) { return GatewayAuthenticationProviderUnavailableException .newBuilder() .dittoHeaders(DittoHeaders.newBuilder().correlationId(correlationId).build()) .cause(cause) .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(); }); }
private static DittoRuntimeException buildJwtUnauthorizedException(final String correlationId) { return GatewayAuthenticationFailedException.newBuilder("The JWT could not be verified") .description("Check if your token is not expired and set the token accordingly.") .dittoHeaders(DittoHeaders.newBuilder().correlationId(correlationId).build()) .build(); }
private DittoHeaders buildDittoHeaders(final AuthorizationContext authorizationContext, final Integer version, final String correlationId, final RequestContext ctx, @Nullable final String liveParam, final CustomHeadersHandler.RequestType requestType) { final DittoHeadersBuilder builder = DittoHeaders.newBuilder(); final Map<String, String> externalHeadersMap = getFilteredExternalHeaders(ctx.getRequest()); builder.putHeaders(externalHeadersMap); final JsonSchemaVersion jsonSchemaVersion = JsonSchemaVersion.forInt(version) .orElseThrow(() -> CommandNotSupportedException.newBuilder(version).build()); builder.authorizationContext(authorizationContext) .schemaVersion(jsonSchemaVersion) .correlationId(correlationId); authorizationContext.getFirstAuthorizationSubject().map(AuthorizationSubject::getId).ifPresent(builder::source); if (liveParam != null) { // once the "live" query param was set - no matter what the value was - use live // channel builder.channel(TopicPath.Channel.LIVE.getName()); } final DittoHeaders dittoDefaultHeaders = builder.build(); return handleCustomHeaders(correlationId, ctx, requestType, authorizationContext, dittoDefaultHeaders); }
private void retrieveThing() { final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId("thingUpdater-sudoRetrieveThing-" + UUID.randomUUID()) .build(); final SudoRetrieveThing sudoRetrieveThingCmd = SudoRetrieveThing.withOriginalSchemaVersion(thingId, dittoHeaders); final String cmdType = sudoRetrieveThingCmd.getType(); final JsonSchemaVersion implementedSchemaVersion = sudoRetrieveThingCmd.getImplementedSchemaVersion(); final Predicate<JsonField> regularOrSpecialFields = FieldType.regularOrSpecial(); final JsonObject cmdJsonObject = sudoRetrieveThingCmd.toJson(implementedSchemaVersion, regularOrSpecialFields); final Object messageEnvelope = ShardedMessageEnvelope.of(thingId, cmdType, cmdJsonObject, dittoHeaders); // Send a message directly to the Things Shard Region. thingsShardRegion.tell(messageEnvelope, getSelf()); }
/** * Creates a sudo command for retrieving a thing. * * @param thingId the thingId. * @return the created command. */ static SudoRetrieveThing sudoRetrieveThing(final String thingId) { LOGGER.debug("Sending SudoRetrieveThing for Thing with ID <{}>", thingId); final JsonFieldSelector jsonFieldSelector = JsonFieldSelector.newInstance( Thing.JsonFields.ID.getPointer(), Thing.JsonFields.REVISION.getPointer(), Thing.JsonFields.ACL.getPointer(), Thing.JsonFields.POLICY_ID.getPointer()); return SudoRetrieveThing.withOriginalSchemaVersion(thingId, jsonFieldSelector, DittoHeaders.newBuilder().correlationId(getCorrelationId(thingId)).build()); }
private void retrieveThing() { final DittoHeaders dittoHeaders = DittoHeaders.newBuilder() .correlationId("thingUpdater-sudoRetrieveThing-" + UUID.randomUUID()) .build(); final SudoRetrieveThing sudoRetrieveThingCmd = SudoRetrieveThing.withOriginalSchemaVersion(thingId, dittoHeaders); final String cmdType = sudoRetrieveThingCmd.getType(); final JsonSchemaVersion implementedSchemaVersion = sudoRetrieveThingCmd.getImplementedSchemaVersion(); final Predicate<JsonField> regularOrSpecialFields = FieldType.regularOrSpecial(); final JsonObject cmdJsonObject = sudoRetrieveThingCmd.toJson(implementedSchemaVersion, regularOrSpecialFields); final Object messageEnvelope = ShardedMessageEnvelope.of(thingId, cmdType, cmdJsonObject, dittoHeaders); // Send a message directly to the Things Shard Region. thingsShardRegion.tell(messageEnvelope, getSelf()); }
.orElse(jmsCorrelationId); dittoHeadersBuilder.correlationId(correlationId); LogUtil.enhanceLogWithCorrelationId(log, correlationId); log.debug("received public command: {}", jsonifiableAdaptable.toJsonString());