Skip to content

Commit aff5d21

Browse files
committed
StompSubProtocolHandler does not insist on SimpMessageHeaderAccessor
Issue: SPR-14791 (cherry picked from commit f5cd538)
1 parent fe59bc2 commit aff5d21

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

+5-16
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;
@@ -463,18 +462,13 @@ private void sendToClient(WebSocketSession session, StompHeaderAccessor stompAcc
463462
}
464463
}
465464

466-
private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
465+
private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
467466
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
468-
if (accessor == null) {
469-
// Shouldn't happen (only broker broadcasts directly to clients)
470-
throw new IllegalStateException("No header accessor in " + message);
471-
}
472-
StompHeaderAccessor stompAccessor;
473467
if (accessor instanceof StompHeaderAccessor) {
474-
stompAccessor = (StompHeaderAccessor) accessor;
468+
return (StompHeaderAccessor) accessor;
475469
}
476-
else if (accessor instanceof SimpMessageHeaderAccessor) {
477-
stompAccessor = StompHeaderAccessor.wrap(message);
470+
else {
471+
StompHeaderAccessor stompAccessor = StompHeaderAccessor.wrap(message);
478472
SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
479473
if (SimpMessageType.CONNECT_ACK.equals(messageType)) {
480474
stompAccessor = convertConnectAcktoStompConnected(stompAccessor);
@@ -496,13 +490,8 @@ else if (SimpMessageType.HEARTBEAT.equals(messageType)) {
496490
else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAccessor.getCommand())) {
497491
stompAccessor.updateStompCommandAsServerMessage();
498492
}
493+
return stompAccessor;
499494
}
500-
else {
501-
// Shouldn't happen (only broker broadcasts directly to clients)
502-
throw new IllegalStateException(
503-
"Unexpected header accessor type: " + accessor.getClass() + " in " + message);
504-
}
505-
return stompAccessor;
506495
}
507496

508497
/**

0 commit comments

Comments
 (0)