Assert JmsActivationSpecConfig.setAcknowledgeMode() values

See gh-30851
This commit is contained in:
Sam Brannen
2023-07-31 15:54:47 +03:00
parent b45bfcafc2
commit 9da318af96
2 changed files with 20 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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())