### Eclipse Workspace Patch 1.0 #P james-server-data-ldap Index: src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java =================================================================== --- src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java (revision 1634685) +++ src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java (working copy) @@ -41,6 +41,7 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.commons.lang.StringUtils; import org.apache.james.lifecycle.api.Configurable; import org.apache.james.lifecycle.api.LogEnabled; import org.apache.james.user.api.UsersRepository; @@ -252,6 +253,12 @@ private String userObjectClass; /** + * The value of this field is taken from the configuration attribute "filter". + * This is the search filter to use to find the desired user. + */ + private String filter; + + /** * This is the LDAP context/sub-context within which to search for user * entities. The value of this field is taken from the configuration * attribute "userBase". @@ -352,6 +359,9 @@ } restriction = new ReadOnlyLDAPGroupRestriction(restrictionConfig); + //see if there is a filter argument + filter = configuration.getString("[@filter]"); + } /** @@ -534,7 +544,14 @@ StringBuilder builderFilter = new StringBuilder("(&("); builderFilter.append(userIdAttribute).append("=").append(name).append(")") - .append("(objectClass=").append(userObjectClass).append("))"); + .append("(objectClass=").append(userObjectClass).append(")"); + + if(StringUtils.isNotEmpty(filter)){ + builderFilter.append(filter).append(")"); + } + else{ + builderFilter.append(")"); + } NamingEnumeration sr = ldapContext.search(userBase, builderFilter.toString(), sc); @@ -744,4 +761,4 @@ return false; } -} \ No newline at end of file +}