File tree Expand file tree Collapse file tree 4 files changed +15
-10
lines changed
main/java/org/springframework/messaging/simp/user
test/java/org/springframework/messaging/simp/user
main/java/org/springframework/web/socket/messaging
test/java/org/springframework/web/socket/messaging Expand file tree Collapse file tree 4 files changed +15
-10
lines changed Original file line number Diff line number Diff line change @@ -175,10 +175,8 @@ public void handleMessage(Message<?> message) throws MessagingException {
175
175
}
176
176
if (SimpMessageType .MESSAGE .equals (SimpMessageHeaderAccessor .getMessageType (message .getHeaders ()))) {
177
177
SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor .wrap (message );
178
- if (getHeaderInitializer () != null ) {
179
- getHeaderInitializer ().initHeaders (headerAccessor );
180
- }
181
- headerAccessor .setHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION , result .getSubscribeDestination ());
178
+ initHeaders (headerAccessor );
179
+ headerAccessor .setNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION , result .getSubscribeDestination ());
182
180
message = MessageBuilder .createMessage (message .getPayload (), headerAccessor .getMessageHeaders ());
183
181
}
184
182
for (String destination : destinations ) {
@@ -189,4 +187,10 @@ public void handleMessage(Message<?> message) throws MessagingException {
189
187
}
190
188
}
191
189
190
+ private void initHeaders (SimpMessageHeaderAccessor headerAccessor ) {
191
+ if (getHeaderInitializer () != null ) {
192
+ getHeaderInitializer ().initHeaders (headerAccessor );
193
+ }
194
+ }
195
+
192
196
}
Original file line number Diff line number Diff line change @@ -91,8 +91,9 @@ public void handleMessage() {
91
91
ArgumentCaptor <Message > captor = ArgumentCaptor .forClass (Message .class );
92
92
Mockito .verify (this .brokerChannel ).send (captor .capture ());
93
93
94
- assertEquals ("/queue/foo-user123" , SimpMessageHeaderAccessor .getDestination (captor .getValue ().getHeaders ()));
95
- assertEquals ("/user/queue/foo" , captor .getValue ().getHeaders ().get (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION ));
94
+ SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor .wrap (captor .getValue ());
95
+ assertEquals ("/queue/foo-user123" , accessor .getDestination ());
96
+ assertEquals ("/user/queue/foo" , accessor .getFirstNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION ));
96
97
}
97
98
98
99
Original file line number Diff line number Diff line change @@ -298,10 +298,10 @@ else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAcc
298
298
logger .error ("Ignoring message, no subscriptionId header: " + message );
299
299
return ;
300
300
}
301
- String header = SimpMessageHeaderAccessor .ORIGINAL_DESTINATION ;
302
- if (message . getHeaders (). containsKey ( header ) ) {
301
+ String origDestination = stompAccessor . getFirstNativeHeader ( SimpMessageHeaderAccessor .ORIGINAL_DESTINATION ) ;
302
+ if (origDestination != null ) {
303
303
stompAccessor = toMutableAccessor (stompAccessor , message );
304
- stompAccessor .setDestination (( String ) message . getHeaders (). get ( header ) );
304
+ stompAccessor .setDestination (origDestination );
305
305
}
306
306
}
307
307
else if (StompCommand .CONNECTED .equals (command )) {
Original file line number Diff line number Diff line change @@ -239,7 +239,7 @@ public void handleMessageToClientUserDestination() {
239
239
headers .setMessageId ("mess0" );
240
240
headers .setSubscriptionId ("sub0" );
241
241
headers .setDestination ("/queue/foo-user123" );
242
- headers .setHeader (StompHeaderAccessor .ORIGINAL_DESTINATION , "/user/queue/foo" );
242
+ headers .setNativeHeader (StompHeaderAccessor .ORIGINAL_DESTINATION , "/user/queue/foo" );
243
243
Message <byte []> message = MessageBuilder .createMessage (EMPTY_PAYLOAD , headers .getMessageHeaders ());
244
244
this .protocolHandler .handleMessageToClient (this .session , message );
245
245
You can’t perform that action at this time.
0 commit comments