Commit 55079c3a authored by Stephane Nicoll's avatar Stephane Nicoll

Merge branch '2.1.x'

Closes gh-17602
parents 0ff44845 657411d8
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package org.springframework.boot.autoconfigure.jms.activemq; package org.springframework.boot.autoconfigure.jms.activemq;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.jms.ConnectionFactory; import javax.jms.ConnectionFactory;
...@@ -49,43 +48,42 @@ import org.springframework.jms.connection.CachingConnectionFactory; ...@@ -49,43 +48,42 @@ import org.springframework.jms.connection.CachingConnectionFactory;
class ActiveMQConnectionFactoryConfiguration { class ActiveMQConnectionFactoryConfiguration {
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnClass(CachingConnectionFactory.class)
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "false", @ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "false",
matchIfMissing = true) matchIfMissing = true)
static class SimpleConnectionFactoryConfiguration { static class SimpleConnectionFactoryConfiguration {
private final ActiveMQProperties properties; @Bean
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false")
private final List<ActiveMQConnectionFactoryCustomizer> connectionFactoryCustomizers; ActiveMQConnectionFactory jmsConnectionFactory(ActiveMQProperties properties,
ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
SimpleConnectionFactoryConfiguration(ActiveMQProperties properties, return new ActiveMQConnectionFactoryFactory(properties,
ObjectProvider<ActiveMQConnectionFactoryCustomizer> connectionFactoryCustomizers) { factoryCustomizers.orderedStream().collect(Collectors.toList()))
this.properties = properties; .createConnectionFactory(ActiveMQConnectionFactory.class);
this.connectionFactoryCustomizers = connectionFactoryCustomizers.orderedStream()
.collect(Collectors.toList());
} }
@Bean @Configuration(proxyBeanMethods = false)
@ConditionalOnClass(CachingConnectionFactory.class)
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true", @ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true",
matchIfMissing = true) matchIfMissing = true)
CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties) { static class CachingConnectionFactoryConfiguration {
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(createConnectionFactory()); @Bean
connectionFactory.setCacheConsumers(cacheProperties.isConsumers()); @ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "true",
connectionFactory.setCacheProducers(cacheProperties.isProducers()); matchIfMissing = true)
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize()); CachingConnectionFactory cachingJmsConnectionFactory(JmsProperties jmsProperties,
return connectionFactory; ActiveMQProperties properties,
} ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
JmsProperties.Cache cacheProperties = jmsProperties.getCache();
@Bean CachingConnectionFactory connectionFactory = new CachingConnectionFactory(
@ConditionalOnProperty(prefix = "spring.jms.cache", name = "enabled", havingValue = "false") new ActiveMQConnectionFactoryFactory(properties,
ActiveMQConnectionFactory jmsConnectionFactory() { factoryCustomizers.orderedStream().collect(Collectors.toList()))
return createConnectionFactory(); .createConnectionFactory(ActiveMQConnectionFactory.class));
} connectionFactory.setCacheConsumers(cacheProperties.isConsumers());
connectionFactory.setCacheProducers(cacheProperties.isProducers());
connectionFactory.setSessionCacheSize(cacheProperties.getSessionCacheSize());
return connectionFactory;
}
private ActiveMQConnectionFactory createConnectionFactory() {
return new ActiveMQConnectionFactoryFactory(this.properties, this.connectionFactoryCustomizers)
.createConnectionFactory(ActiveMQConnectionFactory.class);
} }
} }
...@@ -95,8 +93,7 @@ class ActiveMQConnectionFactoryConfiguration { ...@@ -95,8 +93,7 @@ class ActiveMQConnectionFactoryConfiguration {
static class PooledConnectionFactoryConfiguration { static class PooledConnectionFactoryConfiguration {
@Bean(destroyMethod = "stop") @Bean(destroyMethod = "stop")
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true", @ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "true")
matchIfMissing = false)
JmsPoolConnectionFactory pooledJmsConnectionFactory(ActiveMQProperties properties, JmsPoolConnectionFactory pooledJmsConnectionFactory(ActiveMQProperties properties,
ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) { ObjectProvider<ActiveMQConnectionFactoryCustomizer> factoryCustomizers) {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactoryFactory(properties, ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactoryFactory(properties,
......
...@@ -24,6 +24,7 @@ import org.messaginghub.pooled.jms.JmsPoolConnectionFactory; ...@@ -24,6 +24,7 @@ import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration; import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -189,6 +190,20 @@ class ActiveMQAutoConfigurationTests { ...@@ -189,6 +190,20 @@ class ActiveMQAutoConfigurationTests {
}); });
} }
@Test
void cachingConnectionFactoryNotOnTheClasspathThenSimpleConnectionFactoryAutoConfigured() {
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
.withPropertyValues("spring.activemq.pool.enabled=false", "spring.jms.cache.enabled=false")
.run((context) -> assertThat(context).hasSingleBean(ActiveMQConnectionFactory.class));
}
@Test
void cachingConnectionFactoryNotOnTheClasspathAndCacheEnabledThenSimpleConnectionFactoryNotConfigured() {
this.contextRunner.withClassLoader(new FilteredClassLoader(CachingConnectionFactory.class))
.withPropertyValues("spring.activemq.pool.enabled=false", "spring.jms.cache.enabled=true")
.run((context) -> assertThat(context).doesNotHaveBean(ActiveMQConnectionFactory.class));
}
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
static class EmptyConfiguration { static class EmptyConfiguration {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment