protected abstract List<DirectoryUser> doGetRoles(Filter f);
- protected abstract void doGetUser(String key, String value,
- List<DirectoryUser> collectedUsers);
-
public void init() {
}
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,
}
}
- @Override
- protected void doGetUser(String key, String value,
- List<DirectoryUser> collectedUsers) {
- try {
- String searchFilter = "(&(" + objectClass + "="
- + getUserObjectClass() + ")(" + key + "=" + value + "))";
-
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-
- String searchBase = getBaseDn();
- NamingEnumeration<SearchResult> results = getLdapContext().search(
- searchBase, searchFilter, searchControls);
-
- SearchResult searchResult = null;
- if (results.hasMoreElements()) {
- searchResult = (SearchResult) results.nextElement();
- if (results.hasMoreElements())
- searchResult = null;
- }
- if (searchResult != null)
- collectedUsers.add(new LdifUser(this, toDn(searchBase,
- searchResult), searchResult.getAttributes()));
- } catch (Exception e) {
- throw new UserDirectoryException("Cannot get user with " + key
- + "=" + value, e);
- }
-
- }
-
private LdapName toDn(String baseDn, Binding binding)
throws InvalidNameException {
return new LdapName(binding.isRelative() ? binding.getName() + ","
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Hashtable;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
private SortedMap<LdapName, DirectoryUser> users = new TreeMap<LdapName, DirectoryUser>();
private SortedMap<LdapName, DirectoryGroup> groups = new TreeMap<LdapName, DirectoryGroup>();
- private Map<String, Map<String, DirectoryUser>> userIndexes = new LinkedHashMap<String, Map<String, DirectoryUser>>();
-
public LdifUserAdmin(String uri, String baseDn) {
this(fromUri(uri, baseDn));
}
}
}
- @SuppressWarnings("unchecked")
protected void load(InputStream in) {
try {
users.clear();
}
}
}
-
- // indexes
- for (String attr : getIndexedUserProperties())
- userIndexes.put(attr, new TreeMap<String, DirectoryUser>());
-
- for (DirectoryUser user : users.values()) {
- Dictionary<String, ?> properties = user.getProperties();
- for (String attr : getIndexedUserProperties()) {
- Object value = properties.get(attr);
- if (value != null) {
- DirectoryUser otherUser = userIndexes.get(attr).put(
- value.toString(), user);
- if (otherUser != null)
- throw new UserDirectoryException("User " + user
- + " and user " + otherUser
- + " both have property " + attr
- + " set to " + value);
- }
- }
- }
} catch (Exception e) {
throw new UserDirectoryException(
"Cannot load user admin service from LDIF", e);
return res;
}
- protected void doGetUser(String key, String value,
- List<DirectoryUser> collectedUsers) {
- assert key != null;
- DirectoryUser user = userIndexes.get(key).get(value);
- if (user != null)
- collectedUsers.add(user);
- }
-
@Override
protected List<DirectoryGroup> getDirectGroups(User user) {
LdapName dn;