Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
1661da87
Commit
1661da87
authored
Jul 22, 2019
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Configure ActiveMQConnectionFactory properly without spring-jms"
See gh-17531
parent
77b52b99
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
68 deletions
+27
-68
ActiveMQConnectionFactoryConfiguration.java
.../jms/activemq/ActiveMQConnectionFactoryConfiguration.java
+12
-15
ActiveMQAutoConfigurationTests.java
...onfigure/jms/activemq/ActiveMQAutoConfigurationTests.java
+15
-0
ActiveMQAutoConfigurationTestsWithoutCachingConnectionFactoryTests.java
...nfigurationTestsWithoutCachingConnectionFactoryTests.java
+0
-53
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQConnectionFactoryConfiguration.java
View file @
1661da87
...
@@ -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
;
...
@@ -48,12 +47,6 @@ import org.springframework.jms.connection.CachingConnectionFactory;
...
@@ -48,12 +47,6 @@ import org.springframework.jms.connection.CachingConnectionFactory;
@ConditionalOnMissingBean
(
ConnectionFactory
.
class
)
@ConditionalOnMissingBean
(
ConnectionFactory
.
class
)
class
ActiveMQConnectionFactoryConfiguration
{
class
ActiveMQConnectionFactoryConfiguration
{
private
static
ActiveMQConnectionFactory
createConnectionFactory
(
ActiveMQProperties
properties
,
List
<
ActiveMQConnectionFactoryCustomizer
>
connectionFactoryCustomizers
)
{
return
new
ActiveMQConnectionFactoryFactory
(
properties
,
connectionFactoryCustomizers
)
.
createConnectionFactory
(
ActiveMQConnectionFactory
.
class
);
}
@Configuration
@Configuration
@ConditionalOnProperty
(
prefix
=
"spring.activemq.pool"
,
name
=
"enabled"
,
havingValue
=
"false"
,
@ConditionalOnProperty
(
prefix
=
"spring.activemq.pool"
,
name
=
"enabled"
,
havingValue
=
"false"
,
matchIfMissing
=
true
)
matchIfMissing
=
true
)
...
@@ -62,9 +55,10 @@ class ActiveMQConnectionFactoryConfiguration {
...
@@ -62,9 +55,10 @@ class ActiveMQConnectionFactoryConfiguration {
@Bean
@Bean
@ConditionalOnProperty
(
prefix
=
"spring.jms.cache"
,
name
=
"enabled"
,
havingValue
=
"false"
)
@ConditionalOnProperty
(
prefix
=
"spring.jms.cache"
,
name
=
"enabled"
,
havingValue
=
"false"
)
public
ActiveMQConnectionFactory
jmsConnectionFactory
(
ActiveMQProperties
properties
,
public
ActiveMQConnectionFactory
jmsConnectionFactory
(
ActiveMQProperties
properties
,
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
connectionFactoryCustomizers
)
{
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
factoryCustomizers
)
{
return
createConnectionFactory
(
properties
,
return
new
ActiveMQConnectionFactoryFactory
(
properties
,
connectionFactoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
()));
factoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
()))
.
createConnectionFactory
(
ActiveMQConnectionFactory
.
class
);
}
}
@ConditionalOnClass
(
CachingConnectionFactory
.
class
)
@ConditionalOnClass
(
CachingConnectionFactory
.
class
)
...
@@ -77,10 +71,12 @@ class ActiveMQConnectionFactoryConfiguration {
...
@@ -77,10 +71,12 @@ class ActiveMQConnectionFactoryConfiguration {
matchIfMissing
=
true
)
matchIfMissing
=
true
)
public
CachingConnectionFactory
cachingJmsConnectionFactory
(
JmsProperties
jmsProperties
,
public
CachingConnectionFactory
cachingJmsConnectionFactory
(
JmsProperties
jmsProperties
,
ActiveMQProperties
properties
,
ActiveMQProperties
properties
,
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
connectionF
actoryCustomizers
)
{
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
f
actoryCustomizers
)
{
JmsProperties
.
Cache
cacheProperties
=
jmsProperties
.
getCache
();
JmsProperties
.
Cache
cacheProperties
=
jmsProperties
.
getCache
();
CachingConnectionFactory
connectionFactory
=
new
CachingConnectionFactory
(
createConnectionFactory
(
CachingConnectionFactory
connectionFactory
=
new
CachingConnectionFactory
(
properties
,
connectionFactoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
())));
new
ActiveMQConnectionFactoryFactory
(
properties
,
factoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
()))
.
createConnectionFactory
(
ActiveMQConnectionFactory
.
class
));
connectionFactory
.
setCacheConsumers
(
cacheProperties
.
isConsumers
());
connectionFactory
.
setCacheConsumers
(
cacheProperties
.
isConsumers
());
connectionFactory
.
setCacheProducers
(
cacheProperties
.
isProducers
());
connectionFactory
.
setCacheProducers
(
cacheProperties
.
isProducers
());
connectionFactory
.
setSessionCacheSize
(
cacheProperties
.
getSessionCacheSize
());
connectionFactory
.
setSessionCacheSize
(
cacheProperties
.
getSessionCacheSize
());
...
@@ -99,8 +95,9 @@ class ActiveMQConnectionFactoryConfiguration {
...
@@ -99,8 +95,9 @@ class ActiveMQConnectionFactoryConfiguration {
@ConditionalOnProperty
(
prefix
=
"spring.activemq.pool"
,
name
=
"enabled"
,
havingValue
=
"true"
)
@ConditionalOnProperty
(
prefix
=
"spring.activemq.pool"
,
name
=
"enabled"
,
havingValue
=
"true"
)
public
JmsPoolConnectionFactory
pooledJmsConnectionFactory
(
ActiveMQProperties
properties
,
public
JmsPoolConnectionFactory
pooledJmsConnectionFactory
(
ActiveMQProperties
properties
,
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
factoryCustomizers
)
{
ObjectProvider
<
ActiveMQConnectionFactoryCustomizer
>
factoryCustomizers
)
{
ActiveMQConnectionFactory
connectionFactory
=
createConnectionFactory
(
properties
,
ActiveMQConnectionFactory
connectionFactory
=
new
ActiveMQConnectionFactoryFactory
(
properties
,
factoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
()));
factoryCustomizers
.
orderedStream
().
collect
(
Collectors
.
toList
()))
.
createConnectionFactory
(
ActiveMQConnectionFactory
.
class
);
return
new
JmsPoolConnectionFactoryFactory
(
properties
.
getPool
())
return
new
JmsPoolConnectionFactoryFactory
(
properties
.
getPool
())
.
createPooledConnectionFactory
(
connectionFactory
);
.
createPooledConnectionFactory
(
connectionFactory
);
}
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQAutoConfigurationTests.java
View file @
1661da87
...
@@ -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
;
...
@@ -202,6 +203,20 @@ public class ActiveMQAutoConfigurationTests {
...
@@ -202,6 +203,20 @@ public class ActiveMQAutoConfigurationTests {
});
});
}
}
@Test
public
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
public
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
@Configuration
static
class
EmptyConfiguration
{
static
class
EmptyConfiguration
{
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQAutoConfigurationTestsWithoutCachingConnectionFactoryTests.java
deleted
100644 → 0
View file @
77b52b99
/*
* Copyright 2012-2019 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
jms
.
activemq
;
import
org.apache.activemq.ActiveMQConnectionFactory
;
import
org.junit.Test
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.test.context.FilteredClassLoader
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.jms.connection.CachingConnectionFactory
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link ActiveMQConnectionFactoryConfiguration} when
* {@link CachingConnectionFactory} is not on the classpath.
*
* @author Dmytro Nosan
*/
public
class
ActiveMQAutoConfigurationTestsWithoutCachingConnectionFactoryTests
{
private
final
ApplicationContextRunner
contextRunner
=
new
ApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
ActiveMQAutoConfiguration
.
class
))
.
withClassLoader
(
new
FilteredClassLoader
(
CachingConnectionFactory
.
class
));
@Test
public
void
cachingConnectionFactoryNotOnTheClasspathThenSimpleConnectionFactoryAutoConfigured
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.activemq.pool.enabled=false"
,
"spring.jms.cache.enabled=false"
)
.
run
((
context
)
->
assertThat
(
context
).
hasSingleBean
(
ActiveMQConnectionFactory
.
class
));
}
@Test
public
void
cachingConnectionFactoryNotOnTheClasspathAndCacheEnabledThenSimpleConnectionFactoryNotConfigured
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.activemq.pool.enabled=false"
,
"spring.jms.cache.enabled=true"
)
.
run
((
context
)
->
assertThat
(
context
).
doesNotHaveBean
(
ActiveMQConnectionFactory
.
class
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment