Class TreeMapEntry

java.lang.Object
org.forgerock.opendj.ldap.AbstractEntry
org.forgerock.opendj.ldap.TreeMapEntry
All Implemented Interfaces:
Entry

public final class TreeMapEntry extends AbstractEntry
An implementation of the Entry interface which uses a TreeMap for storing attributes. Attributes are returned in ascending order of attribute description, with objectClass first, then all user attributes, and finally any operational attributes. All operations are supported by this implementation. For example, you can build an entry like this:
 Entry entry = new TreeMapEntry("cn=Bob,ou=People,dc=example,dc=com")
    .addAttribute("cn", "Bob")
    .addAttribute("objectclass", "top")
    .addAttribute("objectclass", "person")
    .addAttribute("objectclass", "organizationalPerson")
    .addAttribute("objectclass", "inetOrgPerson")
    .addAttribute("mail", "subgenius@example.com")
    .addAttribute("sn", "Dobbs");
 

A TreeMapEntry stores references to attributes which have been added using the Entry.addAttribute(org.forgerock.opendj.ldap.Attribute, java.util.Collection<? super org.forgerock.opendj.ldap.ByteString>) methods. Attributes sharing the same attribute description are merged by adding the values of the new attribute to the existing attribute. More specifically, the existing attribute must be modifiable for the merge to succeed. Similarly, the AbstractEntry.removeAttribute(org.forgerock.opendj.ldap.Attribute, java.util.Collection<? super org.forgerock.opendj.ldap.ByteString>) methods remove the specified values from the existing attribute. The AbstractEntry.replaceAttribute(org.forgerock.opendj.ldap.Attribute) methods remove the existing attribute (if present) and store a reference to the new attribute - neither the new or existing attribute need to be modifiable in this case.

  • Field Details

    • FACTORY

      public static final EntryFactory FACTORY
      An entry factory which can be used to create new tree map entries.
  • Constructor Details

    • TreeMapEntry

      public TreeMapEntry()
      Creates an entry with an empty (root) distinguished name and no attributes.
    • TreeMapEntry

      public TreeMapEntry(DN name)
      Creates an empty entry using the provided distinguished name and no attributes.
      Parameters:
      name - The distinguished name of this entry.
      Throws:
      NullPointerException - If name was null.
    • TreeMapEntry

      public TreeMapEntry(Entry entry)
      Creates an entry having the same distinguished name, attributes, and object classes of the provided entry. This constructor performs a shallow copy of entry and will not copy the attributes contained in entry.

      A deep copy constructor is provided by deepCopyOfEntry(Entry)

      Parameters:
      entry - The entry to be copied.
      Throws:
      NullPointerException - If entry was null.
      See Also:
    • TreeMapEntry

      public TreeMapEntry(String name)
      Creates an empty entry using the provided distinguished name decoded using the default schema.
      Parameters:
      name - The distinguished name of this entry.
      Throws:
      org.forgerock.i18n.LocalizedIllegalArgumentException - If name could not be decoded using the default schema.
      NullPointerException - If name was null.
    • TreeMapEntry

      public TreeMapEntry(String... ldifLines)
      Creates a new entry using the provided lines of LDIF decoded using the default schema.
      Parameters:
      ldifLines - Lines of LDIF containing the an LDIF add change record or an LDIF entry record.
      Throws:
      org.forgerock.i18n.LocalizedIllegalArgumentException - If ldifLines was empty, or contained invalid LDIF, or could not be decoded using the default schema.
      NullPointerException - If ldifLines was null .
  • Method Details

    • deepCopyOfEntry

      public static TreeMapEntry deepCopyOfEntry(Entry entry)
      Creates an entry having the same distinguished name, attributes, and object classes of the provided entry. This constructor performs a deep copy of entry and will copy each attribute as a LinkedAttribute.

      A shallow copy constructor is provided by TreeMapEntry(Entry).

      Parameters:
      entry - The entry to be copied.
      Returns:
      A deep copy of entry.
      Throws:
      NullPointerException - If entry was null.
      See Also:
    • addAttribute

      public final boolean addAttribute(Attribute attribute, Collection<? super ByteString> duplicateValues)
      Description copied from interface: Entry
      Ensures that this entry contains the provided attribute and values (optional operation). This method has the following semantics:
      • If this entry does not already contain an attribute with a matching attribute description, then this entry will be modified such that it contains attribute, even if it is empty.
      • If this entry already contains an attribute with a matching attribute description, then the attribute values contained in attribute will be merged with the existing attribute values.

      NOTE: When attribute is non-empty, this method implements LDAP Modify add semantics.

      Parameters:
      attribute - The attribute values to be added to this entry, merging with any existing attribute values.
      duplicateValues - A collection into which duplicate values will be added, or null if duplicate values should not be saved.
      Returns:
      true if this entry changed as a result of this call.
    • clearAttributes

      public final Entry clearAttributes()
      Description copied from interface: Entry
      Removes all the attributes from this entry (optional operation).
      Returns:
      This entry.
    • getAllAttributes

      public final Iterable<Attribute> getAllAttributes()
      Description copied from interface: Entry
      Returns an Iterable containing all of the attributes in this entry. The returned Iterable may be used to remove attributes if permitted by this entry.
      Returns:
      An Iterable containing all of the attributes.
    • getAttribute

      public final Attribute getAttribute(AttributeDescription attributeDescription)
      Description copied from interface: Entry
      Returns the named attribute contained in this entry, or null if it is not included with this entry.
      Specified by:
      getAttribute in interface Entry
      Overrides:
      getAttribute in class AbstractEntry
      Parameters:
      attributeDescription - The name of the attribute to be returned.
      Returns:
      The named attribute, or null if it is not included with this entry.
    • getAttributeCount

      public final int getAttributeCount()
      Description copied from interface: Entry
      Returns the number of attributes in this entry.
      Returns:
      The number of attributes.
    • getName

      public final DN getName()
      Description copied from interface: Entry
      Returns the string representation of the distinguished name of this entry.
      Returns:
      The string representation of the distinguished name.
    • removeAttribute

      public final boolean removeAttribute(Attribute attribute, Collection<? super ByteString> missingValues)
      Description copied from interface: Entry
      Removes all of the attribute values contained in attribute from this entry if it is present (optional operation). If attribute is empty then the entire attribute will be removed if it is present.

      NOTE: This method implements LDAP Modify delete semantics.

      Specified by:
      removeAttribute in interface Entry
      Overrides:
      removeAttribute in class AbstractEntry
      Parameters:
      attribute - The attribute values to be removed from this entry, which may be empty if the entire attribute is to be removed.
      missingValues - A collection into which missing values will be added, or null if missing values should not be saved.
      Returns:
      true if this entry changed as a result of this call.
    • setName

      public final Entry setName(DN dn)
      Description copied from interface: Entry
      Sets the distinguished name of this entry (optional operation).
      Parameters:
      dn - The distinguished name.
      Returns:
      This entry.