Repository: wicket Updated Branches: refs/heads/master b8be53463 -> d39ebcd1b
WICKET-5833 Add a way to get all opened web socket connections per user session Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8ae37bd0 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8ae37bd0 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8ae37bd0 Branch: refs/heads/master Commit: 8ae37bd0a90e92fb9a06181c6347a06d24a1738d Parents: 83454e7 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Mon Feb 9 11:21:26 2015 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Mon Feb 9 11:21:26 2015 +0200 ---------------------------------------------------------------------- .../registry/IWebSocketConnectionRegistry.java | 8 +++++++ .../SimpleWebSocketConnectionRegistry.java | 22 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8ae37bd0/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IWebSocketConnectionRegistry.java ---------------------------------------------------------------------- diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IWebSocketConnectionRegistry.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IWebSocketConnectionRegistry.java index e62ea4f..0afaefa 100644 --- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IWebSocketConnectionRegistry.java +++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/IWebSocketConnectionRegistry.java @@ -39,6 +39,14 @@ public interface IWebSocketConnectionRegistry */ IWebSocketConnection getConnection(Application application, String sessionId, IKey key); + /** + * @param application + * the web application to look in + * @param sessionId + * @return collection of web socket connection used by a client with the given session id + */ + Collection<IWebSocketConnection> getConnections(Application application, String sessionId); + /** * @param application http://git-wip-us.apache.org/repos/asf/wicket/blob/8ae37bd0/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/SimpleWebSocketConnectionRegistry.java ---------------------------------------------------------------------- diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/SimpleWebSocketConnectionRegistry.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/SimpleWebSocketConnectionRegistry.java index 7ead116..39c2b6b 100644 --- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/SimpleWebSocketConnectionRegistry.java +++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/registry/SimpleWebSocketConnectionRegistry.java @@ -18,6 +18,7 @@ package org.apache.wicket.protocol.ws.api.registry; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.concurrent.ConcurrentMap; import org.apache.wicket.Application; @@ -30,8 +31,6 @@ import org.apache.wicket.util.lang.Generics; * A registry that keeps all currently opened web socket connections in * maps in Application's meta data. * - * TODO remove the synchronizations below and use ConcurrentMap#putIfAbsent() - * * @since 6.0 */ public class SimpleWebSocketConnectionRegistry implements IWebSocketConnectionRegistry @@ -61,6 +60,25 @@ public class SimpleWebSocketConnectionRegistry implements IWebSocketConnectionRe return connection; } + @Override + public Collection<IWebSocketConnection> getConnections(Application application, String sessionId) + { + Args.notNull(application, "application"); + Args.notNull(sessionId, "sessionId"); + + Collection<IWebSocketConnection> connections = Collections.emptyList(); + ConcurrentMap<String, ConcurrentMap<IKey, IWebSocketConnection>> connectionsBySession = application.getMetaData(KEY); + if (connectionsBySession != null) + { + ConcurrentMap<IKey, IWebSocketConnection> connectionsByPage = connectionsBySession.get(sessionId); + if (connectionsByPage != null) + { + connections = connectionsByPage.values(); + } + } + return connections; + } + /** * Returns a collection of currently active websockets. The connections might close at any time. *