INT-1257, INT-1263 Refactoring Message History (work in progress): MessageHistoryWriter's writeHistory method is now static. Added HistoryProvider interface and MessageHistoryBeanPostProcessor.

This commit is contained in:
Mark Fisher
2010-08-25 18:53:56 +00:00
parent 97c292cc56
commit f5f948da4c
23 changed files with 192 additions and 206 deletions

View File

@@ -27,6 +27,7 @@ import javax.jms.Session;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.integration.Message;
import org.springframework.integration.context.MessageHistoryWriter;
import org.springframework.integration.core.MessageBuilder;
import org.springframework.integration.gateway.AbstractMessagingGateway;
import org.springframework.jms.listener.SessionAwareMessageListener;
@@ -222,7 +223,7 @@ public class ChannelPublishingJmsMessageListener extends AbstractMessagingGatewa
Message<?> requestMessage = (object instanceof Message<?>) ?
MessageBuilder.fromMessage((Message<?>) object).copyHeaders(headers).build() :
MessageBuilder.withPayload(object).copyHeaders(headers).build();
requestMessage = this.writeMessageHistory(requestMessage);
requestMessage = MessageHistoryWriter.writeHistory(this, requestMessage);
if (!this.expectReply) {
this.send(requestMessage);
}

View File

@@ -23,6 +23,7 @@ import javax.jms.Destination;
import org.springframework.integration.Message;
import org.springframework.integration.MessagingException;
import org.springframework.integration.context.MessageHistoryWriter;
import org.springframework.integration.core.MessageBuilder;
import org.springframework.integration.core.MessageSource;
import org.springframework.jms.core.JmsTemplate;
@@ -87,7 +88,7 @@ public class JmsDestinationPollingSource extends AbstractJmsTemplateBasedAdapter
MessageBuilder<Object> builder = (convertedObject instanceof Message)
? MessageBuilder.fromMessage((Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject);
convertedMessage = builder.copyHeadersIfAbsent(mappedHeaders).build();
convertedMessage = this.writeMessageHistory(convertedMessage);
convertedMessage = MessageHistoryWriter.writeHistory(this, convertedMessage);
}
catch (Exception e) {
throw new MessagingException(e.getMessage(), e);

View File

@@ -20,6 +20,7 @@ import javax.jms.JMSException;
import org.springframework.core.Ordered;
import org.springframework.integration.Message;
import org.springframework.integration.context.MessageHistoryWriter;
import org.springframework.integration.core.MessageHandler;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessagePostProcessor;
@@ -62,7 +63,7 @@ public class JmsSendingMessageHandler extends AbstractJmsTemplateBasedAdapter im
if (message == null) {
throw new IllegalArgumentException("message must not be null");
}
final Message<?> messageToSend = this.writeMessageHistory(message);
final Message<?> messageToSend = MessageHistoryWriter.writeHistory(this, message);
this.getJmsTemplate().convertAndSend(messageToSend, new MessagePostProcessor() {
public javax.jms.Message postProcessMessage(javax.jms.Message jmsMessage)
throws JMSException {

View File

@@ -10,7 +10,7 @@
xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:task="http://www.springframework.org/schema/task">
<int:gateway id="sampleGateway"
service-interface="org.springframework.integration.jms.config.JmsMessageHistoryTests$SampleGateway"
default-request-channel="outbound-channel">
@@ -19,8 +19,7 @@
<int:channel id="outbound-channel"/>
<int-jms:outbound-channel-adapter id="jmsOutbound" channel="outbound-channel" destination-name="request.queue_c"/>
<int-jms:inbound-channel-adapter id="sampleJmsInboundAdapter" channel="jmsInputChannel" destination-name="request.queue_c"/>
<int:channel id="jmsInputChannel">
@@ -41,6 +40,6 @@
<property name="cacheProducers" value="false"/>
</bean>
<bean id="historyWriter" class="org.springframework.integration.context.MessageHistoryWriter"/>
<bean class="org.springframework.integration.context.MessageHistoryBeanPostProcessor"/>
</beans>