StompSubProtocolHandler allows version 1.0
Issue: SPR-17258
This commit is contained in:
parent
97cea7f36e
commit
cf9641686b
|
|
@ -85,6 +85,8 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
||||||
*/
|
*/
|
||||||
public static final String CONNECTED_USER_HEADER = "user-name";
|
public static final String CONNECTED_USER_HEADER = "user-name";
|
||||||
|
|
||||||
|
private static final String[] SUPPORTED_VERSIONS = {"1.2", "1.1", "1.0"};
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(StompSubProtocolHandler.class);
|
private static final Log logger = LogFactory.getLog(StompSubProtocolHandler.class);
|
||||||
|
|
||||||
private static final byte[] EMPTY_PAYLOAD = new byte[0];
|
private static final byte[] EMPTY_PAYLOAD = new byte[0];
|
||||||
|
|
@ -524,15 +526,12 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
|
||||||
|
|
||||||
if (connectHeaders != null) {
|
if (connectHeaders != null) {
|
||||||
Set<String> acceptVersions = connectHeaders.getAcceptVersion();
|
Set<String> acceptVersions = connectHeaders.getAcceptVersion();
|
||||||
if (acceptVersions.contains("1.2")) {
|
connectedHeaders.setVersion(
|
||||||
connectedHeaders.setVersion("1.2");
|
Arrays.stream(SUPPORTED_VERSIONS)
|
||||||
}
|
.filter(acceptVersions::contains)
|
||||||
else if (acceptVersions.contains("1.1")) {
|
.findAny()
|
||||||
connectedHeaders.setVersion("1.1");
|
.orElseThrow(() -> new IllegalArgumentException(
|
||||||
}
|
"Unsupported STOMP version '" + acceptVersions + "'")));
|
||||||
else if (!acceptVersions.isEmpty()) {
|
|
||||||
throw new IllegalArgumentException("Unsupported STOMP version '" + acceptVersions + "'");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
long[] heartbeat = (long[]) connectAckHeaders.getHeader(SimpMessageHeaderAccessor.HEART_BEAT_HEADER);
|
long[] heartbeat = (long[]) connectAckHeaders.getHeader(SimpMessageHeaderAccessor.HEART_BEAT_HEADER);
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ public class StompSubProtocolHandlerTests {
|
||||||
|
|
||||||
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.CONNECT);
|
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.CONNECT);
|
||||||
accessor.setHeartbeat(10000, 10000);
|
accessor.setHeartbeat(10000, 10000);
|
||||||
accessor.setAcceptVersion("1.0,1.1");
|
accessor.setAcceptVersion("1.0,1.1,1.2");
|
||||||
Message<?> connectMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders());
|
Message<?> connectMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders());
|
||||||
|
|
||||||
SimpMessageHeaderAccessor ackAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK);
|
SimpMessageHeaderAccessor ackAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK);
|
||||||
|
|
@ -137,7 +137,7 @@ public class StompSubProtocolHandlerTests {
|
||||||
|
|
||||||
assertEquals(1, this.session.getSentMessages().size());
|
assertEquals(1, this.session.getSentMessages().size());
|
||||||
TextMessage actual = (TextMessage) this.session.getSentMessages().get(0);
|
TextMessage actual = (TextMessage) this.session.getSentMessages().get(0);
|
||||||
assertEquals("CONNECTED\n" + "version:1.1\n" + "heart-beat:15000,15000\n" +
|
assertEquals("CONNECTED\n" + "version:1.2\n" + "heart-beat:15000,15000\n" +
|
||||||
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -146,7 +146,7 @@ public class StompSubProtocolHandlerTests {
|
||||||
|
|
||||||
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.CONNECT);
|
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.CONNECT);
|
||||||
accessor.setHeartbeat(10000, 10000);
|
accessor.setHeartbeat(10000, 10000);
|
||||||
accessor.setAcceptVersion("1.0,1.1");
|
accessor.setAcceptVersion("1.0");
|
||||||
Message<?> connectMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders());
|
Message<?> connectMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders());
|
||||||
|
|
||||||
SimpMessageHeaderAccessor ackAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK);
|
SimpMessageHeaderAccessor ackAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK);
|
||||||
|
|
@ -156,7 +156,7 @@ public class StompSubProtocolHandlerTests {
|
||||||
|
|
||||||
assertEquals(1, this.session.getSentMessages().size());
|
assertEquals(1, this.session.getSentMessages().size());
|
||||||
TextMessage actual = (TextMessage) this.session.getSentMessages().get(0);
|
TextMessage actual = (TextMessage) this.session.getSentMessages().get(0);
|
||||||
assertEquals("CONNECTED\n" + "version:1.1\n" + "heart-beat:0,0\n" +
|
assertEquals("CONNECTED\n" + "version:1.0\n" + "heart-beat:0,0\n" +
|
||||||
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue