Class AddRequest

java.lang.Object
org.forgerock.opendj.ldap.messages.AddRequest
All Implemented Interfaces:
Entry, ProtocolOp, Request, ChangeRecord

public final class AddRequest extends Object implements Request, ChangeRecord, Entry
The Add operation allows a client to request the addition of an entry into the Directory.

The RDN attribute(s) may or may not be included in the Add request. NO-USER-MODIFICATION attributes such as the createTimestamp or creatorsName attributes must not be included, since the server maintains these automatically.

  • Method Details

    • accept

      public <R, P, E extends Exception> R accept(RequestVisitor<R,P,E> v, P p) throws E
      Description copied from interface: Request
      Applies a RequestVisitor to this Request.
      Specified by:
      accept in interface Request
      Type Parameters:
      R - The return type of the visitor's methods.
      P - The type of the additional parameters to the visitor's methods.
      E - The type of the exception thrown by the visitor method if it fails, or NeverThrowsException if the visitor cannot fail.
      Parameters:
      v - The request visitor.
      p - Optional additional visitor parameter.
      Returns:
      A result as specified by the visitor.
      Throws:
      E - If the visitor failed.
    • addAttribute

      public boolean addAttribute(Attribute attribute)
      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.

      Specified by:
      addAttribute in interface Entry
      Parameters:
      attribute - The attribute values to be added to this entry, merging with any existing attribute values.
      Returns:
      true if this entry changed as a result of this call.
    • addAttribute

      public 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.

      Specified by:
      addAttribute in interface Entry
      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.
    • addAttribute

      public AddRequest addAttribute(String attributeDescription, Object... values)
      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.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

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

      Specified by:
      addAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose values are to be added.
      values - The attribute values to be added to this entry, merging any existing attribute values.
      Returns:
      This entry.
    • addAttributeIfAbsent

      public Attribute addAttributeIfAbsent(Attribute attribute)
      Description copied from interface: Entry
      Adds the provided attribute if it is not already present in this Entry and returns null. Otherwise returns the existing attribute.

      NOTE: this method is equivalent to Map.putIfAbsent(Object, Object).

      Specified by:
      addAttributeIfAbsent in interface Entry
      Parameters:
      attribute - The non-null attribute to be added if it is not already present.
      Returns:
      null if the attribute was added, or the existing attribute (in which case the entry is unchanged).
    • mergeAttribute

      public Attribute mergeAttribute(Attribute attribute, BiFunction<? super Attribute,? super Attribute,? extends Attribute> mergeFunction)
      Description copied from interface: Entry
      Adds the provided attribute if it is not already present in this Entry. Otherwise, replaces the existing attribute with the results of the remapping function, or removes it if the result is null.

      NOTE: this method is equivalent to Map.merge(Object, Object, BiFunction).

      Specified by:
      mergeAttribute in interface Entry
      Parameters:
      attribute - The non-null attribute to be added or merged with the existing attribute.
      mergeFunction - The function to recompute the attribute if it is already present in this Entry.
      Returns:
      The attribute that was added or merged, or null if the attribute was removed.
    • clearAttributes

      public AddRequest clearAttributes()
      Description copied from interface: Entry
      Removes all the attributes from this entry (optional operation).
      Specified by:
      clearAttributes in interface Entry
      Returns:
      This entry.
    • containsAnyAttributes

      public boolean containsAnyAttributes(AttributeDescription attributeDescription)
      Description copied from interface: Entry
      Returns true if this entry contains any non-empty attributes having an attribute description which is a sub-type of the provided attribute description.

      NOTE: this method performs the matching defined for an LDAP search presence filter. For example, given the attribute description "name" then this method will return true if the entry contains "name", "name;option", "cn", or "cn;option". This method is NOT suitable for schema checking, which uses different matching semantics. Specifically, an entry which MUST contain "name" is not valid if it contains "cn", but not "name". See RFC 4512 - Attribute Description Hierarchies.

      Specified by:
      containsAnyAttributes in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose presence in this entry is to be tested.
      Returns:
      true if this entry contains any non-empty attributes having an attribute description which is a sub-type of the provided attribute description.
    • containsAnyAttributes

      public boolean containsAnyAttributes(String attributeDescription)
      Description copied from interface: Entry
      Returns true if this entry contains any non-empty attributes having an attribute description which is a sub-type of the provided attribute description.

      NOTE: this method performs the matching defined for an LDAP search presence filter. For example, given the attribute description "name" then this method will return true if the entry contains "name", "name;option", "cn", or "cn;option". This method is NOT suitable for schema checking, which uses different matching semantics. Specifically, an entry which MUST contain "name" is not valid if it contains "cn", but not "name". See RFC 4512 - Attribute Description Hierarchies.

      Specified by:
      containsAnyAttributes in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose presence in this entry is to be tested.
      Returns:
      true if this entry contains any non-empty attributes having an attribute description which is a sub-type of the provided attribute description.
    • containsAttribute

      public boolean containsAttribute(Attribute attribute, Collection<? super ByteString> missingValues)
      Description copied from interface: Entry
      Returns true if this entry contains all of the attribute values contained in attribute. If attribute is empty then this method will return true if the attribute is present in this entry, regardless of how many values it contains.
      Specified by:
      containsAttribute in interface Entry
      Parameters:
      attribute - The attribute values whose presence in this entry is to be tested.
      missingValues - A collection into which missing values will be added, or null if missing values should not be saved.
      Returns:
      true if this entry contains all of the attribute values contained in attribute.
    • containsAttribute

      public boolean containsAttribute(String attributeDescription, Object... values)
      Description copied from interface: Entry
      Returns true if this entry contains all of the attribute values contained in values. If values is null or empty then this method will return true if the attribute is present in this entry, regardless of how many values it contains.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

      Specified by:
      containsAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose presence in this entry is to be tested.
      values - The attribute values whose presence in this entry is to be tested, which may be null.
      Returns:
      true if this entry contains all of the attribute values contained in values.
    • containsAttribute

      public boolean containsAttribute(AttributeDescription attributeDescription, Object... values)
      Description copied from interface: Entry
      Returns true if this entry contains all of the attribute values contained in values. If values is null or empty then this method will return true if the attribute is present in this entry, regardless of how many values it contains.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

      Specified by:
      containsAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose presence in this entry is to be tested.
      values - The attribute values whose presence in this entry is to be tested, which may be null.
      Returns:
      true if this entry contains all of the attribute values contained in values.
    • equals

      public boolean equals(Object object)
      Description copied from interface: Entry
      Returns true if object is an entry which is equal to this entry. Two entries are considered equal if their distinguished names are equal, they both have the same number of attributes, and every attribute contained in the first entry is also contained in the second entry.
      Specified by:
      equals in interface Entry
      Overrides:
      equals in class Object
      Parameters:
      object - The object to be tested for equality with this entry.
      Returns:
      true if object is an entry which is equal to this entry, or false if not.
    • getAllAttributes

      public 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.
      Specified by:
      getAllAttributes in interface Entry
      Returns:
      An Iterable containing all of the attributes.
    • getAllAttributes

      public Iterable<Attribute> getAllAttributes(AttributeDescription attributeDescription)
      Description copied from interface: Entry
      Returns an Iterable containing all the attributes in this entry having an attribute description which is a sub-type of the provided attribute description. The returned Iterable may be used to remove attributes if permitted by this entry.
      Specified by:
      getAllAttributes in interface Entry
      Parameters:
      attributeDescription - The name of the attributes to be returned.
      Returns:
      An Iterable containing the matching attributes.
    • getAllAttributes

      public Iterable<Attribute> getAllAttributes(String attributeDescription)
      Description copied from interface: Entry
      Returns an Iterable containing all the attributes in this entry having an attribute description which is a sub-type of the provided attribute description. The returned Iterable may be used to remove attributes if permitted by this entry.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Specified by:
      getAllAttributes in interface Entry
      Parameters:
      attributeDescription - The name of the attributes to be returned.
      Returns:
      An Iterable containing the matching attributes.
    • getAttribute

      public 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
      Parameters:
      attributeDescription - The name of the attribute to be returned.
      Returns:
      The named attribute, or null if it is not included with this entry.
    • getAttribute

      public Attribute getAttribute(String attributeDescription)
      Description copied from interface: Entry
      Returns the named attribute contained in this entry, or null if it is not included with this entry.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Specified by:
      getAttribute in interface Entry
      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 int getAttributeCount()
      Description copied from interface: Entry
      Returns the number of attributes in this entry.
      Specified by:
      getAttributeCount in interface Entry
      Returns:
      The number of attributes.
    • getName

      public Dn getName()
      Description copied from interface: ChangeRecord
      Returns the distinguished name of the entry being modified by this ChangeRecord.
      Specified by:
      getName in interface ChangeRecord
      Specified by:
      getName in interface Entry
      Returns:
      The distinguished name of the entry being modified.
    • hashCode

      public int hashCode()
      Description copied from interface: Entry
      Returns the hash code for this entry. It will be calculated as the sum of the hash codes of the distinguished name and all of the attributes.
      Specified by:
      hashCode in interface Entry
      Overrides:
      hashCode in class Object
      Returns:
      The hash code for this entry.
    • parseAttribute

      public AttributeParser parseAttribute(AttributeDescription attributeDescription)
      Description copied from interface: Entry
      Returns a parser for the named attribute contained in this entry.
      Specified by:
      parseAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute to be parsed.
      Returns:
      A parser for the named attribute.
    • parseAttribute

      public AttributeParser parseAttribute(String attributeDescription)
      Description copied from interface: Entry
      Returns a parser for the named attribute contained in this entry.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Specified by:
      parseAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute to be parsed.
      Returns:
      A parser for the named attribute.
    • removeAttribute

      public 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
      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.
    • removeAttribute

      public boolean removeAttribute(AttributeDescription attributeDescription)
      Description copied from interface: Entry
      Removes the named attribute from this entry if it is present (optional operation). If this attribute does not contain the attribute, the call leaves this entry unchanged and returns false.
      Specified by:
      removeAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute to be removed.
      Returns:
      true if this entry changed as a result of this call.
    • removeAttribute

      public AddRequest removeAttribute(String attributeDescription, Object... values)
      Description copied from interface: Entry
      Removes all of the attribute values contained in values from the named attribute in this entry if it is present (optional operation). If values is null or empty then the entire attribute will be removed if it is present.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

      NOTE: This method implements LDAP Modify delete semantics.

      Specified by:
      removeAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose values are to be removed.
      values - The attribute values to be removed from this entry, which may be null or empty if the entire attribute is to be removed.
      Returns:
      This entry.
    • replaceAttribute

      public boolean replaceAttribute(Attribute attribute)
      Description copied from interface: Entry
      Adds all of the attribute values contained in attribute to this entry, replacing any existing attribute values (optional operation). If attribute is empty then the entire attribute will be removed if it is present.

      NOTE: This method implements LDAP Modify replace semantics as described in RFC 4511 - Section 4.6. Modify Operation.

      Specified by:
      replaceAttribute in interface Entry
      Parameters:
      attribute - The attribute values to be added to this entry, replacing any existing attribute values, and which may be empty if the entire attribute is to be removed.
      Returns:
      true if this entry changed as a result of this call.
    • replaceAttribute

      public AddRequest replaceAttribute(String attributeDescription, Object... values)
      Description copied from interface: Entry
      Adds all of the attribute values contained in values to this entry, replacing any existing attribute values (optional operation). If values is null or empty then the entire attribute will be removed if it is present.

      The attribute description will be decoded using the schema associated with this entry (usually the default schema).

      Any attribute values which are not instances of ByteString will be converted using the ByteString.valueOfObject(Object) method.

      NOTE: This method implements LDAP Modify replace semantics as described in RFC 4511 - Section 4.6. Modify Operation.

      Specified by:
      replaceAttribute in interface Entry
      Parameters:
      attributeDescription - The name of the attribute whose values are to be replaced.
      values - The attribute values to be added to this entry, replacing any existing attribute values, and which may be null or empty if the entire attribute is to be removed.
      Returns:
      This entry.
    • setName

      public AddRequest setName(Dn dn)
      Description copied from interface: ChangeRecord
      Sets the distinguished name of the entry to be updated. The server shall not perform any alias dereferencing in determining the object to be updated.
      Specified by:
      setName in interface ChangeRecord
      Specified by:
      setName in interface Entry
      Parameters:
      dn - The distinguished name of the entry to be updated.
      Returns:
      This change record.
    • setName

      public AddRequest setName(String dn)
      Description copied from interface: ChangeRecord
      Sets the distinguished name of the entry to be updated. The server shall not perform any alias dereferencing in determining the object to be updated.
      Specified by:
      setName in interface ChangeRecord
      Specified by:
      setName in interface Entry
      Parameters:
      dn - The distinguished name of the entry to be updated.
      Returns:
      This change record.
    • getType

      public Request.RequestType getType()
      Description copied from interface: Request
      Returns the type of this request to avoid expensive instanceof checks.
      Specified by:
      getType in interface Request
      Returns:
      the type of this request
    • toString

      public String toString()
      Description copied from interface: Entry
      Returns a string representation of this entry.
      Specified by:
      toString in interface Entry
      Returns:
      The string representation of this entry.
    • addControl

      public final AddRequest addControl(Control control)
      Description copied from interface: ProtocolOp
      Adds the provided control to this protocol-op.
      Specified by:
      addControl in interface ProtocolOp
      Parameters:
      control - The control to be added to this protocol-op.
      Returns:
      This protocol-op.
    • addControls

      public final AddRequest addControls(Iterable<? extends Control> controls)
      Description copied from interface: ProtocolOp
      Adds the provided controls to this protocol-op.
      Specified by:
      addControls in interface ProtocolOp
      Parameters:
      controls - The controls to be added to this protocol-op.
      Returns:
      This protocol-op.
    • removeControls

      public final AddRequest removeControls(String oid)
      Description copied from interface: ProtocolOp
      Removes all the controls having the specified OID.
      Specified by:
      removeControls in interface ProtocolOp
      Parameters:
      oid - The numeric OID of the protocol-op control to remove.
      Returns:
      This protocol-op.
    • containsControl

      public final boolean containsControl(String oid)
      Description copied from interface: ProtocolOp
      Returns true if this protocol-op contains the specified control.
      Specified by:
      containsControl in interface ProtocolOp
      Parameters:
      oid - The numeric OID of the protocol-op control.
      Returns:
      true if this protocol-op contains the specified control.
    • getControl

      public final <C extends Control> C getControl(ControlDecoder<C> decoder, DecodeOptions options) throws DecodeException
      Description copied from interface: ProtocolOp
      Decodes and returns the first control in this protocol-op having an OID corresponding to the provided control decoder.
      Specified by:
      getControl in interface ProtocolOp
      Type Parameters:
      C - The type of control to be decoded and returned.
      Parameters:
      decoder - The control decoder.
      options - The set of decode options which should be used when decoding the control.
      Returns:
      The decoded control, or null if the control is not included with this protocol-op.
      Throws:
      DecodeException - If the control could not be decoded because it was malformed in some way (e.g. the control value was missing, or its content could not be decoded).
    • getControls

      public final List<Control> getControls()
      Description copied from interface: ProtocolOp
      Returns a List containing the controls included with this protocol-op. The returned List may be modified if permitted by this protocol-op.
      Specified by:
      getControls in interface ProtocolOp
      Returns:
      A List containing the controls.