Example usage for org.springframework.messaging.converter MessageConverter toMessage

List of usage examples for org.springframework.messaging.converter MessageConverter toMessage

Introduction

In this page you can find the example usage for org.springframework.messaging.converter MessageConverter toMessage.

Prototype

@Nullable
Message<?> toMessage(Object payload, @Nullable MessageHeaders headers);

Source Link

Document

Create a Message whose payload is the result of converting the given payload Object to serialized form.

Usage

From source file:org.springframework.cloud.aws.messaging.support.converter.ObjectMessageConverterTest.java

@Test
public void testToMessageAndFromMessage() throws Exception {
    String content = "stringwithspecialcharsa8";
    MySerializableClass sourceMessage = new MySerializableClass(content);
    MessageConverter messageConverter = new ObjectMessageConverter();
    Message<?> message = messageConverter.toMessage(sourceMessage, getMessageHeaders("UTF-8"));
    assertTrue(Base64.isBase64(message.getPayload().toString().getBytes("UTF-8")));
    MySerializableClass result = (MySerializableClass) messageConverter.fromMessage(message,
            MySerializableClass.class);
    assertEquals(content, result.getContent());
}

From source file:org.springframework.cloud.aws.messaging.support.converter.ObjectMessageConverterTest.java

@Test
public void testToMessageAndFromMessageWithCustomEncoding() throws Exception {
    String content = "stringwithspecialcharsa8";
    MySerializableClass sourceMessage = new MySerializableClass(content);
    MessageConverter messageConverter = new ObjectMessageConverter("ISO-8859-1");
    Message<?> message = messageConverter.toMessage(sourceMessage, getMessageHeaders("ISO-8859-1"));
    assertTrue(Base64.isBase64(message.getPayload().toString().getBytes("ISO-8859-1")));
    MySerializableClass result = (MySerializableClass) messageConverter.fromMessage(message,
            MySerializableClass.class);
    assertEquals(content, result.getContent());
}

From source file:org.springframework.cloud.stream.binder.kafka.streams.KafkaStreamsMessageConversionDelegate.java

/**
 * Serialize {@link KStream} records on outbound based on contentType.
 *
 * @param outboundBindTarget outbound KStream target
 * @return serialized KStream/*from ww  w.  jav  a 2  s . com*/
 */
@SuppressWarnings("rawtypes")
public KStream serializeOnOutbound(KStream<?, ?> outboundBindTarget) {
    String contentType = this.kstreamBindingInformationCatalogue.getContentType(outboundBindTarget);
    MessageConverter messageConverter = this.compositeMessageConverterFactory
            .getMessageConverterForAllRegistered();

    return outboundBindTarget.mapValues((v) -> {
        Message<?> message = v instanceof Message<?> ? (Message<?>) v : MessageBuilder.withPayload(v).build();
        Map<String, Object> headers = new HashMap<>(message.getHeaders());
        if (!StringUtils.isEmpty(contentType)) {
            headers.put(MessageHeaders.CONTENT_TYPE, contentType);
        }
        MessageHeaders messageHeaders = new MessageHeaders(headers);
        return messageConverter.toMessage(message.getPayload(), messageHeaders).getPayload();
    });
}

From source file:org.springframework.messaging.core.AbstractMessageSendingTemplate.java

/**
 * Convert the given Object to serialized form, possibly using a
 * {@link MessageConverter}, wrap it as a message with the given
 * headers and apply the given post processor.
 * @param payload the Object to use as payload
 * @param headers headers for the message to send
 * @param postProcessor the post processor to apply to the message
 * @return the converted message//from w  w w  .  j  av a  2 s  .  com
 */
protected Message<?> doConvert(Object payload, @Nullable Map<String, Object> headers,
        @Nullable MessagePostProcessor postProcessor) {

    MessageHeaders messageHeaders = null;
    Object conversionHint = (headers != null ? headers.get(CONVERSION_HINT_HEADER) : null);

    Map<String, Object> headersToUse = processHeadersToSend(headers);
    if (headersToUse != null) {
        if (headersToUse instanceof MessageHeaders) {
            messageHeaders = (MessageHeaders) headersToUse;
        } else {
            messageHeaders = new MessageHeaders(headersToUse);
        }
    }

    MessageConverter converter = getMessageConverter();
    Message<?> message = (converter instanceof SmartMessageConverter
            ? ((SmartMessageConverter) converter).toMessage(payload, messageHeaders, conversionHint)
            : converter.toMessage(payload, messageHeaders));
    if (message == null) {
        String payloadType = payload.getClass().getName();
        Object contentType = (messageHeaders != null ? messageHeaders.get(MessageHeaders.CONTENT_TYPE) : null);
        throw new MessageConversionException("Unable to convert payload with type='" + payloadType
                + "', contentType='" + contentType + "', converter=[" + getMessageConverter() + "]");
    }
    if (postProcessor != null) {
        message = postProcessor.postProcessMessage(message);
    }
    return message;
}