Assert DefaultMessageListenerContainer.setCacheLevel() values

See gh-30851
This commit is contained in:
Sam Brannen 2023-07-31 15:53:45 +03:00
parent 81181c346a
commit b45bfcafc2
2 changed files with 24 additions and 1 deletions

View File

@ -280,7 +280,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
Assert.hasText(constantName, "'constantName' must not be null or blank");
Integer cacheLevel = constants.get(constantName);
Assert.notNull(cacheLevel, "Only cache constants allowed");
setCacheLevel(cacheLevel);
this.cacheLevel = cacheLevel;
}
/**
@ -304,6 +304,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
* @see #setTransactionManager
*/
public void setCacheLevel(int cacheLevel) {
Assert.isTrue(constants.containsValue(cacheLevel), "Only values of cache constants allowed");
this.cacheLevel = cacheLevel;
}

View File

@ -172,6 +172,28 @@ class DefaultMessageListenerContainerTests {
assertThat(uniqueValues).hasSize(5);
}
@Test
void setCacheLevel() {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
assertThatIllegalArgumentException().isThrownBy(() -> container.setCacheLevel(999));
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_NONE);
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_NONE);
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONNECTION);
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_CONNECTION);
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_SESSION);
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_SESSION);
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_CONSUMER);
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_CONSUMER);
container.setCacheLevel(DefaultMessageListenerContainer.CACHE_AUTO);
assertThat(container.getCacheLevel()).isEqualTo(DefaultMessageListenerContainer.CACHE_AUTO);
}
private static Stream<String> streamCacheConstants() {
return Arrays.stream(DefaultMessageListenerContainer.class.getFields())