+ // TODO check value null or empty
+ if (key != null) {
+ if (!userIndexes.containsKey(key))
+ return null;
+ return userIndexes.get(key).get(value);
+ }
+
+ // Try all indexes
+ List<LdifUser> collectedUsers = new ArrayList<LdifUser>(
+ indexedUserProperties.size());
+ // try dn
+ LdifUser user = null;
+ try {
+ user = (LdifUser) getRole(value);
+ if (user != null)
+ collectedUsers.add(user);
+ } catch (Exception e) {
+ // silent
+ }
+ for (String attr : userIndexes.keySet()) {
+ user = userIndexes.get(attr).get(value);
+ if (user != null)
+ collectedUsers.add(user);
+ }
+
+ if (collectedUsers.size() == 1)
+ return collectedUsers.get(0);
+ return null;
+ // throw new UnsupportedOperationException();