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 7f93de062..365c40dc5 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 @@ -313,8 +313,8 @@ public class ModeledConnection extends ModeledChildDirectoryObject implements Us private void setUnrestrictedAttributes(Map 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 088077102..2751e1403 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 @@ public class TextField extends Field { 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; + + } + }