From 034994ecb33e0db30bee2a7d0014b0255fca1200 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 9 Feb 2011 19:11:28 -0600 Subject: [PATCH] INT-1793 added a 'receive-timeout' attribute to the JMS inbound-channel-adapter element --- .../jms/config/JmsAdapterParserUtils.java | 6 ++-- .../jms/config/spring-integration-jms-2.0.xsd | 8 +++++ .../JmsInboundChannelAdapterParserTests.java | 9 +++++ .../config/jmsInboundWithReceiveTimeout.xml | 33 +++++++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithReceiveTimeout.xml diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsAdapterParserUtils.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsAdapterParserUtils.java index 6f3d819df6..06df385f98 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsAdapterParserUtils.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsAdapterParserUtils.java @@ -57,7 +57,8 @@ abstract class JmsAdapterParserUtils { private static final String[] JMS_TEMPLATE_ATTRIBUTES = { "connection-factory", "message-converter", "destination-resolver", "pub-sub-domain", - "time-to-live", "priority", "delivery-persistent", "explicit-qos-enabled", "acknowledge" + "time-to-live", "priority", "delivery-persistent", "explicit-qos-enabled", "acknowledge", + "receive-timeout" }; @@ -123,8 +124,9 @@ abstract class JmsAdapterParserUtils { IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "priority"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "delivery-persistent"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "explicit-qos-enabled"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "receive-timeout"); Integer acknowledgeMode = parseAcknowledgeMode(element, parserContext); - if (acknowledgeMode != null){ + if (acknowledgeMode != null) { builder.addPropertyValue("sessionAcknowledgeMode", acknowledgeMode); } diff --git a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd index aecb4abb50..45a4945abf 100644 --- a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd +++ b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd @@ -473,6 +473,14 @@ + + + + Timeout for receive calls on the template. + NOTE: for JmsTemplate, 0 means indefinite while -1 means no-wait. + + + diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParserTests.java index f2930dc40d..da43cf4eca 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParserTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsInboundChannelAdapterParserTests.java @@ -151,6 +151,15 @@ public class JmsInboundChannelAdapterParserTests { assertEquals("test [with selector: TestProperty = 'foo']", message.getPayload()); } + @Test + public void pollingAdapterWithReceiveTimeout() { + ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( + "jmsInboundWithReceiveTimeout.xml", this.getClass()); + JmsTemplate jmsTemplate = + TestUtils.getPropertyValue(context.getBean("adapter"), "source.jmsTemplate", JmsTemplate.class); + assertEquals(99, jmsTemplate.getReceiveTimeout()); + } + @Test public void pollingAdapterWithMessageConverter() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithReceiveTimeout.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithReceiveTimeout.xml new file mode 100644 index 0000000000..5d6ccdf7a5 --- /dev/null +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithReceiveTimeout.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + +