Revise UserSessionResolver to UserQueueSuffixResolver

The resolver for /user/{username} prefixed destinations is now
more explicitly designed to store queue suffixes rather than session
id's, which is what we happen to use as queue suffixes.

This allows something other than the sessionId to be used without
having to change many places. It also enables applications to
construct destinations with user-specific queue suffixes without
making assumptions about what's used for queue suffixes. For
example a controller may construct a map with subscription destinations
and send that down to the client.
This commit is contained in:
Rossen Stoyanchev
2013-07-19 13:46:27 -04:00
parent f86a3283be
commit 90c4712d06
7 changed files with 166 additions and 138 deletions

View File

@@ -27,12 +27,12 @@ import static org.junit.Assert.*;
/**
* Test fixture for {@link SimpleUserSessionResolver}
* Test fixture for {@link SimpleUserQueueSuffixResolver}
*
* @author Rossen Stoyanchev
* @since 4.0
*/
public class SimpleUserSessionResolverTests {
public class SimpleUserQueueSuffixResolverTests {
private static final String user = "joe";
private static final List<String> sessionIds = Arrays.asList("sess01", "sess02", "sess03");
@@ -41,42 +41,42 @@ public class SimpleUserSessionResolverTests {
@Test
public void addOneSessionId() {
SimpleUserSessionResolver resolver = new SimpleUserSessionResolver();
resolver.addUserSessionId(user, sessionIds.get(0));
SimpleUserQueueSuffixResolver resolver = new SimpleUserQueueSuffixResolver();
resolver.addQueueSuffix(user, sessionIds.get(0), sessionIds.get(0));
assertEquals(Collections.singleton(sessionIds.get(0)), resolver.resolveUserSessionIds(user));
assertSame(Collections.emptySet(), resolver.resolveUserSessionIds("jane"));
assertEquals(Collections.singleton(sessionIds.get(0)), resolver.getUserQueueSuffixes(user));
assertSame(Collections.emptySet(), resolver.getUserQueueSuffixes("jane"));
}
@Test
public void addMultipleSessionIds() {
SimpleUserSessionResolver resolver = new SimpleUserSessionResolver();
SimpleUserQueueSuffixResolver resolver = new SimpleUserQueueSuffixResolver();
for (String sessionId : sessionIds) {
resolver.addUserSessionId(user, sessionId);
resolver.addQueueSuffix(user, sessionId, sessionId);
}
assertEquals(new LinkedHashSet<>(sessionIds), resolver.resolveUserSessionIds(user));
assertEquals(Collections.emptySet(), resolver.resolveUserSessionIds("jane"));
assertEquals(new LinkedHashSet<>(sessionIds), resolver.getUserQueueSuffixes(user));
assertEquals(Collections.emptySet(), resolver.getUserQueueSuffixes("jane"));
}
@Test
public void removeSessionIds() {
SimpleUserSessionResolver resolver = new SimpleUserSessionResolver();
SimpleUserQueueSuffixResolver resolver = new SimpleUserQueueSuffixResolver();
for (String sessionId : sessionIds) {
resolver.addUserSessionId(user, sessionId);
resolver.addQueueSuffix(user, sessionId, sessionId);
}
assertEquals(new LinkedHashSet<>(sessionIds), resolver.resolveUserSessionIds(user));
assertEquals(new LinkedHashSet<>(sessionIds), resolver.getUserQueueSuffixes(user));
resolver.removeUserSessionId(user, sessionIds.get(1));
resolver.removeUserSessionId(user, sessionIds.get(2));
assertEquals(Collections.singleton(sessionIds.get(0)), resolver.resolveUserSessionIds(user));
resolver.removeQueueSuffix(user, sessionIds.get(1));
resolver.removeQueueSuffix(user, sessionIds.get(2));
assertEquals(Collections.singleton(sessionIds.get(0)), resolver.getUserQueueSuffixes(user));
resolver.removeUserSessionId(user, sessionIds.get(0));
assertSame(Collections.emptySet(), resolver.resolveUserSessionIds(user));
resolver.removeQueueSuffix(user, sessionIds.get(0));
assertSame(Collections.emptySet(), resolver.getUserQueueSuffixes(user));
}
}