GUACAMOLE-320: Merge Ensure blank values for text attributes are interpreted equivalently to null.
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
index bcd7b11..7a7162e 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java
@@ -285,8 +285,8 @@
logger.debug("Unable to parse numeric attribute.", e);
}
- // Set guacd hostname (no translation necessary)
- getModel().setProxyHostname(attributes.get(GUACD_HOSTNAME_NAME));
+ // Translate guacd hostname
+ getModel().setProxyHostname(TextField.parse(attributes.get(GUACD_HOSTNAME_NAME)));
// Translate guacd port
try { getModel().setProxyPort(NumericField.parse(attributes.get(GUACD_PORT_NAME))); }
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java
index 418ffad..cab45c8 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java
@@ -526,16 +526,16 @@
private void setUnrestrictedAttributes(Map<String, String> attributes) {
// Translate full name attribute
- getModel().setFullName(attributes.get(User.Attribute.FULL_NAME));
+ getModel().setFullName(TextField.parse(attributes.get(User.Attribute.FULL_NAME)));
// Translate email address attribute
- getModel().setEmailAddress(attributes.get(User.Attribute.EMAIL_ADDRESS));
+ getModel().setEmailAddress(TextField.parse(attributes.get(User.Attribute.EMAIL_ADDRESS)));
// Translate organization attribute
- getModel().setOrganization(attributes.get(User.Attribute.ORGANIZATION));
+ getModel().setOrganization(TextField.parse(attributes.get(User.Attribute.ORGANIZATION)));
// Translate role attribute
- getModel().setOrganizationalRole(attributes.get(User.Attribute.ORGANIZATIONAL_ROLE));
+ getModel().setOrganizationalRole(TextField.parse(attributes.get(User.Attribute.ORGANIZATIONAL_ROLE)));
}
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java b/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java
index 0880771..2751e14 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/form/TextField.java
@@ -35,4 +35,25 @@
super(name, Field.Type.TEXT);
}
+ /**
+ * Parses the given string, interpreting empty strings as equivalent to
+ * null. For all other cases, the given string is returned verbatim.
+ *
+ * @param str
+ * The string to parse, which may be null.
+ *
+ * @return
+ * The given string, or null if the given string was null or empty.
+ */
+ public static String parse(String str) {
+
+ // Return null if no value provided
+ if (str == null || str.isEmpty())
+ return null;
+
+ // Otherwise, return string unmodified
+ return str;
+
+ }
+
}