diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
index 85e3fb9762..b9ec0d79ee 100644
--- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
+++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/config/JmsMessageDrivenEndpointParser.java
@@ -107,6 +107,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
"org.springframework.jms.listener.DefaultMessageListenerContainer");
String destinationAttribute = this.expectReply ? "request-destination" : "destination";
String destinationNameAttribute = this.expectReply ? "request-destination-name" : "destination-name";
+ String pubSubDomainAttribute = this.expectReply ? "request-pub-sub-domain" : "pub-sub-domain";
String destination = element.getAttribute(destinationAttribute);
String destinationName = element.getAttribute(destinationNameAttribute);
boolean hasDestination = StringUtils.hasText(destination);
@@ -123,8 +124,7 @@ public class JmsMessageDrivenEndpointParser extends AbstractSingleBeanDefinition
}
else {
builder.addPropertyValue("destinationName", destinationName);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element,
- "request-pub-sub-domain", "pubSubDomain");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, pubSubDomainAttribute, "pubSubDomain");
}
Integer acknowledgeMode = JmsAdapterParserUtils.parseAcknowledgeMode(element, parserContext);
if (acknowledgeMode != null) {
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 de26d90c29..d8db2f87d8 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
@@ -33,6 +33,7 @@ import org.springframework.integration.core.Message;
import org.springframework.integration.jms.JmsMessageDrivenEndpoint;
import org.springframework.jms.connection.JmsTransactionManager;
import org.springframework.jms.listener.AbstractMessageListenerContainer;
+import org.springframework.jms.support.destination.JmsDestinationAccessor;
/**
* @author Mark Fisher
@@ -287,4 +288,13 @@ public class JmsInboundGatewayParserTests {
assertEquals(false, accessor.getPropertyValue("explicitQosEnabledForReplies"));
}
+ @Test
+ public void gatewayWithPubSubDomain() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "jmsGatewayWithPubSubDomain.xml", this.getClass());
+ JmsMessageDrivenEndpoint endpoint = context.getBean("gateway", JmsMessageDrivenEndpoint.class);
+ JmsDestinationAccessor container = (JmsDestinationAccessor) new DirectFieldAccessor(endpoint).getPropertyValue("listenerContainer");
+ assertEquals(Boolean.TRUE, container.isPubSubDomain());
+ }
+
}
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
index 775f6eda2b..0c1b7d5f03 100644
--- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageDrivenChannelAdapterParserTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2009 the original author or authors.
+ * Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,9 +21,12 @@ import static org.junit.Assert.assertNotNull;
import org.junit.Test;
+import org.springframework.beans.DirectFieldAccessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.channel.PollableChannel;
import org.springframework.integration.core.Message;
+import org.springframework.integration.jms.JmsMessageDrivenEndpoint;
+import org.springframework.jms.support.destination.JmsDestinationAccessor;
/**
* @author Mark Fisher
@@ -42,4 +45,13 @@ public class JmsMessageDrivenChannelAdapterParserTests {
assertEquals("test [with selector: TestProperty = 'foo']", message.getPayload());
}
+ @Test
+ public void adapterWithPubSubDomain() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "jmsInboundWithPubSubDomain.xml", this.getClass());
+ JmsMessageDrivenEndpoint endpoint = context.getBean("messageDrivenAdapter", JmsMessageDrivenEndpoint.class);
+ JmsDestinationAccessor container = (JmsDestinationAccessor) new DirectFieldAccessor(endpoint).getPropertyValue("listenerContainer");
+ assertEquals(Boolean.TRUE, container.isPubSubDomain());
+ }
+
}
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithPubSubDomain.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithPubSubDomain.xml
new file mode 100644
index 0000000000..6b095525db
--- /dev/null
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithPubSubDomain.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithPubSubDomain.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithPubSubDomain.xml
new file mode 100644
index 0000000000..a9918886fe
--- /dev/null
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithPubSubDomain.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+