/** * Retrieve the input attributes from the Active Directory for the given search query * * <p>Method getAttributes. * * @param searchBase String * @return List<User> * @throws NamingException */ private final List<User> getAttributes(String searchBase) throws NamingException { LOGGER.info(">> getAttributes()"); NamingEnumeration<SearchResult> results = localInitialLdapContext.search(searchBase, searchFilter, searchctls); List<User> users = new ArrayList<User>(); User user = null; while (results.hasMoreElements()) { user = new User(); SearchResult searchResult = results.next(); Attributes attrs = searchResult.getAttributes(); if (attrs != null && attrs.size() != 0) { Attribute attribute = null; String[] retrieveAttributes = parameters.getRetrieveAttributes(); String[] attributesValues = new String[retrieveAttributes.length]; for (int i = 0; i < retrieveAttributes.length; i++) { attribute = attrs.get(retrieveAttributes[i]); if (attribute != null && attribute.get() != null) { if (!isNullOrEmpty(attribute.get().toString())) { attributesValues[i] = attribute.get().toString(); } } } user.setAttributeValues(attributesValues); } users.add(user); } LOGGER.info("<< getAttributes()"); return users; }
/** Method setSearchParameters. */ private void setSearchParameters() { LOGGER.info(">> setSearchParameters()"); // Search controls and setting up the returning attributes searchctls = new SearchControls(); searchctls.setReturningAttributes(parameters.getRetrieveAttributes()); // Set the search scope. You can change this as according your // structure. // Remember this value has effect on performance. // Example: setting the scope to Subtree. searchctls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Set the search filter. Change as according by changing the values in // properties class. searchFilter = new StringBuilder("(&(objectClass=") .append(Properties.FILTER_OBJECT_CLASS) .append(")(objectCategory=") .append(Properties.FILTER_OBJECT_CATEGORY) .append("))") .toString(); LOGGER.info("<< setSearchParameters"); }