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.
         *

Reply via email to