Browse Source

Assert JmsActivationSpecConfig.setAcknowledgeMode() values

See gh-30851
pull/28156/merge
Sam Brannen 1 year ago
parent
commit
9da318af96
  1. 4
      spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java
  2. 17
      spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java

4
spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java

@ -206,7 +206,7 @@ public class JmsActivationSpecConfig { @@ -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 { @@ -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;
}

17
spring-jms/src/test/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfigTests.java

@ -65,6 +65,23 @@ class JmsActivationSpecConfigTests { @@ -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<String> streamAcknowledgeModeConstants() {
return Arrays.stream(Session.class.getFields())

Loading…
Cancel
Save