Append suffx to user dest in SimpMessagingTemplate

Isssue: SPR-11868
This commit is contained in:
Rossen Stoyanchev
2014-06-27 12:34:51 -04:00
parent 682a910bb6
commit 7a5b3c1eed
3 changed files with 23 additions and 3 deletions

View File

@@ -77,8 +77,9 @@ public class SimpMessagingTemplate extends AbstractMessageSendingTemplate<String
* @see org.springframework.messaging.simp.user.UserDestinationMessageHandler
*/
public void setUserDestinationPrefix(String prefix) {
Assert.notNull(prefix, "UserDestinationPrefix must not be null");
this.userDestinationPrefix = prefix;
Assert.hasText(prefix, "'userDestinationPrefix' must not be empty");
this.userDestinationPrefix = prefix.endsWith("/") ? prefix : prefix + "/";
}
/**

View File

@@ -118,6 +118,25 @@ public class SimpMessagingTemplateTests {
assertNull(headerAccessor.getNativeHeader("key"));
}
// SPR-11868
@Test
public void convertAndSendWithCustomDestinationPrefix() {
this.messagingTemplate.setUserDestinationPrefix("/prefix");
this.messagingTemplate.convertAndSendToUser("joe", "/queue/foo", "data");
List<Message<byte[]>> messages = this.messageChannel.getMessages();
assertEquals(1, messages.size());
Message<byte[]> message = messages.get(0);
SimpMessageHeaderAccessor headerAccessor =
MessageHeaderAccessor.getAccessor(message, SimpMessageHeaderAccessor.class);
assertNotNull(headerAccessor);
assertEquals(SimpMessageType.MESSAGE, headerAccessor.getMessageType());
assertEquals("/prefix/joe/queue/foo", headerAccessor.getDestination());
}
@Test
public void convertAndSendWithMutableSimpMessageHeaders() {
SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create();

View File

@@ -264,7 +264,7 @@ public class MessageBrokerBeanDefinitionParserTests {
SimpMessagingTemplate simpMessagingTemplate = this.appContext.getBean(SimpMessagingTemplate.class);
assertNotNull(simpMessagingTemplate);
assertEquals("/personal", simpMessagingTemplate.getUserDestinationPrefix());
assertEquals("/personal/", simpMessagingTemplate.getUserDestinationPrefix());
List<MessageConverter> converters = compositeMessageConverter.getConverters();
assertThat(converters.size(), Matchers.is(3));