Package org.ldaptive

Class SearchResponse

All Implemented Interfaces:
Freezable, Message, Result

public final class SearchResponse extends AbstractResult implements Freezable
Response that encapsulates the result elements of a search request. This class formally decodes the SearchResultDone LDAP message defined as:
   SearchResultDone ::= [APPLICATION 5] LDAPResult
 
  • Field Details

    • PROTOCOL_OP

      public static final int PROTOCOL_OP
      BER protocol number.
      See Also:
    • HASH_CODE_SEED

      private static final int HASH_CODE_SEED
      hash code seed.
      See Also:
    • RESULT_CODE_PATH

      private static final DERPath RESULT_CODE_PATH
      DER path to result code.
    • MATCHED_DN_PATH

      private static final DERPath MATCHED_DN_PATH
      DER path to matched DN.
    • DIAGNOSTIC_MESSAGE_PATH

      private static final DERPath DIAGNOSTIC_MESSAGE_PATH
      DER path to diagnostic message.
    • REFERRAL_PATH

      private static final DERPath REFERRAL_PATH
      DER path to referral.
    • resultEntries

      private final List<LdapEntry> resultEntries
      Entries contained in this result.
    • resultReferences

      private final List<SearchResultReference> resultReferences
      Search result references contained in this result.
    • immutable

      private volatile boolean immutable
      Whether this object has been marked immutable.
  • Constructor Details

    • SearchResponse

      public SearchResponse()
      Default constructor.
    • SearchResponse

      public SearchResponse(DERBuffer buffer)
      Creates a new search result done.
      Parameters:
      buffer - to decode
  • Method Details

    • freeze

      public void freeze()
      Description copied from interface: Freezable
      Freezes this object, making it immutable.
      Specified by:
      freeze in interface Freezable
    • isFrozen

      public boolean isFrozen()
      Description copied from interface: Freezable
      Determines whether this object is frozen, i.e. immutable.
      Specified by:
      isFrozen in interface Freezable
      Returns:
      True if Freezable.freeze() has been invoked, false otherwise.
    • assertMutable

      public void assertMutable()
      Description copied from interface: Freezable
      Asserts that this object is in a state to permit mutations. Classes that implement this interface should invoke this method prior to performing any mutation of internal state as a means of implementing the "frozen" usage contract.
      Specified by:
      assertMutable in interface Freezable
    • getEntries

      public Collection<LdapEntry> getEntries()
      Returns the entries in this search result. Collection will be immutable if immutable is true.
      Returns:
      collection of ldap entry
    • getEntry

      public LdapEntry getEntry()
      Returns a single entry of this search result. If multiple entries exist the first entry returned by the underlying iterator is used. If no entries exist null is returned.
      Returns:
      search result entry
    • getEntry

      public LdapEntry getEntry(String dn)
      Returns the ldap entry in this result with the supplied DN. DN comparison is attempted with a normalized string comparison, see DefaultRDnNormalizer.
      Parameters:
      dn - of the entry to return
      Returns:
      search result entry or null if no entry matching the dn could be found
      Throws:
      IllegalArgumentException - if the supplied dn cannot be normalized
    • getEntryDns

      public Collection<String> getEntryDns()
      Returns the entry DNs in this result.
      Returns:
      entry DNs
    • addEntries

      public void addEntries(LdapEntry... entry)
      Adds an entry to this search result.
      Parameters:
      entry - entry to add
    • addEntries

      public void addEntries(Collection<LdapEntry> entries)
      Adds entry(s) to this search result.
      Parameters:
      entries - collection of entries to add
    • removeEntries

      public void removeEntries(LdapEntry... entry)
      Removes an entry from this search result.
      Parameters:
      entry - entry to remove
    • removeEntries

      public void removeEntries(Collection<LdapEntry> entries)
      Removes entry(s) from this search result.
      Parameters:
      entries - collection of entries to remove
    • entrySize

      public int entrySize()
      Returns the number of entries in this search result.
      Returns:
      number of entries in this search result
    • getReferences

      public Collection<SearchResultReference> getReferences()
      Returns a collection of search result reference.
      Returns:
      collection of search result reference
    • getReference

      public SearchResultReference getReference()
      Returns a single search reference of this result. If multiple references exist the first references returned by the underlying iterator is used. If no references exist null is returned.
      Returns:
      search result references
    • addReferences

      public void addReferences(SearchResultReference... reference)
      Adds a reference to this search result.
      Parameters:
      reference - reference to add
    • addReferences

      public void addReferences(Collection<SearchResultReference> references)
      Adds references(s) to this search result.
      Parameters:
      references - collection of references to add
    • removeReferences

      public void removeReferences(SearchResultReference... reference)
      Removes a reference from this search result.
      Parameters:
      reference - reference to remove
    • removeReferences

      public void removeReferences(Collection<SearchResultReference> references)
      Removes references(s) from this search result.
      Parameters:
      references - collection of references to remove
    • referenceSize

      public int referenceSize()
      Returns the number of references in this search result.
      Returns:
      number of references in this search result
    • subResult

      public SearchResponse subResult(int fromIndex, int toIndex)
      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.
      Parameters:
      fromIndex - low endpoint of the search result (inclusive)
      toIndex - high endpoint of the search result (exclusive)
      Returns:
      portion of this search result
      Throws:
      IndexOutOfBoundsException - for illegal index values
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class AbstractResult
    • hashCode

      public int hashCode()
      Description copied from class: AbstractMessage
      Returns the hash code for this object.
      Specified by:
      hashCode in class AbstractMessage
      Returns:
      hash code
    • toString

      public String toString()
      Overrides:
      toString in class AbstractResult
    • copy

      public static SearchResponse copy(SearchResponse response)
      Creates a mutable copy of the supplied search response.
      Parameters:
      response - to copy
      Returns:
      new search response instance
    • sort

      public static SearchResponse sort(SearchResponse result)
      Returns a new response whose entries are sorted naturally by DN. Each attribute and each attribute value are also sorted. See LdapEntry.sort(LdapEntry) and LdapAttribute.sort(LdapAttribute).
      Parameters:
      result - response to sort
      Returns:
      sorted response
    • builder

      public static SearchResponse.Builder builder()
      Creates a builder for this class.
      Returns:
      new builder