private static MessageBuilder<Object> initMessageBuilder(final ByteBuffer payload, final ContentType contentType, final MessageHeaders headers) { // reset bytebuffer offset, otherwise payload will not be appended final ByteBuffer payloadWithoutOffset = ByteBuffer.wrap(payload.array()); final MessageBuilder<Object> messageBuilder = MessagesModelFactory.newMessageBuilder(headers) .rawPayload(payloadWithoutOffset); final Charset charset = contentType.getCharsetOption() .map(HttpCharset::nioCharset) .orElse(StandardCharsets.UTF_8); final String payloadString = charset.decode(payload).toString(); if (contentType.mediaType().isText()) { messageBuilder.payload(payloadString); } else if (ContentTypes.APPLICATION_JSON.equals(contentType)) { messageBuilder.payload(JsonFactory.readFrom(payloadString)); } return messageBuilder; }
static void deserialize(final Optional<JsonValue> messagePayloadOptional, final MessageBuilder messageBuilder, final MessageHeaders messageHeaders) { final String contentType = messageHeaders.getContentType().orElse(""); if (messagePayloadOptional.isPresent()) { final JsonValue payload = messagePayloadOptional.get(); if (shouldBeInterpretedAsText(contentType)) { messageBuilder.payload(payload.isString() ? payload.asString() : payload); } else { final String payloadStr = payload.isString() ? payload.asString() : payload.toString(); final byte[] payloadBytes = payloadStr.getBytes(StandardCharsets.UTF_8); MessageCommandSizeValidator.getInstance().ensureValidSize(() -> payloadBytes.length, () -> messageHeaders); messageBuilder.rawPayload(ByteBuffer.wrap(BASE64_DECODER.decode(payloadBytes))); } } }
static void deserialize(final Optional<JsonValue> messagePayloadOptional, final MessageBuilder messageBuilder, final MessageHeaders messageHeaders) { final String contentType = messageHeaders.getContentType().orElse(""); if (messagePayloadOptional.isPresent()) { final JsonValue payload = messagePayloadOptional.get(); if (shouldBeInterpretedAsText(contentType)) { messageBuilder.payload(payload.isString() ? payload.asString() : payload); } else { final String payloadStr = payload.isString() ? payload.asString() : payload.toString(); final byte[] payloadBytes = payloadStr.getBytes(StandardCharsets.UTF_8); MessageCommandSizeValidator.getInstance().ensureValidSize(() -> payloadBytes.length, () -> messageHeaders); messageBuilder.rawPayload(ByteBuffer.wrap(BASE64_DECODER.decode(payloadBytes))); } } }