11/*
2- * Copyright 2002-2015 the original author or authors.
2+ * Copyright 2002-2016 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -296,8 +296,10 @@ else if (StompCommand.UNSUBSCRIBE.equals(headerAccessor.getCommand())) {
296296 }
297297 }
298298 catch (Throwable ex ) {
299- logger .error ("Failed to send client message to application via MessageChannel" +
300- " in session " + session .getId () + ". Sending STOMP ERROR to client." , ex );
299+ if (logger .isErrorEnabled ()) {
300+ logger .error ("Failed to send client message to application via MessageChannel" +
301+ " in session " + session .getId () + ". Sending STOMP ERROR to client." , ex );
302+ }
301303 handleError (session , ex , message );
302304 }
303305 }
@@ -316,7 +318,7 @@ private void handleError(WebSocketSession session, Throwable ex, Message<byte[]>
316318 }
317319
318320 StompHeaderAccessor accessor = MessageHeaderAccessor .getAccessor (message , StompHeaderAccessor .class );
319- Assert .notNull (accessor , "Expected STOMP headers" );
321+ Assert .state (accessor != null , "Expected STOMP headers" );
320322 sendToClient (session , accessor , message .getPayload ());
321323 }
322324
@@ -365,7 +367,9 @@ private void publishEvent(ApplicationEvent event) {
365367 this .eventPublisher .publishEvent (event );
366368 }
367369 catch (Throwable ex ) {
368- logger .error ("Error publishing " + event , ex );
370+ if (logger .isErrorEnabled ()) {
371+ logger .error ("Error publishing " + event , ex );
372+ }
369373 }
370374 }
371375
@@ -376,27 +380,29 @@ private void publishEvent(ApplicationEvent event) {
376380 @ SuppressWarnings ("unchecked" )
377381 public void handleMessageToClient (WebSocketSession session , Message <?> message ) {
378382 if (!(message .getPayload () instanceof byte [])) {
379- logger .error ("Expected byte[] payload. Ignoring " + message + "." );
383+ if (logger .isErrorEnabled ()) {
384+ logger .error ("Expected byte[] payload. Ignoring " + message + "." );
385+ }
380386 return ;
381387 }
382388
383- StompHeaderAccessor stompAccessor = getStompHeaderAccessor (message );
384- StompCommand command = stompAccessor .getCommand ();
389+ StompHeaderAccessor accessor = getStompHeaderAccessor (message );
390+ StompCommand command = accessor .getCommand ();
385391
386392 if (StompCommand .MESSAGE .equals (command )) {
387- if (stompAccessor .getSubscriptionId () == null ) {
393+ if (accessor .getSubscriptionId () == null && logger . isWarnEnabled () ) {
388394 logger .warn ("No STOMP \" subscription\" header in " + message );
389395 }
390- String origDestination = stompAccessor .getFirstNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
396+ String origDestination = accessor .getFirstNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
391397 if (origDestination != null ) {
392- stompAccessor = toMutableAccessor (stompAccessor , message );
393- stompAccessor .removeNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
394- stompAccessor .setDestination (origDestination );
398+ accessor = toMutableAccessor (accessor , message );
399+ accessor .removeNativeHeader (SimpMessageHeaderAccessor .ORIGINAL_DESTINATION );
400+ accessor .setDestination (origDestination );
395401 }
396402 }
397403 else if (StompCommand .CONNECTED .equals (command )) {
398404 this .stats .incrementConnectedCount ();
399- stompAccessor = afterStompSessionConnected (message , stompAccessor , session );
405+ accessor = afterStompSessionConnected (message , accessor , session );
400406 if (this .eventPublisher != null && StompCommand .CONNECTED .equals (command )) {
401407 try {
402408 SimpAttributes simpAttributes = new SimpAttributes (session .getId (), session .getAttributes ());
@@ -411,25 +417,21 @@ else if (StompCommand.CONNECTED.equals(command)) {
411417 }
412418
413419 byte [] payload = (byte []) message .getPayload ();
414-
415420 if (StompCommand .ERROR .equals (command ) && getErrorHandler () != null ) {
416421 Message <byte []> errorMessage = getErrorHandler ().handleErrorMessageToClient ((Message <byte []>) message );
417- stompAccessor = MessageHeaderAccessor .getAccessor (errorMessage , StompHeaderAccessor .class );
418- Assert .notNull ( stompAccessor , "Expected STOMP headers" );
422+ accessor = MessageHeaderAccessor .getAccessor (errorMessage , StompHeaderAccessor .class );
423+ Assert .state ( accessor != null , "Expected STOMP headers" );
419424 payload = errorMessage .getPayload ();
420425 }
421-
422- sendToClient (session , stompAccessor , payload );
426+ sendToClient (session , accessor , payload );
423427 }
424428
425429 private void sendToClient (WebSocketSession session , StompHeaderAccessor stompAccessor , byte [] payload ) {
426430 StompCommand command = stompAccessor .getCommand ();
427431 try {
428432 byte [] bytes = this .stompEncoder .encode (stompAccessor .getMessageHeaders (), payload );
429-
430433 boolean useBinary = (payload .length > 0 && !(session instanceof SockJsSession ) &&
431434 MimeTypeUtils .APPLICATION_OCTET_STREAM .isCompatibleWith (stompAccessor .getContentType ()));
432-
433435 if (useBinary ) {
434436 session .sendMessage (new BinaryMessage (bytes ));
435437 }
@@ -443,7 +445,9 @@ private void sendToClient(WebSocketSession session, StompHeaderAccessor stompAcc
443445 }
444446 catch (Throwable ex ) {
445447 // Could be part of normal workflow (e.g. browser tab closed)
446- logger .debug ("Failed to send WebSocket message to client in session " + session .getId (), ex );
448+ if (logger .isDebugEnabled ()) {
449+ logger .debug ("Failed to send WebSocket message to client in session " + session .getId (), ex );
450+ }
447451 command = StompCommand .ERROR ;
448452 }
449453 finally {
@@ -500,9 +504,13 @@ else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAcc
500504 private StompHeaderAccessor convertConnectAcktoStompConnected (StompHeaderAccessor connectAckHeaders ) {
501505 String name = StompHeaderAccessor .CONNECT_MESSAGE_HEADER ;
502506 Message <?> message = (Message <?>) connectAckHeaders .getHeader (name );
503- Assert .notNull (message , "Original STOMP CONNECT not found in " + connectAckHeaders );
507+ if (message == null ) {
508+ throw new IllegalStateException ("Original STOMP CONNECT not found in " + connectAckHeaders );
509+ }
510+
504511 StompHeaderAccessor connectHeaders = MessageHeaderAccessor .getAccessor (message , StompHeaderAccessor .class );
505512 StompHeaderAccessor connectedHeaders = StompHeaderAccessor .create (StompCommand .CONNECTED );
513+
506514 Set <String > acceptVersions = connectHeaders .getAcceptVersion ();
507515 if (acceptVersions .contains ("1.2" )) {
508516 connectedHeaders .setVersion ("1.2" );
@@ -513,13 +521,15 @@ else if (acceptVersions.contains("1.1")) {
513521 else if (!acceptVersions .isEmpty ()) {
514522 throw new IllegalArgumentException ("Unsupported STOMP version '" + acceptVersions + "'" );
515523 }
524+
516525 long [] heartbeat = (long []) connectAckHeaders .getHeader (SimpMessageHeaderAccessor .HEART_BEAT_HEADER );
517526 if (heartbeat != null ) {
518527 connectedHeaders .setHeartbeat (heartbeat [0 ], heartbeat [1 ]);
519528 }
520529 else {
521530 connectedHeaders .setHeartbeat (0 , 0 );
522531 }
532+
523533 return connectedHeaders ;
524534 }
525535
0 commit comments