diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java index bcdc4654bb..f1c261d8ca 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageTypeMessageCondition.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -74,11 +74,8 @@ public class SimpMessageTypeMessageCondition extends AbstractMessageCondition message) { - Object actualMessageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders()); - if (actualMessageType == null) { - return null; - } - return this; + SimpMessageType actual = SimpMessageHeaderAccessor.getMessageType(message.getHeaders()); + return (actual != null && actual.equals(this.messageType) ? this : null); } @Override diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandlerTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandlerTests.java index 9b895bb898..14875b99e2 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandlerTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandlerTests.java @@ -51,6 +51,7 @@ import org.springframework.messaging.simp.SimpAttributes; import org.springframework.messaging.simp.SimpAttributesContextHolder; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; import org.springframework.messaging.simp.SimpMessageSendingOperations; +import org.springframework.messaging.simp.SimpMessageType; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.messaging.simp.annotation.SubscribeMapping; import org.springframework.messaging.support.MessageBuilder; @@ -159,7 +160,7 @@ public class SimpAnnotationMethodMessageHandlerTests { @Test public void subscribeEventDestinationVariableResolution() { - Message message = createMessage("/pre/sub/bar/value"); + Message message = createMessage(SimpMessageType.SUBSCRIBE, "/pre/sub/bar/value", null); this.messageHandler.registerHandler(this.testController); this.messageHandler.handleMessage(message); @@ -328,7 +329,11 @@ public class SimpAnnotationMethodMessageHandlerTests { } private Message createMessage(String destination, Map headers) { - SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create(); + return createMessage(SimpMessageType.MESSAGE, destination, headers); + } + + private Message createMessage(SimpMessageType messageType, String destination, Map headers) { + SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create(messageType); accessor.setSessionId("session1"); accessor.setSessionAttributes(new HashMap<>()); accessor.setDestination(destination);