Factorize indexed properties, thus fixing issue when creating a new user.
[lgpl/argeo-commons.git] / org.argeo.security.core / src / org / argeo / osgi / useradmin / AbstractUserDirectory.java
index d8a3f04ff06350b9a6a73e2f266c7002b85315d3..40b58be7433fdbf2a9b879ae63aae5035978f625 100644 (file)
@@ -109,9 +109,6 @@ abstract class AbstractUserDirectory implements UserAdmin, UserDirectory {
 
        protected abstract List<DirectoryUser> doGetRoles(Filter f);
 
-       protected abstract void doGetUser(String key, String value,
-                       List<DirectoryUser> collectedUsers);
-
        public void init() {
 
        }
@@ -257,6 +254,19 @@ abstract class AbstractUserDirectory implements UserAdmin, UserDirectory {
                return null;
        }
 
+       protected void doGetUser(String key, String value,
+                       List<DirectoryUser> collectedUsers) {
+               try {
+                       Filter f = FrameworkUtil.createFilter("(&(" + objectClass + "="
+                                       + getUserObjectClass() + ")(" + key + "=" + value + "))");
+                       List<DirectoryUser> users = doGetRoles(f);
+                       collectedUsers.addAll(users);
+               } catch (InvalidSyntaxException e) {
+                       throw new UserDirectoryException("Cannot get user with " + key
+                                       + "=" + value, e);
+               }
+       }
+
        @Override
        public Authorization getAuthorization(User user) {
                return new LdifAuthorization((DirectoryUser) user,