Skip to content

Commit 66722af

Browse files
committed
StompSubProtocolHandler does not insist on SimpMessageHeaderAccessor
Issue: SPR-14791
1 parent aff43c2 commit 66722af

File tree

1 file changed

+5
-16
lines changed

1 file changed

+5
-16
lines changed

spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.springframework.context.ApplicationEventPublisherAware;
3535
import org.springframework.messaging.Message;
3636
import org.springframework.messaging.MessageChannel;
37-
import org.springframework.messaging.MessageHeaders;
3837
import org.springframework.messaging.simp.SimpAttributes;
3938
import org.springframework.messaging.simp.SimpAttributesContextHolder;
4039
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
@@ -433,18 +432,13 @@ private void sendToClient(WebSocketSession session, StompHeaderAccessor stompAcc
433432
}
434433
}
435434

436-
private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
435+
private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
437436
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
438-
if (accessor == null) {
439-
// Shouldn't happen (only broker broadcasts directly to clients)
440-
throw new IllegalStateException("No header accessor in " + message);
441-
}
442-
StompHeaderAccessor stompAccessor;
443437
if (accessor instanceof StompHeaderAccessor) {
444-
stompAccessor = (StompHeaderAccessor) accessor;
438+
return (StompHeaderAccessor) accessor;
445439
}
446-
else if (accessor instanceof SimpMessageHeaderAccessor) {
447-
stompAccessor = StompHeaderAccessor.wrap(message);
440+
else {
441+
StompHeaderAccessor stompAccessor = StompHeaderAccessor.wrap(message);
448442
SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
449443
if (SimpMessageType.CONNECT_ACK.equals(messageType)) {
450444
stompAccessor = convertConnectAcktoStompConnected(stompAccessor);
@@ -466,13 +460,8 @@ else if (SimpMessageType.HEARTBEAT.equals(messageType)) {
466460
else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAccessor.getCommand())) {
467461
stompAccessor.updateStompCommandAsServerMessage();
468462
}
463+
return stompAccessor;
469464
}
470-
else {
471-
// Shouldn't happen (only broker broadcasts directly to clients)
472-
throw new IllegalStateException(
473-
"Unexpected header accessor type: " + accessor.getClass() + " in " + message);
474-
}
475-
return stompAccessor;
476465
}
477466

478467
/**

0 commit comments

Comments
 (0)