From 2ea28fd8771e83a173a513815ede0a924299d4b6 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 18 Dec 2014 20:48:20 -0800 Subject: [PATCH] GUAC-932: Add getParameters() and setParameters() to GuacamoleConfiguration. Use where reasonable. --- .../protocol/GuacamoleConfiguration.java | 27 +++++++++++++++++++ .../rest/connection/APIConnectionWrapper.java | 14 +++------- .../connection/ConnectionRESTService.java | 18 ++++++------- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/guacamole-common/src/main/java/org/glyptodon/guacamole/protocol/GuacamoleConfiguration.java b/guacamole-common/src/main/java/org/glyptodon/guacamole/protocol/GuacamoleConfiguration.java index e43841236..1a034b39e 100644 --- a/guacamole-common/src/main/java/org/glyptodon/guacamole/protocol/GuacamoleConfiguration.java +++ b/guacamole-common/src/main/java/org/glyptodon/guacamole/protocol/GuacamoleConfiguration.java @@ -162,4 +162,31 @@ public class GuacamoleConfiguration implements Serializable { return Collections.unmodifiableSet(parameters.keySet()); } + /** + * Returns a map which contains parameter name/value pairs as key/value + * pairs. Changes to this map will affect the parameters stored within + * this configuration. + * + * @return + * A map which contains all parameter name/value pairs as key/value + * pairs. + */ + public Map getParameters() { + return parameters; + } + + /** + * Replaces all current parameters with the parameters defined within the + * given map. Key/value pairs within the map represent parameter name/value + * pairs. + * + * @param parameters + * A map which contains all parameter name/value pairs as key/value + * pairs. + */ + public void setParameters(Map parameters) { + this.parameters.clear(); + this.parameters.putAll(parameters); + } + } diff --git a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/APIConnectionWrapper.java b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/APIConnectionWrapper.java index e38402ebc..94bb5c0ed 100644 --- a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/APIConnectionWrapper.java +++ b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/APIConnectionWrapper.java @@ -23,7 +23,6 @@ package org.glyptodon.guacamole.net.basic.rest.connection; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import org.glyptodon.guacamole.GuacamoleException; @@ -86,10 +85,8 @@ public class APIConnectionWrapper implements Connection { // Add parameters, if available Map parameters = apiConnection.getParameters(); - if (parameters != null) { - for (Map.Entry entry : parameters.entrySet()) - configuration.setParameter(entry.getKey(), entry.getValue()); - } + if (parameters != null) + configuration.setParameters(parameters); return configuration; } @@ -97,14 +94,9 @@ public class APIConnectionWrapper implements Connection { @Override public void setConfiguration(GuacamoleConfiguration config) { - // Create a parameter map from the GuacamoleConfiguration - Map parameters = new HashMap(); - for (String key : config.getParameterNames()) - parameters.put(key, config.getParameter(key)); - // Set protocol and parameters apiConnection.setProtocol(config.getProtocol()); - apiConnection.setParameters(parameters); + apiConnection.setParameters(config.getParameters()); } diff --git a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/ConnectionRESTService.java b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/ConnectionRESTService.java index 5b1c25976..95efdd54b 100644 --- a/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/ConnectionRESTService.java +++ b/guacamole/src/main/java/org/glyptodon/guacamole/net/basic/rest/connection/ConnectionRESTService.java @@ -23,7 +23,6 @@ package org.glyptodon.guacamole.net.basic.rest.connection; import com.google.inject.Inject; -import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.Consumes; @@ -147,12 +146,8 @@ public class ConnectionRESTService { // Retrieve connection configuration GuacamoleConfiguration config = connection.getConfiguration(); - // Convert parameters to map - Map parameters = new HashMap(); - for (String key : config.getParameterNames()) - parameters.put(key, config.getParameter(key)); - - return parameters; + // Return parameter map + return config.getParameters(); } @@ -350,11 +345,14 @@ public class ConnectionRESTService { if (existingConnection == null) throw new GuacamoleResourceNotFoundException("No such connection: \"" + connectionID + "\""); - Connection wrappedConnection = new APIConnectionWrapper(connection); + // Retrieve connection configuration + GuacamoleConfiguration config = new GuacamoleConfiguration(); + config.setProtocol(connection.getProtocol()); + config.setParameters(connection.getParameters()); // Update the connection - existingConnection.setConfiguration(wrappedConnection.getConfiguration()); - existingConnection.setName(wrappedConnection.getName()); + existingConnection.setConfiguration(config); + existingConnection.setName(connection.getName()); connectionDirectory.update(existingConnection); }