4343import org .springframework .messaging .simp .stomp .StompDecoder ;
4444import org .springframework .messaging .simp .stomp .StompEncoder ;
4545import org .springframework .messaging .simp .stomp .StompHeaderAccessor ;
46- import org .springframework .messaging .simp .user .DestinationUserNameProvider ;
4746import org .springframework .messaging .support .AbstractMessageChannel ;
4847import org .springframework .messaging .support .ChannelInterceptor ;
4948import org .springframework .messaging .support .ImmutableMessageChannelInterceptor ;
@@ -272,8 +271,10 @@ else if (StompCommand.UNSUBSCRIBE.equals(headerAccessor.getCommand())) {
272271 }
273272 }
274273 catch (Throwable ex ) {
275- logger .error ("Failed to send client message to application via MessageChannel" +
276- " in session " + session .getId () + ". Sending STOMP ERROR to client." , ex );
274+ if (logger .isErrorEnabled ()) {
275+ logger .error ("Failed to send client message to application via MessageChannel" +
276+ " in session " + session .getId () + ". Sending STOMP ERROR to client." , ex );
277+ }
277278 handleError (session , ex , message );
278279 }
279280 }
@@ -291,7 +292,7 @@ private void handleError(WebSocketSession session, Throwable ex, Message<byte[]>
291292 }
292293
293294 StompHeaderAccessor accessor = MessageHeaderAccessor .getAccessor (message , StompHeaderAccessor .class );
294- Assert .notNull (accessor , "Expected STOMP headers" );
295+ Assert .state (accessor != null , "Expected STOMP headers" );
295296 sendToClient (session , accessor , message .getPayload ());
296297 }
297298
@@ -336,7 +337,9 @@ private void publishEvent(ApplicationEvent event) {
336337 this .eventPublisher .publishEvent (event );
337338 }
338339 catch (Throwable ex ) {
339- logger .error ("Error publishing " + event , ex );
340+ if (logger .isErrorEnabled ()) {
341+ logger .error ("Error publishing " + event , ex );
342+ }
340343 }
341344 }
342345
@@ -347,27 +350,29 @@ private void publishEvent(ApplicationEvent event) {
347350 @ SuppressWarnings ("unchecked" )
348351 public void handleMessageToClient (WebSocketSession session , Message <?> message ) {
349352 if (!(message .getPayload () instanceof byte [])) {
350- logger .error ("Expected byte[] payload. Ignoring " + message + "." );
353+ if (logger .isErrorEnabled ()) {
354+ logger .error ("Expected byte[] payload. Ignoring " + message + "." );
355+ }
351356 return ;
352357 }
353358
354- StompHeaderAccessor stompAccessor = getStompHeaderAccessor (message );
355- StompCommand command = stompAccessor .getCommand ();
359+ StompHeaderAccessor accessor = getStompHeaderAccessor (message );
360+ StompCommand command = accessor .getCommand ();
356361
357362 if (StompCommand .MESSAGE .equals (command )) {
358- if (stompAccessor .getSubscriptionId () == null ) {
363+ if (accessor .getSubscriptionId () == null && logger . isWarnEnabled () ) {
359364 logger .warn ("No STOMP \" subscription\" header in " + message );
360365 }
361- String origDestination = stompAccessor .getFirstNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
366+ String origDestination = accessor .getFirstNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
362367 if (origDestination != null ) {
363- stompAccessor = toMutableAccessor (stompAccessor , message );
364- stompAccessor .removeNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
365- stompAccessor .setDestination (origDestination );
368+ accessor = toMutableAccessor (accessor , message );
369+ accessor .removeNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
370+ accessor .setDestination (origDestination );
366371 }
367372 }
368373 else if (StompCommand .CONNECTED .equals (command )) {
369374 this .stats .incrementConnectedCount ();
370- stompAccessor = afterStompSessionConnected (message , stompAccessor , session );
375+ accessor = afterStompSessionConnected (message , accessor , session );
371376 if (this .eventPublisher != null && StompCommand .CONNECTED .equals (command )) {
372377 try {
373378 SimpAttributes simpAttributes = new SimpAttributes (session .getId (), session .getAttributes ());
@@ -382,25 +387,21 @@ else if (StompCommand.CONNECTED.equals(command)) {
382387 }
383388
384389 byte [] payload = (byte []) message .getPayload ();
385-
386390 if (StompCommand .ERROR .equals (command ) && getErrorHandler () != null ) {
387391 Message <byte []> errorMessage = getErrorHandler ().handleErrorMessageToClient ((Message <byte []>) message );
388- stompAccessor = MessageHeaderAccessor .getAccessor (errorMessage , StompHeaderAccessor .class );
389- Assert .notNull ( stompAccessor , "Expected STOMP headers" );
392+ accessor = MessageHeaderAccessor .getAccessor (errorMessage , StompHeaderAccessor .class );
393+ Assert .state ( accessor != null , "Expected STOMP headers" );
390394 payload = errorMessage .getPayload ();
391395 }
392-
393- sendToClient (session , stompAccessor , payload );
396+ sendToClient (session , accessor , payload );
394397 }
395398
396399 private void sendToClient (WebSocketSession session , StompHeaderAccessor stompAccessor , byte [] payload ) {
397400 StompCommand command = stompAccessor .getCommand ();
398401 try {
399402 byte [] bytes = this .stompEncoder .encode (stompAccessor .getMessageHeaders (), payload );
400-
401403 boolean useBinary = (payload .length > 0 && !(session instanceof SockJsSession ) &&
402404 MimeTypeUtils .APPLICATION_OCTET_STREAM .isCompatibleWith (stompAccessor .getContentType ()));
403-
404405 if (useBinary ) {
405406 session .sendMessage (new BinaryMessage (bytes ));
406407 }
@@ -414,7 +415,9 @@ private void sendToClient(WebSocketSession session, StompHeaderAccessor stompAcc
414415 }
415416 catch (Throwable ex ) {
416417 // Could be part of normal workflow (e.g. browser tab closed)
417- logger .debug ("Failed to send WebSocket message to client in session " + session .getId (), ex );
418+ if (logger .isDebugEnabled ()) {
419+ logger .debug ("Failed to send WebSocket message to client in session " + session .getId (), ex );
420+ }
418421 command = StompCommand .ERROR ;
419422 }
420423 finally {
@@ -471,9 +474,13 @@ else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAcc
471474 private StompHeaderAccessor convertConnectAcktoStompConnected (StompHeaderAccessor connectAckHeaders ) {
472475 String name = StompHeaderAccessor .CONNECT_MESSAGE_HEADER ;
473476 Message <?> message = (Message <?>) connectAckHeaders .getHeader (name );
474- Assert .notNull (message , "Original STOMP CONNECT not found in " + connectAckHeaders );
477+ if (message == null ) {
478+ throw new IllegalStateException ("Original STOMP CONNECT not found in " + connectAckHeaders );
479+ }
480+
475481 StompHeaderAccessor connectHeaders = MessageHeaderAccessor .getAccessor (message , StompHeaderAccessor .class );
476482 StompHeaderAccessor connectedHeaders = StompHeaderAccessor .create (StompCommand .CONNECTED );
483+
477484 Set <String > acceptVersions = connectHeaders .getAcceptVersion ();
478485 if (acceptVersions .contains ("1.2" )) {
479486 connectedHeaders .setVersion ("1.2" );
@@ -484,13 +491,15 @@ else if (acceptVersions.contains("1.1")) {
484491 else if (!acceptVersions .isEmpty ()) {
485492 throw new IllegalArgumentException ("Unsupported STOMP version '" + acceptVersions + "'" );
486493 }
494+
487495 long [] heartbeat = (long []) connectAckHeaders .getHeader (SimpMessageHeaderAccessor .HEART_BEAT_HEADER );
488496 if (heartbeat != null ) {
489497 connectedHeaders .setHeartbeat (heartbeat [0 ], heartbeat [1 ]);
490498 }
491499 else {
492500 connectedHeaders .setHeartbeat (0 , 0 );
493501 }
502+
494503 return connectedHeaders ;
495504 }
496505
0 commit comments