Improve usage of concurrent map - no need of synchronization. Add javadoc
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e059351f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e059351f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e059351f Branch: refs/heads/master Commit: e059351fb80cf3fadd446f6c73240396f577e0c5 Parents: 900d5a8 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Thu Mar 6 10:28:41 2014 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Thu Mar 6 10:28:41 2014 +0200 ---------------------------------------------------------------------- .../registry/SimpleWebSocketConnectionRegistry.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e059351f/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 8e6d46d..7ead116 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 @@ -65,7 +65,8 @@ public class SimpleWebSocketConnectionRegistry implements IWebSocketConnectionRe * Returns a collection of currently active websockets. The connections might close at any time. * * @param application - * @return + * The application + * @return a collection of currently active websockets */ public Collection<IWebSocketConnection> getConnections(Application application) { @@ -107,13 +108,14 @@ public class SimpleWebSocketConnectionRegistry implements IWebSocketConnectionRe ConcurrentMap<IKey, IWebSocketConnection> connectionsByPage = connectionsBySession.get(sessionId); if (connectionsByPage == null && connection != null) { - synchronized (connectionsBySession) + connectionsByPage = connectionsBySession.get(sessionId); + if (connectionsByPage == null) { - connectionsByPage = connectionsBySession.get(sessionId); - if (connectionsByPage == null) + connectionsByPage = Generics.newConcurrentHashMap(); + ConcurrentMap<IKey, IWebSocketConnection> old = connectionsBySession.putIfAbsent(sessionId, connectionsByPage); + if (old != null) { - connectionsByPage = Generics.newConcurrentHashMap(); - connectionsBySession.put(sessionId, connectionsByPage); + connectionsByPage = old; } } }
