/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.provider; import org.ldaptive.SearchEntry; import org.ldaptive.SearchReference; import org.ldaptive.intermediate.IntermediateResponse; /** * Contains the data returned from a search request. * * @author Middleware Services */ public class SearchItem { /** search entry. */ private final SearchEntry searchEntry; /** search reference. */ private final SearchReference searchReference; /** intermediate response. */ private final IntermediateResponse intermediateResponse; /** * Creates a new search item. * * @param se ldap entry */ public SearchItem(final SearchEntry se) { searchEntry = se; searchReference = null; intermediateResponse = null; } /** * Creates a new search item. * * @param sr searchReference */ public SearchItem(final SearchReference sr) { searchEntry = null; searchReference = sr; intermediateResponse = null; } /** * Creates a new search item. * * @param ir intermediate response */ public SearchItem(final IntermediateResponse ir) { searchEntry = null; searchReference = null; intermediateResponse = ir; } /** * Returns whether this search item contains a search entry. * * @return whether this search item contains a search entry */ public boolean isSearchEntry() { return searchEntry != null; } /** * Returns the search entry in this search item or null if this search item does not contain a search entry. * * @return search entry */ public SearchEntry getSearchEntry() { return searchEntry; } /** * Returns whether this search item contains a search reference. * * @return whether this search item contains a search reference */ public boolean isSearchReference() { return searchReference != null; } /** * Returns the search reference in this search item or null if this search item does not contain a search reference. * * @return searchReference */ public SearchReference getSearchReference() { return searchReference; } /** * Returns whether this search item contains an intermediate response. * * @return whether this search item contains an intermediate response */ public boolean isIntermediateResponse() { return intermediateResponse != null; } /** * Returns the intermediate response in this search item or null if this search item does not contain an intermediate * response. * * @return intermediate response */ public IntermediateResponse getIntermediateResponse() { return intermediateResponse; } @Override public String toString() { String s; if (isSearchEntry()) { s = String.format("[%s@%d::searchEntry=%s]", getClass().getName(), hashCode(), searchEntry); } else if (isSearchReference()) { s = String.format("[%s@%d::searchReference=%s]", getClass().getName(), hashCode(), searchReference); } else if (isIntermediateResponse()) { s = String.format("[%s@%d::intermediateResponse=%s]", getClass().getName(), hashCode(), intermediateResponse); } else { s = String.format("[%s@%d]", getClass().getName(), hashCode()); } return s; } }