From 9da318af96f2ff5aaca707c62813bf9c510773f3 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Mon, 31 Jul 2023 15:54:47 +0300 Subject: [PATCH] Assert JmsActivationSpecConfig.setAcknowledgeMode() values See gh-30851 --- .../endpoint/JmsActivationSpecConfig.java | 4 +++- .../endpoint/JmsActivationSpecConfigTests.java | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java index f1746f7ee56..c4069c5f7d9 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java @@ -206,7 +206,7 @@ public class JmsActivationSpecConfig { Assert.hasText(constantName, "'constantName' must not be null or blank"); Integer acknowledgeMode = sessionConstants.get(constantName); Assert.notNull(acknowledgeMode, "Only acknowledge mode constants allowed"); - setAcknowledgeMode(acknowledgeMode); + this.acknowledgeMode = acknowledgeMode; } /** @@ -217,6 +217,8 @@ public class JmsActivationSpecConfig { * @see jakarta.jms.Session#SESSION_TRANSACTED */ public void setAcknowledgeMode(int acknowledgeMode) { + Assert.isTrue(sessionConstants.containsValue(acknowledgeMode), + "Only values of acknowledge mode constants allowed"); this.acknowledgeMode = acknowledgeMode; } diff --git a/spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java b/spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java index f4ee58b5948..7115871254c 100644 --- a/spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java +++ b/spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java @@ -65,6 +65,23 @@ class JmsActivationSpecConfigTests { assertThat(uniqueValues).hasSize(4); } + @Test + void setSessionAcknowledgeMode() { + assertThatIllegalArgumentException().isThrownBy(() -> specConfig.setAcknowledgeMode(999)); + + specConfig.setAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); + assertThat(specConfig.getAcknowledgeMode()).isEqualTo(Session.AUTO_ACKNOWLEDGE); + + specConfig.setAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); + assertThat(specConfig.getAcknowledgeMode()).isEqualTo(Session.CLIENT_ACKNOWLEDGE); + + specConfig.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); + assertThat(specConfig.getAcknowledgeMode()).isEqualTo(Session.DUPS_OK_ACKNOWLEDGE); + + specConfig.setAcknowledgeMode(Session.SESSION_TRANSACTED); + assertThat(specConfig.getAcknowledgeMode()).isEqualTo(Session.SESSION_TRANSACTED); + } + private static Stream streamAcknowledgeModeConstants() { return Arrays.stream(Session.class.getFields())