Skip to content

Commit b45bfca

Browse files
committed
Assert DefaultMessageListenerContainer.setCacheLevel() values
See gh-30851
1 parent 81181c3 commit b45bfca

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ public void setCacheLevelName(String constantName) throws IllegalArgumentExcepti
280280
Assert.hasText(constantName, "'constantName' must not be null or blank");
281281
Integer cacheLevel = constants.get(constantName);
282282
Assert.notNull(cacheLevel, "Only cache constants allowed");
283-
setCacheLevel(cacheLevel);
283+
this.cacheLevel = cacheLevel;
284284
}
285285

286286
/**
@@ -304,6 +304,7 @@ public void setCacheLevelName(String constantName) throws IllegalArgumentExcepti
304304
* @see #setTransactionManager
305305
*/
306306
public void setCacheLevel(int cacheLevel) {
307+
Assert.isTrue(constants.containsValue(cacheLevel), "Only values of cache constants allowed");
307308
this.cacheLevel = cacheLevel;
308309
}
309310

spring-jms/src/test/java/org/springframework/jms/listener/DefaultMessageListenerContainerTests.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,28 @@ void setCacheLevelNameToAllSupportedValues() {
172172
assertThat(uniqueValues).hasSize(5);
173173
}
174174

175+
@Test
176+
void setCacheLevel() {
177+
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
178+
179+
assertThatIllegalArgumentException().isThrownBy(() -> container.setCacheLevel(999));
180+
181+
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_NONE);
182+
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_NONE);
183+
184+
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONNECTION);
185+
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_CONNECTION);
186+
187+
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_SESSION);
188+
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_SESSION);
189+
190+
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONSUMER);
191+
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_CONSUMER);
192+
193+
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_AUTO);
194+
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_AUTO);
195+
}
196+
175197

176198
private static Stream<String> streamCacheConstants() {
177199
return Arrays.stream(DefaultMessageListenerContainer.class.getFields())

0 commit comments

Comments
 (0)