From 32ae298845979629c36a8581daa8b1356a0927da Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 10 Oct 2011 16:10:59 -0400 Subject: [PATCH] using content-* props from the converter StringUtils.hasText instead of null check --- .../amqp/inbound/AmqpInboundGateway.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/inbound/AmqpInboundGateway.java b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/inbound/AmqpInboundGateway.java index c0d522a7a3..6a979bd2cd 100644 --- a/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/inbound/AmqpInboundGateway.java +++ b/spring-integration-amqp/src/main/java/org/springframework/integration/amqp/inbound/AmqpInboundGateway.java @@ -23,6 +23,7 @@ import org.springframework.amqp.core.Address; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageListener; import org.springframework.amqp.core.MessagePostProcessor; +import org.springframework.amqp.core.MessageProperties; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer; import org.springframework.amqp.support.converter.MessageConverter; @@ -32,6 +33,7 @@ import org.springframework.integration.amqp.support.DefaultAmqpHeaderMapper; import org.springframework.integration.gateway.MessagingGatewaySupport; import org.springframework.integration.support.MessageBuilder; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; /** * Adapter that receives Messages from an AMQP Queue, converts them into @@ -91,9 +93,21 @@ public class AmqpInboundGateway extends MessagingGatewaySupport { amqpTemplate.convertAndSend(replyTo.getExchangeName(), replyTo.getRoutingKey(), reply.getPayload(), new MessagePostProcessor() { public Message postProcessMessage(Message message) throws AmqpException { - headerMapper.fromHeaders(reply.getHeaders(), message.getMessageProperties()); + MessageProperties messageProperties = message.getMessageProperties(); + String contentEncoding = messageProperties.getContentEncoding(); + long contentLength = messageProperties.getContentLength(); + String contentType = messageProperties.getContentType(); + headerMapper.fromHeaders(reply.getHeaders(), messageProperties); // clear the replyTo from the original message since we are using it now - message.getMessageProperties().setReplyTo(null); + messageProperties.setReplyTo(null); + // reset the content-* properties as determined by the MessageConverter + if (StringUtils.hasText(contentEncoding)) { + messageProperties.setContentEncoding(contentEncoding); + } + messageProperties.setContentLength(contentLength); + if (contentType != null) { + messageProperties.setContentType(contentType); + } return message; } });