Example usage for org.springframework.messaging.core MessagePostProcessor postProcessMessage

List of usage examples for org.springframework.messaging.core MessagePostProcessor postProcessMessage

Introduction

In this page you can find the example usage for org.springframework.messaging.core MessagePostProcessor postProcessMessage.

Prototype

Message<?> postProcessMessage(Message<?> message);

Source Link

Document

Process the given message.

Usage

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 a v a2 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;
}