- @Override
- public User getUser(String key, String value) {
- if (key == null) {
- List<User> users = new ArrayList<User>();
- for (String prop : getIndexedUserProperties()) {
- User user = getUser(prop, value);
- if (user != null)
- users.add(user);
- }
- if (users.size() == 1)
- return users.get(0);
- else
- return null;
- }
-
- try {
- String searchFilter = "(&(objectClass=inetOrgPerson)(" + key + "="
- + value + "))";
-
- SearchControls searchControls = new SearchControls();
- searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-
- String searchBase = baseDn;
- NamingEnumeration<SearchResult> results = initialLdapContext
- .search(searchBase, searchFilter, searchControls);
-
- SearchResult searchResult = null;
- if (results.hasMoreElements()) {
- searchResult = (SearchResult) results.nextElement();
- if (results.hasMoreElements())
- searchResult = null;
- }
- if (searchResult == null)
- return null;
- return new LdifUser(this, toDn(searchBase, searchResult),
- searchResult.getAttributes());
- } catch (Exception e) {
- throw new UserDirectoryException("Cannot get user with " + key
- + "=" + value, e);
- }
- }
-