From c74e56d185c543bf2ff6473da983c2f9190a8d50 Mon Sep 17 00:00:00 2001 From: Maciej Walkowiak Date: Mon, 1 Dec 2014 13:38:18 +0100 Subject: [PATCH] Apply pubSubDomain property to ContainerFactory Previously, tuning the pubSubDomain flag only impacted the created JmsTemplate leaving any default listeners with the default settings. If no default JmsListenerContainerFactory is defined, the created one is using that property as well now. --- .../jms/JmsAnnotationDrivenConfiguration.java | 4 ++++ .../jms/JmsAutoConfigurationTests.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java index 5e6d69dafcb..26ec7784c64 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/JmsAnnotationDrivenConfiguration.java @@ -48,12 +48,16 @@ class JmsAnnotationDrivenConfiguration { @Autowired(required = false) private PlatformTransactionManager transactionManager; + @Autowired + private JmsProperties properties; + @Bean @ConditionalOnMissingBean(name = "jmsListenerContainerFactory") public DefaultJmsListenerContainerFactory jmsListenerContainerFactory( ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); + factory.setPubSubDomain(properties.isPubSubDomain()); if (this.transactionManager != null) { factory.setTransactionManager(this.transactionManager); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java index a8015f03f26..09d2ff06063 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/JmsAutoConfigurationTests.java @@ -34,13 +34,16 @@ import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerConfigUtils; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.config.SimpleJmsListenerContainerFactory; +import org.springframework.jms.config.JmsListenerEndpoint; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.listener.DefaultMessageListenerContainer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; /** * Tests for {@link JmsAutoConfiguration}. @@ -148,6 +151,17 @@ public class JmsAutoConfigurationTests { assertTrue(jmsTemplate.isPubSubDomain()); } + @Test + public void testPubSubDomainActive() { + load(TestConfiguration.class, "spring.jms.pubSubDomain:true"); + JmsTemplate jmsTemplate = this.context.getBean(JmsTemplate.class); + DefaultMessageListenerContainer defaultMessageListenerContainer = this.context + .getBean(DefaultJmsListenerContainerFactory.class) + .createListenerContainer(mock(JmsListenerEndpoint.class)); + assertTrue(jmsTemplate.isPubSubDomain()); + assertTrue(defaultMessageListenerContainer.isPubSubDomain()); + } + @Test public void testPubSubDomainOverride() { load(TestConfiguration.class, "spring.jms.pubSubDomain:false");