Assert JmsAccessor.setSessionAcknowledgeMode() values

See gh-30851
This commit is contained in:
Sam Brannen 2023-07-31 15:56:15 +03:00
parent 9da318af96
commit 3b8dd0a5ac
2 changed files with 26 additions and 7 deletions

View File

@ -144,9 +144,9 @@ public abstract class JmsAccessor implements InitializingBean {
*/ */
public void setSessionAcknowledgeModeName(String constantName) { public void setSessionAcknowledgeModeName(String constantName) {
Assert.hasText(constantName, "'constantName' must not be null or blank"); Assert.hasText(constantName, "'constantName' must not be null or blank");
Integer acknowledgeMode = sessionConstants.get(constantName); Integer sessionAcknowledgeMode = sessionConstants.get(constantName);
Assert.notNull(acknowledgeMode, "Only acknowledge mode constants allowed"); Assert.notNull(sessionAcknowledgeMode, "Only acknowledge mode constants allowed");
setSessionAcknowledgeMode(acknowledgeMode); this.sessionAcknowledgeMode = sessionAcknowledgeMode;
} }
/** /**
@ -167,6 +167,8 @@ public abstract class JmsAccessor implements InitializingBean {
* @see jakarta.jms.Connection#createSession(boolean, int) * @see jakarta.jms.Connection#createSession(boolean, int)
*/ */
public void setSessionAcknowledgeMode(int sessionAcknowledgeMode) { public void setSessionAcknowledgeMode(int sessionAcknowledgeMode) {
Assert.isTrue(sessionConstants.containsValue(sessionAcknowledgeMode),
"Only values of acknowledge mode constants allowed");
this.sessionAcknowledgeMode = sessionAcknowledgeMode; this.sessionAcknowledgeMode = sessionAcknowledgeMode;
} }

View File

@ -96,11 +96,21 @@ class JmsAccessorTests {
assertThat(uniqueValues).hasSize(4); assertThat(uniqueValues).hasSize(4);
} }
@Test
void setSessionAcknowledgeMode() {
assertThatIllegalArgumentException().isThrownBy(() -> accessor.setSessionAcknowledgeMode(999));
private static Stream<String> streamAcknowledgeModeConstants() { accessor.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
return Arrays.stream(Session.class.getFields()) assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.AUTO_ACKNOWLEDGE);
.filter(ReflectionUtils::isPublicStaticFinal)
.map(Field::getName); accessor.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.CLIENT_ACKNOWLEDGE);
accessor.setSessionAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE);
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.DUPS_OK_ACKNOWLEDGE);
accessor.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.SESSION_TRANSACTED);
} }
@Test @Test
@ -110,4 +120,11 @@ class JmsAccessorTests {
assertThat(accessor.isClientAcknowledge(session)).isTrue(); assertThat(accessor.isClientAcknowledge(session)).isTrue();
} }
private static Stream<String> streamAcknowledgeModeConstants() {
return Arrays.stream(Session.class.getFields())
.filter(ReflectionUtils::isPublicStaticFinal)
.map(Field::getName);
}
} }