public Collection<LDAPSearchResult> search(final LDAPFilter filter) { Assert.notNull(filter, "filter"); try { if ((this.connectOnSearch) && (!this.isConnected())) { this.connect(); } Assert.notNull(this.context, "context"); SearchControls controls = new SearchControls(); controls.setReturningAttributes(filter.getAttributes()); controls.setCountLimit(filter.getLimit()); controls.setTimeLimit(0); controls.setSearchScope(SearchControls.SUBTREE_SCOPE); NamingEnumeration<SearchResult> results = this.context.search(filter.getBaseName(), filter.getFilter(), controls); Collection<LDAPSearchResult> c = LDAPHelper.toCollection(results); if (this.connectOnSearch) { this.disconnect(); } return c; } catch (NamingException e) { throw new LDAPException(e); } }