From 8e20d845bfe0afeb7c2003269aebafa6000cf867 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Thu, 19 May 2011 17:37:44 -0400 Subject: [PATCH] INT-1910 fixed ChannelPublishingJmsMessageListener to react to Lifecycle events of JmsMessageDrivenEndpoint --- .../ChannelPublishingJmsMessageListener.java | 8 ++++++ .../jms/JmsMessageDrivenEndpoint.java | 4 ++- .../config/JmsInboundGatewayParserTests.java | 6 ++++ .../jms/config/jmsGatewayWithReplyChannel.xml | 28 +++++++++++-------- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java index 14da39e4eb..a4ab50a0cc 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener.java @@ -310,6 +310,14 @@ public class ChannelPublishingJmsMessageListener this.gatewayDelegate.afterPropertiesSet(); } + protected void start(){ + this.gatewayDelegate.start(); + } + + protected void stop(){ + this.gatewayDelegate.stop(); + } + private void copyCorrelationIdFromRequestToReply(javax.jms.Message requestMessage, javax.jms.Message replyMessage) throws JMSException { if (this.correlationKey != null) { if (this.correlationKey.equals("JMSCorrelationID")) { diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsMessageDrivenEndpoint.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsMessageDrivenEndpoint.java index 32e25e16d5..e8916d5eb7 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsMessageDrivenEndpoint.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsMessageDrivenEndpoint.java @@ -63,13 +63,15 @@ public class JmsMessageDrivenEndpoint extends AbstractEndpoint implements Dispos } protected void doStart() { + this.listener.start(); if (!this.listenerContainer.isRunning()) { - this.listenerContainer.start(); + this.listenerContainer.start(); } } protected void doStop() { this.listenerContainer.stop(); + this.listener.stop(); } public void destroy() throws Exception { diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundGatewayParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundGatewayParserTests.java index 46c31e4771..3957b7d7f7 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundGatewayParserTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundGatewayParserTests.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue; import java.util.Properties; +import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import org.junit.Test; @@ -35,6 +36,7 @@ import org.springframework.integration.history.MessageHistory; import org.springframework.integration.jms.JmsMessageDrivenEndpoint; import org.springframework.integration.test.util.TestUtils; import org.springframework.jms.connection.JmsTransactionManager; +import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.listener.AbstractMessageListenerContainer; import org.springframework.jms.support.destination.JmsDestinationAccessor; @@ -343,11 +345,15 @@ public class JmsInboundGatewayParserTests { @Test public void gatewayWithReplyChannel() { + ActiveMqTestUtils.prepare(); ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "jmsGatewayWithReplyChannel.xml", this.getClass()); JmsMessageDrivenEndpoint gateway = (JmsMessageDrivenEndpoint) context.getBean("gateway"); Object replyChannel = TestUtils.getPropertyValue(gateway, "listener.gatewayDelegate.replyChannel"); assertEquals(context.getBean("replies"), replyChannel); + JmsTemplate template = new JmsTemplate(context.getBean(ConnectionFactory.class)); + template.convertAndSend("testDestination", "Hello"); + assertNotNull(template.receive("testReplyDestination")); } } diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithReplyChannel.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithReplyChannel.xml index 4b3a6a96a6..6c3883d220 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithReplyChannel.xml +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithReplyChannel.xml @@ -10,25 +10,31 @@ http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd"> - - - + - - - + + + - - - - + + + + + + + + + + + - +