Fix user destination parsing in simp messaging

This commit fixes the parsing of message destinations such as
"/user/anna/queue/foo", reverting a regression introduced by SPR-11506,
which worked well with @SendToUser use cases but caused issues for
messages sent to other users.

Issue: SPR-12444
This commit is contained in:
Brian Clozel
2014-11-18 17:17:13 +01:00
parent 44ff1436f8
commit 75c70fac3d
2 changed files with 30 additions and 3 deletions

View File

@@ -150,9 +150,17 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
subscribeDestination = this.destinationPrefix.substring(0, startIndex-1) + destinationWithoutPrefix;
user = destination.substring(startIndex, endIndex);
user = StringUtils.replace(user, "%2F", "/");
user = user.equals(sessionId) ? null : user;
sessionIds = (sessionId != null ?
Collections.singleton(sessionId) : this.userSessionRegistry.getSessionIds(user));
if(user.equals(sessionId)) {
user = null;
sessionIds = Collections.singleton(sessionId);
}
else if (this.userSessionRegistry.getSessionIds(user).contains(sessionId)) {
sessionIds = Collections.singleton(sessionId);
}
else {
sessionIds = this.userSessionRegistry.getSessionIds(user);
}
}
else {
return null;