예제 #1
0
 @Override
 public Map<String, String> getAttributeValues(LdapUserContext userContext, String... attributes)
     throws LdapException {
   Map<String, String> result = new HashMap<String, String>();
   List<String> retainedAttr = new ArrayList<String>();
   Map<String, String> knownAttributes =
       ((DefaultLdapUserContext) userContext).getKnownAttributes();
   for (String attr : attributes) {
     if (knownAttributes.get(attr.toLowerCase()) == null) {
       retainedAttr.add(attr.toLowerCase());
     }
   }
   if (!retainedAttr.isEmpty()) {
     LOGGER.debug("Will connect to LDAP to retrieve attributes {}", retainedAttr);
     try {
       SearchResultEntry entry =
           ldapConnectionPool.getEntry(
               userContext.getDn(), retainedAttr.toArray(new String[retainedAttr.size()]));
       for (String attr : retainedAttr) {
         knownAttributes.put(attr, entry.getAttributeValue(attr));
       }
     } catch (com.unboundid.ldap.sdk.LDAPException e) {
       throw new LdapException(e);
     }
   }
   for (String attr : attributes) {
     result.put(attr.toLowerCase(), knownAttributes.get(attr.toLowerCase()));
   }
   return result;
 }