Skip to content

Commit 3b8dd0a

Browse files
committed
Assert JmsAccessor.setSessionAcknowledgeMode() values
See spring-projectsgh-30851
1 parent 9da318a commit 3b8dd0a

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

spring-jms/src/main/java/org/springframework/jms/support/JmsAccessor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,9 @@ public boolean isSessionTransacted() {
144144
*/
145145
public void setSessionAcknowledgeModeName(String constantName) {
146146
Assert.hasText(constantName, "'constantName' must not be null or blank");
147-
Integer acknowledgeMode = sessionConstants.get(constantName);
148-
Assert.notNull(acknowledgeMode, "Only acknowledge mode constants allowed");
149-
setSessionAcknowledgeMode(acknowledgeMode);
147+
Integer sessionAcknowledgeMode = sessionConstants.get(constantName);
148+
Assert.notNull(sessionAcknowledgeMode, "Only acknowledge mode constants allowed");
149+
this.sessionAcknowledgeMode = sessionAcknowledgeMode;
150150
}
151151

152152
/**
@@ -167,6 +167,8 @@ public void setSessionAcknowledgeModeName(String constantName) {
167167
* @see jakarta.jms.Connection#createSession(boolean, int)
168168
*/
169169
public void setSessionAcknowledgeMode(int sessionAcknowledgeMode) {
170+
Assert.isTrue(sessionConstants.containsValue(sessionAcknowledgeMode),
171+
"Only values of acknowledge mode constants allowed");
170172
this.sessionAcknowledgeMode = sessionAcknowledgeMode;
171173
}
172174

spring-jms/src/test/java/org/springframework/jms/support/JmsAccessorTests.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,21 @@ void setSessionAcknowledgeModeNameToAllSupportedValues() {
9696
assertThat(uniqueValues).hasSize(4);
9797
}
9898

99+
@Test
100+
void setSessionAcknowledgeMode() {
101+
assertThatIllegalArgumentException().isThrownBy(() -> accessor.setSessionAcknowledgeMode(999));
99102

100-
private static Stream<String> streamAcknowledgeModeConstants() {
101-
return Arrays.stream(Session.class.getFields())
102-
.filter(ReflectionUtils::isPublicStaticFinal)
103-
.map(Field::getName);
103+
accessor.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
104+
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.AUTO_ACKNOWLEDGE);
105+
106+
accessor.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
107+
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.CLIENT_ACKNOWLEDGE);
108+
109+
accessor.setSessionAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE);
110+
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.DUPS_OK_ACKNOWLEDGE);
111+
112+
accessor.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED);
113+
assertThat(accessor.getSessionAcknowledgeMode()).isEqualTo(Session.SESSION_TRANSACTED);
104114
}
105115

106116
@Test
@@ -110,4 +120,11 @@ void customAcknowledgeModeIsConsideredClientAcknowledge() throws Exception {
110120
assertThat(accessor.isClientAcknowledge(session)).isTrue();
111121
}
112122

123+
124+
private static Stream<String> streamAcknowledgeModeConstants() {
125+
return Arrays.stream(Session.class.getFields())
126+
.filter(ReflectionUtils::isPublicStaticFinal)
127+
.map(Field::getName);
128+
}
129+
113130
}

0 commit comments

Comments
 (0)