From ef865521f87c1b77fb050ac71212cdf7fd35f7b8 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 2 Sep 2010 20:54:54 +0000 Subject: [PATCH] JmsSendingMessageHandler only writes history when enabled (implements TrackableComponent) --- .../jms/JmsSendingMessageHandler.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java index b2e4ebc4d9..2dc14926dc 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsSendingMessageHandler.java @@ -22,23 +22,23 @@ import org.springframework.core.Ordered; import org.springframework.integration.Message; import org.springframework.integration.core.MessageHandler; import org.springframework.integration.history.MessageHistory; +import org.springframework.integration.history.TrackableComponent; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessagePostProcessor; /** - * A MessageConsumer that sends the converted Message payload within - * a JMS Message. + * A MessageConsumer that sends the converted Message payload within a JMS Message. * * @author Mark Fisher * @author Oleg Zhurakousky */ -public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter implements MessageHandler, Ordered { +public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter implements MessageHandler, TrackableComponent, Ordered { private volatile int order = Ordered.LOWEST_PRECEDENCE; - public String getComponentType(){ - return "jms:outbound-channel-adapter"; - } + private volatile boolean shouldTrack; + + public JmsSendingMessageHandler(JmsTemplate jmsTemplate) { super(jmsTemplate); } @@ -51,6 +51,14 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im super(); } + public void setShouldTrack(boolean shouldTrack) { + this.shouldTrack = shouldTrack; + } + + public String getComponentType() { + return "jms:outbound-channel-adapter"; + } + public void setOrder(int order) { this.order = order; } @@ -63,17 +71,17 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im if (message == null) { throw new IllegalArgumentException("message must not be null"); } - final Message messageToSend = MessageHistory.write(message, this); + final Message messageToSend = (this.shouldTrack) ? MessageHistory.write(message, this) : message; Object objectToSend = messageToSend; - if (this.shouldExtractPayload()){ + if (this.shouldExtractPayload()) { objectToSend = messageToSend.getPayload(); } this.getJmsTemplate().convertAndSend(objectToSend, new MessagePostProcessor() { - public javax.jms.Message postProcessMessage(javax.jms.Message jmsMessage) - throws JMSException { + public javax.jms.Message postProcessMessage(javax.jms.Message jmsMessage) throws JMSException { getHeaderMapper().fromHeaders(messageToSend.getHeaders(), jmsMessage); return jmsMessage; } }); } + }