GUACAMOLE-38: Make connection ID incrementing thread-safe.
Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/8fa0cea7 Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/8fa0cea7 Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/8fa0cea7 Branch: refs/heads/master Commit: 8fa0cea7936a5740cebf464902f8445dc30120c4 Parents: a3d8512 Author: Nick Couchman <vn...@apache.org> Authored: Sun Mar 18 20:42:37 2018 -0400 Committer: Nick Couchman <vn...@apache.org> Committed: Fri Jun 1 13:40:50 2018 -0400 ---------------------------------------------------------------------- .../auth/quickconnect/QuickConnectDirectory.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/8fa0cea7/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/QuickConnectDirectory.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/QuickConnectDirectory.java b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/QuickConnectDirectory.java index 00c5044..2e19870 100644 --- a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/QuickConnectDirectory.java +++ b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/QuickConnectDirectory.java @@ -20,6 +20,7 @@ package org.apache.guacamole.auth.quickconnect; import java.util.Collection; +import java.util.concurrent.atomic.AtomicInteger; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.quickconnect.utility.QCParser; import org.apache.guacamole.net.auth.ConnectionGroup; @@ -46,7 +47,7 @@ public class QuickConnectDirectory extends SimpleConnectionDirectory { /** * The internal counter for connection IDs. */ - private int CONNECTION_ID = 0; + private AtomicInteger connectionId; /** * Creates a new QuickConnectDirectory which provides access to the @@ -61,6 +62,7 @@ public class QuickConnectDirectory extends SimpleConnectionDirectory { public QuickConnectDirectory(Collection<Connection> connections, ConnectionGroup rootGroup) { super(connections); this.rootGroup = (QuickConnectConnectionGroup)rootGroup; + this.connectionId = new AtomicInteger(); } /** @@ -70,8 +72,8 @@ public class QuickConnectDirectory extends SimpleConnectionDirectory { * An Integer representing the next available connection * ID to get used when adding connections. */ - private Integer getNextConnectionID() { - return CONNECTION_ID++; + private int getNextConnectionID() { + return connectionId.getAndIncrement(); } @Override @@ -99,7 +101,7 @@ public class QuickConnectDirectory extends SimpleConnectionDirectory { public String put(QuickConnection connection) throws GuacamoleException { // Get the next connection ID. - String connectionId = getNextConnectionID().toString(); + String connectionId = Integer.toString(getNextConnectionID()); // Set up identifier and parent on object. connection.setIdentifier(connectionId); @@ -132,7 +134,7 @@ public class QuickConnectDirectory extends SimpleConnectionDirectory { public String create(GuacamoleConfiguration config) throws GuacamoleException { // Get the next connection ID - String connectionId = getNextConnectionID().toString(); + String connectionId = Integer.toString(getNextConnectionID()); // Generate a name for the configuration String name = QCParser.getName(config);