static <T> void serialize(final Message<T> message, final JsonObjectBuilder messageBuilder, final Predicate<JsonField> predicate) { final Optional<ByteBuffer> rawPayloadOptional = message.getRawPayload(); final Optional<T> payloadOptional = message.getPayload(); if (rawPayloadOptional.isPresent() && !payloadOptional.filter(p -> p instanceof JsonValue).isPresent()) { final ByteBuffer rawPayload = rawPayloadOptional.get(); final String encodedString; if (shouldBeInterpretedAsText(message.getContentType().orElse(""))) { encodedString = new String(rawPayload.array()); } else { final ByteBuffer base64Encoded = BASE64_ENCODER.encode(rawPayload); encodedString = new String(base64Encoded.array(), StandardCharsets.UTF_8); } injectMessagePayload(messageBuilder, predicate, encodedString, message.getHeaders()); } else if (payloadOptional.isPresent()) { final T payload = payloadOptional.get(); if (payload instanceof JsonValue) { MessageCommandSizeValidator.getInstance().ensureValidSize(() -> ((JsonValue) payload).toString().length(), message::getHeaders); messageBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE_PAYLOAD, (JsonValue) payload, predicate); } else { injectMessagePayload(messageBuilder, predicate, payload.toString(), message.getHeaders()); } } }
static <T> void serialize(final Message<T> message, final JsonObjectBuilder messageBuilder, final Predicate<JsonField> predicate) { final Optional<ByteBuffer> rawPayloadOptional = message.getRawPayload(); final Optional<T> payloadOptional = message.getPayload(); if (rawPayloadOptional.isPresent() && !payloadOptional.filter(p -> p instanceof JsonValue).isPresent()) { final ByteBuffer rawPayload = rawPayloadOptional.get(); final String encodedString; if (shouldBeInterpretedAsText(message.getContentType().orElse(""))) { encodedString = new String(rawPayload.array()); } else { final ByteBuffer base64Encoded = BASE64_ENCODER.encode(rawPayload); encodedString = new String(base64Encoded.array(), StandardCharsets.UTF_8); } injectMessagePayload(messageBuilder, predicate, encodedString, message.getHeaders()); } else if (payloadOptional.isPresent()) { final T payload = payloadOptional.get(); if (payload instanceof JsonValue) { MessageCommandSizeValidator.getInstance().ensureValidSize(() -> ((JsonValue) payload).toString().length(), message::getHeaders); messageBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE_PAYLOAD, (JsonValue) payload, predicate); } else { injectMessagePayload(messageBuilder, predicate, payload.toString(), message.getHeaders()); } } }
/** * Creates an @{SendMessageAcceptedResponse} for a message command if it is fire-and-forget. * * @param command The message command. * @return The HTTP response if the message command is fire-and-forget, {@code Optional.empty()} otherwise. */ public static Optional<SendMessageAcceptedResponse> getResponseForFireAndForgetMessage( final MessageCommand<?, ?> command) { if (isFireAndForgetMessage(command)) { return Optional.of( SendMessageAcceptedResponse.newInstance(command.getThingId(), command.getMessage().getHeaders(), command.getDittoHeaders())); } else { return Optional.empty(); } }
/** * Creates an @{SendMessageAcceptedResponse} for a message command if it is fire-and-forget. * * @param command The message command. * @return The HTTP response if the message command is fire-and-forget, {@code Optional.empty()} otherwise. */ public static Optional<SendMessageAcceptedResponse> getResponseForFireAndForgetMessage( final MessageCommand<?, ?> command) { if (isFireAndForgetMessage(command)) { return Optional.of( SendMessageAcceptedResponse.newInstance(command.getThingId(), command.getMessage().getHeaders(), command.getDittoHeaders())); } else { return Optional.empty(); } }
/** * Creates an @{SendMessageAcceptedResponse} for a message command if it is fire-and-forget. * * @param command The message command. * @return The HTTP response if the message command is fire-and-forget, {@code Optional.empty()} otherwise. */ private static Optional<SendMessageAcceptedResponse> getResponseForFireAndForgetMessage( final MessageCommand<?, ?> command) { if (isFireAndForgetMessage(command)) { return Optional.of( SendMessageAcceptedResponse.newInstance(command.getThingId(), command.getMessage().getHeaders(), command.getDittoHeaders())); } else { return Optional.empty(); } }
@Override public SendMessageAcceptedResponse setDittoHeaders(final DittoHeaders dittoHeaders) { return newInstance(getThingId(), getMessage().getHeaders(), getStatusCode(), dittoHeaders); }
@Override public SendMessageAcceptedResponse setDittoHeaders(final DittoHeaders dittoHeaders) { return newInstance(getThingId(), getMessage().getHeaders(), getStatusCode(), dittoHeaders); }
@Override protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion, final Predicate<JsonField> predicate) { jsonObjectBuilder.set(MessageCommand.JsonFields.JSON_THING_ID, getThingId(), predicate); final JsonObjectBuilder messageBuilder = JsonFactory.newObjectBuilder(); final JsonObject headersObject = message.getHeaders().toJson(); messageBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE_HEADERS, headersObject, predicate); MessagePayloadSerializer.serialize(message, messageBuilder, predicate); final JsonObject messageObject = messageBuilder.build(); jsonObjectBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE, messageObject, predicate); }
@Override protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion, final Predicate<JsonField> predicate) { jsonObjectBuilder.set(MessageCommand.JsonFields.JSON_THING_ID, getThingId(), predicate); final JsonObjectBuilder messageBuilder = JsonFactory.newObjectBuilder(); final JsonObject headersObject = message.getHeaders().toJson(); messageBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE_HEADERS, headersObject, predicate); MessagePayloadSerializer.serialize(message, messageBuilder, predicate); final JsonObject messageObject = messageBuilder.build(); jsonObjectBuilder.set(MessageCommand.JsonFields.JSON_MESSAGE, messageObject, predicate); }
@Override protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion, final Predicate<JsonField> predicate) { jsonObjectBuilder.set(MessageCommandResponse.JsonFields.JSON_THING_ID, getThingId(), predicate); final JsonObjectBuilder messageBuilder = JsonFactory.newObjectBuilder(); final JsonObject messageHeadersObject = message.getHeaders().toJson(); messageBuilder.set(MessageCommandResponse.JsonFields.JSON_MESSAGE_HEADERS, messageHeadersObject, predicate); MessagePayloadSerializer.serialize(message, messageBuilder, predicate); final JsonObject messageObject = messageBuilder.build(); jsonObjectBuilder.set(MessageCommandResponse.JsonFields.JSON_MESSAGE, messageObject, predicate); }
@Override protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion, final Predicate<JsonField> predicate) { jsonObjectBuilder.set(MessageCommandResponse.JsonFields.JSON_THING_ID, getThingId(), predicate); final JsonObjectBuilder messageBuilder = JsonFactory.newObjectBuilder(); final JsonObject messageHeadersObject = message.getHeaders().toJson(); messageBuilder.set(MessageCommandResponse.JsonFields.JSON_MESSAGE_HEADERS, messageHeadersObject, predicate); MessagePayloadSerializer.serialize(message, messageBuilder, predicate); final JsonObject messageObject = messageBuilder.build(); jsonObjectBuilder.set(MessageCommandResponse.JsonFields.JSON_MESSAGE, messageObject, predicate); }
final DittoHeadersBuilder allHeadersBuilder = DittoHeaders.newBuilder(message.getHeaders()); allHeadersBuilder.putHeaders(dittoHeaders); final Map<String, String> externalHeaders = headerTranslator.toExternalHeaders(allHeadersBuilder.build());
final DittoHeadersBuilder allHeadersBuilder = DittoHeaders.newBuilder(message.getHeaders()); allHeadersBuilder.putHeaders(dittoHeaders); final Map<String, String> externalHeaders = headerTranslator.toExternalHeaders(allHeadersBuilder.build());