private Object[] getSearchParameter(final LdapEntry entry) { switch (searchBy) { case SIMPLE: return new String[] {entry.getSimpleName()}; default: return new String[] {entry.getDistinguishedName()}; } }
@Override public LdapEntry[] groupSearch(DirContext dirContext, LdapEntry entry) throws IOException, NamingException { Set<LdapEntry> foundEntries = new HashSet<LdapEntry>(); // Load the list of group. Attributes groups = dirContext.getAttributes(entry.getDistinguishedName(), new String[] {groupAttribute}); Attribute groupRef = groups.get(groupAttribute); if (groupRef != null && groupRef.size() > 0) { NamingEnumeration<String> groupRefValues = (NamingEnumeration<String>) groupRef.getAll(); while (groupRefValues.hasMore()) { String distingushedName = groupRefValues.next(); SECURITY_LOGGER.tracef("Group found with distinguishedName=%s", distingushedName); String simpleName = null; if (groupNameAttribute != null) { // Load the Name Attributes groupNameAttrs = dirContext.getAttributes(distingushedName, new String[] {groupNameAttribute}); Attribute groupNameAttr = groupNameAttrs.get(groupNameAttribute); simpleName = (String) groupNameAttr.get(); SECURITY_LOGGER.tracef( "simpleName %s loaded for group with distinguishedName=%s", simpleName, distingushedName); } else { SECURITY_LOGGER.trace("No groupNameAttribute to load simpleName"); } foundEntries.add(new LdapEntry(simpleName, distingushedName)); } } else { SECURITY_LOGGER.tracef("No groups found for %s", entry); } return foundEntries.toArray(new LdapEntry[foundEntries.size()]); }
@Override protected void getAdditionalProperties(Multimap<String, String> additionalProperties) { super.getAdditionalProperties(additionalProperties); additionalProperties.put("o", organizationName); additionalProperties.put("dc", getCn()); }
@Override protected void getObjectClasses(List<String> objectClasses) { super.getObjectClasses(objectClasses); objectClasses.add("dcObject"); objectClasses.add("organization"); if (isTop()) objectClasses.add("top"); }