@ -42,7 +42,9 @@ import org.springframework.messaging.MessageChannel;
@@ -42,7 +42,9 @@ import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageHeaders ;
import org.springframework.messaging.converter.MappingJackson2MessageConverter ;
import org.springframework.messaging.converter.StringMessageConverter ;
import org.springframework.messaging.handler.DestinationPatternsMessageCondition ;
import org.springframework.messaging.handler.annotation.SendTo ;
import org.springframework.messaging.handler.annotation.support.DestinationVariableMethodArgumentResolver ;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor ;
import org.springframework.messaging.simp.SimpMessageSendingOperations ;
import org.springframework.messaging.simp.SimpMessagingTemplate ;
@ -54,9 +56,6 @@ import org.springframework.util.MimeType;
@@ -54,9 +56,6 @@ import org.springframework.util.MimeType;
import static org.junit.Assert.* ;
import static org.mockito.BDDMockito.* ;
import static org.springframework.messaging.handler.DestinationPatternsMessageCondition.* ;
import static org.springframework.messaging.handler.annotation.support.DestinationVariableMethodArgumentResolver.* ;
import static org.springframework.messaging.support.MessageHeaderAccessor.* ;
/ * *
* Test fixture for { @link SendToMethodReturnValueHandlerTests } .
@ -357,7 +356,8 @@ public class SendToMethodReturnValueHandlerTests {
@@ -357,7 +356,8 @@ public class SendToMethodReturnValueHandlerTests {
verify ( messagingTemplate ) . convertAndSend ( eq ( "/topic/dest" ) , eq ( PAYLOAD ) , captor . capture ( ) ) ;
MessageHeaders headers = captor . getValue ( ) ;
SimpMessageHeaderAccessor accessor = getAccessor ( headers , SimpMessageHeaderAccessor . class ) ;
SimpMessageHeaderAccessor accessor =
MessageHeaderAccessor . getAccessor ( headers , SimpMessageHeaderAccessor . class ) ;
assertNotNull ( accessor ) ;
assertTrue ( accessor . isMutable ( ) ) ;
assertEquals ( "sess1" , accessor . getSessionId ( ) ) ;
@ -399,7 +399,7 @@ public class SendToMethodReturnValueHandlerTests {
@@ -399,7 +399,7 @@ public class SendToMethodReturnValueHandlerTests {
SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor . create ( ) ;
accessor . setSessionId ( sessionId ) ;
accessor . setSubscriptionId ( "sub1" ) ;
accessor . setHeader ( DESTINATION_TEMPLATE_VARIABLES_HEADER , vars ) ;
accessor . setHeader ( DestinationVariableMethodArgumentResolver . D ESTINATION_TEMPLATE_VARIABLES_HEADER , vars ) ;
Message < ? > message = MessageBuilder . createMessage ( PAYLOAD , accessor . getMessageHeaders ( ) ) ;
this . handler . handleReturnValue ( PAYLOAD , this . sendToWithPlaceholdersReturnType , message ) ;
@ -549,7 +549,7 @@ public class SendToMethodReturnValueHandlerTests {
@@ -549,7 +549,7 @@ public class SendToMethodReturnValueHandlerTests {
headerAccessor . setSubscriptionId ( subsId ) ;
if ( dest ! = null & & destPrefix ! = null ) {
headerAccessor . setDestination ( destPrefix + dest ) ;
headerAccessor . setHeader ( LOOKUP_DESTINATION_HEADER , dest ) ;
headerAccessor . setHeader ( DestinationPatternsMessageCondition . LOOKUP_DESTINATION_HEADER , dest ) ;
}
if ( user ! = null ) {
headerAccessor . setUser ( user ) ;
@ -563,83 +563,55 @@ public class SendToMethodReturnValueHandlerTests {
@@ -563,83 +563,55 @@ public class SendToMethodReturnValueHandlerTests {
}
private static class TestUser implements Principal {
public String getName ( ) {
return "joe" ;
}
public boolean implies ( Subject subject ) {
return false ;
}
}
private static class UniqueUser extends TestUser implements DestinationUserNameProvider {
@Override
public String getDestinationUserName ( ) {
return "Me myself and I" ;
}
}
@SendTo
@Retention ( RetentionPolicy . RUNTIME )
@interface MySendTo {
@AliasFor ( annotation = SendTo . class , attribute = "value" )
String [ ] dest ( ) ;
}
@SendToUser
@Retention ( RetentionPolicy . RUNTIME )
@interface MySendToUser {
@AliasFor ( annotation = SendToUser . class , attribute = "destinations" )
String [ ] dest ( ) ;
}
@SuppressWarnings ( "unused" )
String handleNoAnnotations ( ) {
return PAYLOAD ;
}
@SendTo @SuppressWarnings ( "unused" )
@SendTo
@SuppressWarnings ( "unused" )
String handleAndSendToDefaultDestination ( ) {
return PAYLOAD ;
}
@SendTo ( { "/dest1" , "/dest2" } ) @SuppressWarnings ( "unused" )
@SendTo ( { "/dest1" , "/dest2" } )
@SuppressWarnings ( "unused" )
String handleAndSendTo ( ) {
return PAYLOAD ;
}
@SendTo ( "/topic/chat.message.filtered.{roomName}" ) @SuppressWarnings ( "unused" )
@SendTo ( "/topic/chat.message.filtered.{roomName}" )
@SuppressWarnings ( "unused" )
String handleAndSendToWithPlaceholders ( ) {
return PAYLOAD ;
}
@SendToUser @SuppressWarnings ( "unused" )
@SendToUser
@SuppressWarnings ( "unused" )
String handleAndSendToUserDefaultDestination ( ) {
return PAYLOAD ;
}
@SendToUser ( broadcast = false ) @SuppressWarnings ( "unused" )
@SendToUser ( broadcast = false )
@SuppressWarnings ( "unused" )
String handleAndSendToUserDefaultDestinationSingleSession ( ) {
return PAYLOAD ;
}
@SendToUser ( { "/dest1" , "/dest2" } ) @SuppressWarnings ( "unused" )
@SendToUser ( { "/dest1" , "/dest2" } )
@SuppressWarnings ( "unused" )
String handleAndSendToUser ( ) {
return PAYLOAD ;
}
@SendToUser ( destinations = { "/dest1" , "/dest2" } , broadcast = false ) @SuppressWarnings ( "unused" )
@SendToUser ( destinations = { "/dest1" , "/dest2" } , broadcast = false )
@SuppressWarnings ( "unused" )
String handleAndSendToUserSingleSession ( ) {
return PAYLOAD ;
}
@JsonView ( MyJacksonView1 . class ) @SuppressWarnings ( "unused" )
@JsonView ( MyJacksonView1 . class )
@SuppressWarnings ( "unused" )
JacksonViewBean handleAndSendToJsonView ( ) {
JacksonViewBean payload = new JacksonViewBean ( ) ;
payload . setWithView1 ( "with" ) ;
@ -649,6 +621,45 @@ public class SendToMethodReturnValueHandlerTests {
@@ -649,6 +621,45 @@ public class SendToMethodReturnValueHandlerTests {
}
private static class TestUser implements Principal {
public String getName ( ) {
return "joe" ;
}
public boolean implies ( Subject subject ) {
return false ;
}
}
private static class UniqueUser extends TestUser implements DestinationUserNameProvider {
@Override
public String getDestinationUserName ( ) {
return "Me myself and I" ;
}
}
@SendTo
@Retention ( RetentionPolicy . RUNTIME )
@interface MySendTo {
@AliasFor ( annotation = SendTo . class , attribute = "value" )
String [ ] dest ( ) ;
}
@SendToUser
@Retention ( RetentionPolicy . RUNTIME )
@interface MySendToUser {
@AliasFor ( annotation = SendToUser . class , attribute = "destinations" )
String [ ] dest ( ) ;
}
@MySendTo ( dest = "/dest-default" ) @SuppressWarnings ( "unused" )
private static class SendToTestBean {
@ -667,6 +678,7 @@ public class SendToMethodReturnValueHandlerTests {
@@ -667,6 +678,7 @@ public class SendToMethodReturnValueHandlerTests {
}
}
@MySendToUser ( dest = "/dest-default" ) @SuppressWarnings ( "unused" )
private static class SendToUserTestBean {
@ -685,6 +697,7 @@ public class SendToMethodReturnValueHandlerTests {
@@ -685,6 +697,7 @@ public class SendToMethodReturnValueHandlerTests {
}
}
@MySendToUser ( dest = "/dest-default" ) @SuppressWarnings ( "unused" )
private static class SendToUserWithSendToOverrideTestBean {
@ -701,8 +714,10 @@ public class SendToMethodReturnValueHandlerTests {
@@ -701,8 +714,10 @@ public class SendToMethodReturnValueHandlerTests {
private interface MyJacksonView1 { }
private interface MyJacksonView2 { }
@SuppressWarnings ( "unused" )
private static class JacksonViewBean {