GUACAMOLE-38: Rearrange logic in QCParser class.
Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/2a9c7fe0 Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/2a9c7fe0 Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/2a9c7fe0 Branch: refs/heads/master Commit: 2a9c7fe0b7dee1a409a96f32b6e155c63c62e917 Parents: 7df88cd Author: Nick Couchman <vn...@apache.org> Authored: Wed May 9 08:40:55 2018 -0400 Committer: Nick Couchman <vn...@apache.org> Committed: Fri Jun 1 13:40:52 2018 -0400 ---------------------------------------------------------------------- .../auth/quickconnect/utility/QCParser.java | 59 ++++++++++---------- 1 file changed, 29 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/2a9c7fe0/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java ---------------------------------------------------------------------- diff --git a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java index 1156ca5..9601e1c 100644 --- a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java +++ b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java @@ -85,6 +85,7 @@ public class QCParser { public static GuacamoleConfiguration getConfiguration(String uri) throws GuacamoleException { + // Parse the URI object from provided string. URI qcUri; try { qcUri = new URI(uri); @@ -100,22 +101,32 @@ public class QCParser { String userInfo = qcUri.getUserInfo(); String query = qcUri.getQuery(); - String username = null; - String password = null; - Map<String, String> queryParams = null; + // Generate a new GuacamoleConfiguration + GuacamoleConfiguration qcConfig = new GuacamoleConfiguration(); + + // Check for provided protocol or use default + if (protocol != null && !protocol.isEmpty()) + qcConfig.setProtocol(protocol); + else + qcConfig.setProtocol(DEFAULT_URI_PROTOCOL); - // Assign default protocol if one is not found in the URI. - if (protocol == null || protocol.isEmpty()) - protocol = DEFAULT_URI_PROTOCOL; + // Check for provided port number + if (port > 0) + qcConfig.setParameter("port", Integer.toString(port)); - // Assign default host if one is not found in the URI. - if (host == null || host.isEmpty()) - host = DEFAULT_URI_HOST; + // Check for provided host or use default + if (host != null && !host.isEmpty()) + qcConfig.setParameter("hostname", host); + else + qcConfig.setParameter("hostname", DEFAULT_URI_HOST); // Look for extra query parameters and parse them out. if (query != null && !query.isEmpty()) { try { - queryParams = parseQueryString(query); + Map<String, String> queryParams = parseQueryString(query); + if (queryParams != null) + for (Map.Entry<String, String> entry: queryParams.entrySet()) + qcConfig.setParameter(entry.getKey(), entry.getValue()); } catch (UnsupportedEncodingException e) { throw new GuacamoleServerException("Unexpected lack of UTF-8 encoding support.", e); @@ -127,29 +138,17 @@ public class QCParser { Matcher userinfoMatcher = userinfoPattern.matcher(userInfo); if (userinfoMatcher.matches()) { - username = userinfoMatcher.group(USERNAME_GROUP); - password = userinfoMatcher.group(PASSWORD_GROUP); - } - - } - - // Generate a new GuacamoleConfiguration and set parameters. - GuacamoleConfiguration qcConfig = new GuacamoleConfiguration(); - qcConfig.setProtocol(protocol); - qcConfig.setParameter("hostname",host); - - if (port > 0) - qcConfig.setParameter("port", Integer.toString(port)); + String username = userinfoMatcher.group(USERNAME_GROUP); + String password = userinfoMatcher.group(PASSWORD_GROUP); - if (username != null && !username.isEmpty()) - qcConfig.setParameter("username", username); + if (username != null && !username.isEmpty()) + qcConfig.setParameter("username", username); - if (password != null && !password.isEmpty()) - qcConfig.setParameter("password", password); + if (password != null && !password.isEmpty()) + qcConfig.setParameter("password", password); + } - if (queryParams != null) - for (Map.Entry<String, String> entry : queryParams.entrySet()) - qcConfig.setParameter(entry.getKey(), entry.getValue()); + } return qcConfig;