From 5a854aec2431355ace137ae7eca796e92ca7272b Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 27 Jul 2010 12:29:34 +0000 Subject: [PATCH] INT-1274 JMS inbound adapter parsing now properly handles 'request-pub-sub-domain' for and 'pub-sub-domain' for --- .../JmsMessageDrivenEndpointParser.java | 4 +-- .../config/JmsInboundGatewayParserTests.java | 10 +++++++ ...essageDrivenChannelAdapterParserTests.java | 14 ++++++++- .../jms/config/jmsGatewayWithPubSubDomain.xml | 30 +++++++++++++++++++ .../jms/config/jmsInboundWithPubSubDomain.xml | 30 +++++++++++++++++++ 5 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsGatewayWithPubSubDomain.xml create mode 100644 spring-integration-jms/src/test/java/org/springframework/integration/jms/config/jmsInboundWithPubSubDomain.xml 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 @@ + + + + + + + + + + + + + + + + + +