final SearchResult result = new SearchResult(SortBehavior.ORDERED); for (Response<SearchResult> r : responses) { for (LdapEntry le : r.getResult().getEntries()) { result.addEntry(le); logger.debug("Search found: {}", le.getDn()); if (fromResult != null) { if (toResult != null) { subResult = result.subResult(fromResult, toResult); } else { subResult = result.subResult(fromResult, result.size()); subResult = result.subResult(0, toResult); } else { subResult = result;
/** Tests default sort behavior. */ @Test(groups = {"bean"}) public void defaultSortBehavior() { final SearchResult sr = new SearchResult(); AssertJUnit.assertEquals(SortBehavior.getDefaultSortBehavior(), sr.getSortBehavior()); AssertJUnit.assertEquals(0, sr.size()); AssertJUnit.assertNull(sr.getEntry()); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }
/** * Returns a portion of this result between the specified fromIndex, inclusive, and toIndex, exclusive. If fromIndex * and toIndex are equal, the return result is empty. The result of this method is undefined for unordered results. * * @param fromIndex low endpoint of the search result (inclusive) * @param toIndex high endpoint of the search result (exclusive) * * @return portion of this search result * * @throws IndexOutOfBoundsException for illegal index values */ public SearchResult subResult(final int fromIndex, final int toIndex) { if (fromIndex < 0 || toIndex > resultEntries.size() || fromIndex > toIndex) { throw new IndexOutOfBoundsException("Illegal index value"); } final SearchResult result = new SearchResult(getSortBehavior()); if (resultEntries.isEmpty() || fromIndex == toIndex) { return result; } int i = 0; for (Map.Entry<String, LdapEntry> e : resultEntries.entrySet()) { if (i >= fromIndex && i < toIndex) { result.addEntry(e.getValue()); } i++; } return result; }
/** * Creates a search result that corresponds to the supplied DSML document. * * @param doc DSML to parse * * @return search result */ protected SearchResult createSearchResult(final Document doc) { final SearchResult result = new SearchResult(sortBehavior); if (doc != null && doc.hasChildNodes()) { final NodeList nodes = doc.getElementsByTagName("dsml:entry"); for (int i = 0; i < nodes.getLength(); i++) { final LdapEntry le = createLdapEntry((Element) nodes.item(i)); result.addEntry(le); } } return result; }
/** * Tests create with two entries. * * @param entry1 ldap entry * @param entry2 ldap entry */ @Test(groups = {"bean"}, dataProvider = "entries") public void createTwo(final LdapEntry entry1, final LdapEntry entry2) { final SearchResult sr = new SearchResult(entry2, entry1); AssertJUnit.assertEquals(entry1, sr.getEntry("uid=1")); AssertJUnit.assertEquals(entry2, sr.getEntry("UID=2")); AssertJUnit.assertEquals(2, sr.getEntryDns().length); AssertJUnit.assertEquals(2, sr.size()); AssertJUnit.assertEquals(sr, new SearchResult(entry1, entry2)); sr.removeEntry(entry2); AssertJUnit.assertEquals(1, sr.size()); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }
/** * Iterates over the supplied result and returns all attributes as a set of ldap roles. * * @param result to read * * @return ldap roles */ public static Set<LdapRole> toRoles(final SearchResult result) { final Set<LdapRole> r = new HashSet<>(); for (LdapEntry le : result.getEntries()) { r.addAll(toRoles(le)); } return r; }
/** * Tests ordered sort behavior. * * @param entry1 ldap entry * @param entry2 ldap entry */ @Test(groups = {"bean"}, dataProvider = "entries") public void orderedSortBehavior(final LdapEntry entry1, final LdapEntry entry2) { final SearchResult sr = new SearchResult(SortBehavior.ORDERED); AssertJUnit.assertEquals(SortBehavior.ORDERED, sr.getSortBehavior()); sr.addEntry(entry2, entry1); final LdapEntry[] entries = sr.getEntries().toArray(new LdapEntry[2]); AssertJUnit.assertEquals(entry2, entries[0]); AssertJUnit.assertEquals(entry1, entries[1]); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }
/** {@inheritDoc} */ @Override @Nullable public StorageRecord read(@Nonnull @NotEmpty final String context, @Nonnull @NotEmpty final String key) throws IOException { SearchResult result = null; try { result = search(context, key).getResult(); } catch (LdapException e) { if (e.getResultCode() != ResultCode.NO_SUCH_OBJECT) { log.error("LDAP search operation failed", e); throw new IOException(e); } } StorageRecord record = null; if (result != null && result.size() > 0) { final LdapEntry entry = result.getEntry(); if (entry != null) { final LdapAttribute attr = entry.getAttribute(key); if (attr != null) { record = new StorageRecord(attr.getStringValue(), null); } } } return record; }
Constraint.isNotNull(results, "Results can not be null"); if (results.size() == 0) { log.debug("Results did not contain any entries, nothing to map"); if (isNoResultAnError()) { } else if (results.size() > 1 && isMultipleResultsAnError()) { throw new MultipleResultAnErrorResolutionException("Multiple entries returned from search"); final Map<String,IdPAttribute> attributes = new HashMap<>(results.size()); for (final LdapEntry entry : results.getEntries()) { for (final LdapAttribute attr : entry.getAttributes()) {
throws LdapException final SearchResult result = new SearchResult(request.getSortBehavior()); try { while (si.hasNext()) { final HandlerResult<SearchEntry> hr = executeHandlers(request.getSearchEntryHandlers(), request, se); if (hr.getResult() != null) { result.addEntry(hr.getResult()); if (refResponse != null) { if (refResponse.getResultCode() == ResultCode.SUCCESS) { result.addEntries(refResponse.getResult().getEntries()); } else { result.addReference(reference); result.addReference(reference);
throw new RuntimeException("LDAP error fetching details for user.", e); if (userResult.size() == 0) { throw new AccountNotFoundException(username + " not found."); if (userResult.size() > 1 && !this.allowMultipleResults) { throw new IllegalStateException( "Found multiple results for user which is not allowed (allowMultipleResults=false)."); final LdapEntry userResultEntry = userResult.getEntry(); final String userDn = userResultEntry.getDn(); final LdapAttribute userAttribute = userResultEntry.getAttribute(this.userAttributeName); for (final LdapEntry entry : roleResult.getEntries()) { roleAttribute = entry.getAttribute(this.roleAttributeName); if (roleAttribute == null) {
/** * Checks to see if response has a result. * * @param response the response * @return true, if successful */ public static boolean containsResultEntry(final Response<SearchResult> response) { final SearchResult result = response.getResult(); if (result != null && result.getEntry() != null) { return true; } return false; }
for (LdapEntry le : result.getEntries()) { if (mergedEntry == null) { mergedEntry = le; return mergedEntry != null ? new SearchResult(mergedEntry) : new SearchResult();
/** * Verify spnego attribute value. * * @param searchResult the search result * @return true if attribute value exists and has a value */ protected boolean processSpnegoAttribute(final Response<SearchResult> searchResult) { final SearchResult result = searchResult.getResult(); if (result == null || result.getEntries().isEmpty()) { logger.debug("Spnego attribute is not found in the search results"); return false; } final LdapEntry entry = result.getEntry(); final LdapAttribute attribute = entry.getAttribute(this.spnegoAttributeName); return verifySpnegyAttributeValue(attribute); }
/** * Creates an LDIF using the supplied search result. * * @param result search result * * @return LDIF */ protected String createLdif(final SearchResult result) { // build string from results final StringBuilder ldif = new StringBuilder(); if (result != null) { for (LdapEntry le : result.getEntries()) { ldif.append(createLdifEntry(le)); } for (SearchReference sr : result.getReferences()) { ldif.append(createSearchReference(sr)); } } return ldif.toString(); }
/** * Creates a new async search listener. * * @param request ldap search request */ public AsyncSearchListener(final SearchRequest request) { searchRequest = request; searchResult = new SearchResult(searchRequest.getSortBehavior()); }
@Override public boolean validate(final Connection c) { boolean success = false; if (c != null) { try { final SearchOperation search = new SearchOperation(c); final SearchResult result = search.execute(searchRequest).getResult(); success = result.size() > 0; } catch (Exception e) { logger.debug("validation failed for search request {}", searchRequest, e); } } return success; }
se); if (hr.getResult() != null) { searchResult.addEntry(hr.getResult()); sr); if (hr.getResult() != null) { searchResult.addReference(hr.getResult());
/** * Creates a new search result. * * @param entry ldap entry */ public SearchResult(final LdapEntry... entry) { this(); for (LdapEntry e : entry) { addEntry(e); } }
/** * Tests create with one entry. * * @param entry1 ldap entry * @param entry2 ldap entry */ @Test(groups = {"bean"}, dataProvider = "entries") public void createOne(final LdapEntry entry1, final LdapEntry entry2) { final SearchResult sr = new SearchResult(entry1); AssertJUnit.assertEquals(entry1, sr.getEntry()); AssertJUnit.assertEquals(entry1, sr.getEntry("uid=1")); AssertJUnit.assertEquals(entry1, sr.getEntry("UID=1")); AssertJUnit.assertEquals("uid=1", sr.getEntryDns()[0]); AssertJUnit.assertEquals(1, sr.size()); AssertJUnit.assertEquals(sr, new SearchResult(entry1)); sr.clear(); AssertJUnit.assertEquals(0, sr.size()); }