Class AddRequest

All Implemented Interfaces:
ProtocolOp, ReadOnlyAddRequest, ReadOnlyLDAPRequest, Serializable

This class implements the processing necessary to perform an LDAPv3 add operation, which creates a new entry in the directory. An add request contains the DN for the entry and the set of attributes to include. It may also include a set of controls to send to the server.

The contents of the entry to may be specified as a separate DN and collection of attributes, as an Entry object, or as a list of the lines that comprise the LDIF representation of the entry to add as described in RFC 2849. For example, the following code demonstrates creating an add request from the LDIF representation of the entry:
   AddRequest addRequest = new AddRequest(
     "dn: dc=example,dc=com",
     "objectClass: top",
     "objectClass: domain",
     "dc: example");
 


AddRequest objects are mutable and therefore can be altered and re-used for multiple requests. Note, however, that AddRequest objects are not threadsafe and therefore a single AddRequest object instance should not be used to process multiple requests at the same time.
See Also:
  • Constructor Details

    • AddRequest

      public AddRequest(@NotNull String dn, @NotNull Attribute... attributes)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
    • AddRequest

      public AddRequest(@NotNull String dn, @NotNull Attribute[] attributes, @Nullable Control[] controls)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
      controls - The set of controls to include in the request.
    • AddRequest

      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
    • AddRequest

      public AddRequest(@NotNull String dn, @NotNull Collection<Attribute> attributes, @Nullable Control[] controls)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
      controls - The set of controls to include in the request.
    • AddRequest

      public AddRequest(@NotNull DN dn, @NotNull Attribute... attributes)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
    • AddRequest

      public AddRequest(@NotNull DN dn, @NotNull Attribute[] attributes, @Nullable Control[] controls)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
      controls - The set of controls to include in the request.
    • AddRequest

      public AddRequest(@NotNull DN dn, @NotNull Collection<Attribute> attributes)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
    • AddRequest

      public AddRequest(@NotNull DN dn, @NotNull Collection<Attribute> attributes, @Nullable Control[] controls)
      Creates a new add request with the provided DN and set of attributes.
      Parameters:
      dn - The DN for the entry to add. It must not be null.
      attributes - The set of attributes to include in the entry to add. It must not be null.
      controls - The set of controls to include in the request.
    • AddRequest

      public AddRequest(@NotNull Entry entry)
      Creates a new add request to add the provided entry.
      Parameters:
      entry - The entry to be added. It must not be null.
    • AddRequest

      public AddRequest(@NotNull Entry entry, @Nullable Control[] controls)
      Creates a new add request to add the provided entry.
      Parameters:
      entry - The entry to be added. It must not be null.
      controls - The set of controls to include in the request.
    • AddRequest

      public AddRequest(@NotNull String... ldifLines) throws LDIFException
      Creates a new add request with the provided entry in LDIF form.
      Parameters:
      ldifLines - The lines that comprise the LDIF representation of the entry to add. It must not be null or empty. It may represent a standard LDIF entry, or it may represent an LDIF add change record (optionally including controls).
      Throws:
      LDIFException - If the provided LDIF data cannot be decoded as an entry.
  • Method Details

    • getDN

      @NotNull public String getDN()
      Retrieves the DN for this add request.
      Specified by:
      getDN in interface ReadOnlyAddRequest
      Returns:
      The DN for this add request.
    • setDN

      public void setDN(@NotNull String dn)
      Specifies the DN for this add request.
      Parameters:
      dn - The DN for this add request. It must not be null.
    • setDN

      public void setDN(@NotNull DN dn)
      Specifies the DN for this add request.
      Parameters:
      dn - The DN for this add request. It must not be null.
    • getAttributes

      Retrieves the set of attributes for this add request.
      Specified by:
      getAttributes in interface ReadOnlyAddRequest
      Returns:
      The set of attributes for this add request.
    • getAttribute

      Retrieves the specified attribute from this add request.
      Specified by:
      getAttribute in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute to retrieve. It must not be null.
      Returns:
      The requested attribute, or null if it does not exist in the add request.
    • hasAttribute

      public boolean hasAttribute(@NotNull String attributeName)
      Indicates whether this add request contains the specified attribute.
      Specified by:
      hasAttribute in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute for which to make the determination. It must not be null.
      Returns:
      true if this add request contains the specified attribute, or false if not.
    • hasAttribute

      public boolean hasAttribute(@NotNull Attribute attribute)
      Indicates whether this add request contains the specified attribute. It will only return true if this add request contains an attribute with the same name and exact set of values.
      Specified by:
      hasAttribute in interface ReadOnlyAddRequest
      Parameters:
      attribute - The attribute for which to make the determination. It must not be null.
      Returns:
      true if this add request contains the specified attribute, or false if not.
    • hasAttributeValue

      public boolean hasAttributeValue(@NotNull String attributeName, @NotNull String attributeValue)
      Indicates whether this add request contains an attribute with the given name and value.
      Specified by:
      hasAttributeValue in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute for which to make the determination. It must not be null.
      attributeValue - The value for which to make the determination. It must not be null.
      Returns:
      true if this add request contains an attribute with the specified name and value, or false if not.
    • hasAttributeValue

      public boolean hasAttributeValue(@NotNull String attributeName, @NotNull String attributeValue, @NotNull MatchingRule matchingRule)
      Indicates whether this add request contains an attribute with the given name and value.
      Specified by:
      hasAttributeValue in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute for which to make the determination. It must not be null.
      attributeValue - The value for which to make the determination. It must not be null.
      matchingRule - The matching rule to use to make the determination. It must not be null.
      Returns:
      true if this add request contains an attribute with the specified name and value, or false if not.
    • hasAttributeValue

      public boolean hasAttributeValue(@NotNull String attributeName, @NotNull byte[] attributeValue)
      Indicates whether this add request contains an attribute with the given name and value.
      Specified by:
      hasAttributeValue in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute for which to make the determination. It must not be null.
      attributeValue - The value for which to make the determination. It must not be null.
      Returns:
      true if this add request contains an attribute with the specified name and value, or false if not.
    • hasAttributeValue

      public boolean hasAttributeValue(@NotNull String attributeName, @NotNull byte[] attributeValue, @NotNull MatchingRule matchingRule)
      Indicates whether this add request contains an attribute with the given name and value.
      Specified by:
      hasAttributeValue in interface ReadOnlyAddRequest
      Parameters:
      attributeName - The name of the attribute for which to make the determination. It must not be null.
      attributeValue - The value for which to make the determination. It must not be null.
      matchingRule - The matching rule to use to make the determination. It must not be null.
      Returns:
      true if this add request contains an attribute with the specified name and value, or false if not.
    • hasObjectClass

      public boolean hasObjectClass(@NotNull String objectClassName)
      Indicates whether this add request contains the specified object class.
      Specified by:
      hasObjectClass in interface ReadOnlyAddRequest
      Parameters:
      objectClassName - The name of the object class for which to make the determination. It must not be null.
      Returns:
      true if this add request contains the specified object class, or false if not.
    • toEntry

      Retrieves an Entry object containing the DN and attributes of this add request.
      Specified by:
      toEntry in interface ReadOnlyAddRequest
      Returns:
      An Entry object containing the DN and attributes of this add request.
    • setAttributes

      public void setAttributes(@NotNull Attribute[] attributes)
      Specifies the set of attributes for this add request. It must not be null.
      Parameters:
      attributes - The set of attributes for this add request.
    • setAttributes

      public void setAttributes(@NotNull Collection<Attribute> attributes)
      Specifies the set of attributes for this add request. It must not be null.
      Parameters:
      attributes - The set of attributes for this add request.
    • addAttribute

      public void addAttribute(@NotNull Attribute attribute)
      Adds the provided attribute to the entry to add.
      Parameters:
      attribute - The attribute to be added to the entry to add. It must not be null.
    • addAttribute

      public void addAttribute(@NotNull String name, @NotNull String value)
      Adds the provided attribute to the entry to add.
      Parameters:
      name - The name of the attribute to add. It must not be null.
      value - The value for the attribute to add. It must not be null.
    • addAttribute

      public void addAttribute(@NotNull String name, @NotNull byte[] value)
      Adds the provided attribute to the entry to add.
      Parameters:
      name - The name of the attribute to add. It must not be null.
      value - The value for the attribute to add. It must not be null.
    • addAttribute

      public void addAttribute(@NotNull String name, @NotNull String... values)
      Adds the provided attribute to the entry to add.
      Parameters:
      name - The name of the attribute to add. It must not be null.
      values - The set of values for the attribute to add. It must not be null.
    • addAttribute

      public void addAttribute(@NotNull String name, @NotNull byte[]... values)
      Adds the provided attribute to the entry to add.
      Parameters:
      name - The name of the attribute to add. It must not be null.
      values - The set of values for the attribute to add. It must not be null.
    • removeAttribute

      public boolean removeAttribute(@NotNull String attributeName)
      Removes the attribute with the specified name from the entry to add.
      Parameters:
      attributeName - The name of the attribute to remove. It must not be null.
      Returns:
      true if the attribute was removed from this add request, or false if the add request did not include the specified attribute.
    • removeAttributeValue

      public boolean removeAttributeValue(@NotNull String name, @NotNull String value)
      Removes the specified attribute value from this add request.
      Parameters:
      name - The name of the attribute to remove. It must not be null.
      value - The value of the attribute to remove. It must not be null.
      Returns:
      true if the attribute value was removed from this add request, or false if the add request did not include the specified attribute value.
    • removeAttribute

      public boolean removeAttribute(@NotNull String name, @NotNull byte[] value)
      Removes the specified attribute value from this add request.
      Parameters:
      name - The name of the attribute to remove. It must not be null.
      value - The value of the attribute to remove. It must not be null.
      Returns:
      true if the attribute value was removed from this add request, or false if the add request did not include the specified attribute value.
    • replaceAttribute

      public void replaceAttribute(@NotNull Attribute attribute)
      Replaces the specified attribute in the entry to add. If no attribute with the given name exists in the add request, it will be added.
      Parameters:
      attribute - The attribute to be replaced in this add request. It must not be null.
    • replaceAttribute

      public void replaceAttribute(@NotNull String name, @NotNull String value)
      Replaces the specified attribute in the entry to add. If no attribute with the given name exists in the add request, it will be added.
      Parameters:
      name - The name of the attribute to be replaced. It must not be null.
      value - The new value for the attribute. It must not be null.
    • replaceAttribute

      public void replaceAttribute(@NotNull String name, @NotNull byte[] value)
      Replaces the specified attribute in the entry to add. If no attribute with the given name exists in the add request, it will be added.
      Parameters:
      name - The name of the attribute to be replaced. It must not be null.
      value - The new value for the attribute. It must not be null.
    • replaceAttribute

      public void replaceAttribute(@NotNull String name, @NotNull String... values)
      Replaces the specified attribute in the entry to add. If no attribute with the given name exists in the add request, it will be added.
      Parameters:
      name - The name of the attribute to be replaced. It must not be null.
      values - The new set of values for the attribute. It must not be null.
    • replaceAttribute

      public void replaceAttribute(@NotNull String name, @NotNull byte[]... values)
      Replaces the specified attribute in the entry to add. If no attribute with the given name exists in the add request, it will be added.
      Parameters:
      name - The name of the attribute to be replaced. It must not be null.
      values - The new set of values for the attribute. It must not be null.
    • getProtocolOpType

      public byte getProtocolOpType()
      Retrieves the BER type for this protocol op.
      Specified by:
      getProtocolOpType in interface ProtocolOp
      Returns:
      The BER type for this protocol op.
    • writeTo

      public void writeTo(@NotNull ASN1Buffer buffer)
      Writes an ASN.1-encoded representation of this LDAP protocol op to the provided ASN.1 buffer. This method is intended for internal use only and should not be used by third-party code.
      Specified by:
      writeTo in interface ProtocolOp
      Parameters:
      buffer - The ASN.1 buffer to which the encoded representation should be written.
    • encodeProtocolOp

      Encodes the add request protocol op to an ASN.1 element.
      Specified by:
      encodeProtocolOp in interface ProtocolOp
      Returns:
      The ASN.1 element with the encoded add request protocol op.
    • process

      @NotNull protected LDAPResult process(@NotNull LDAPConnection connection, int depth) throws LDAPException
      Sends this add request to the directory server over the provided connection and returns the associated response.
      Specified by:
      process in class LDAPRequest
      Parameters:
      connection - The connection to use to communicate with the directory server.
      depth - The current referral depth for this request. It should always be one for the initial request, and should only be incremented when following referrals.
      Returns:
      An LDAP result object that provides information about the result of the add processing.
      Throws:
      LDAPException - If a problem occurs while sending the request or reading the response.
    • getLastMessageID

      public int getLastMessageID()
      Retrieves the message ID for the last LDAP message sent using this request.
      Specified by:
      getLastMessageID in class LDAPRequest
      Returns:
      The message ID for the last LDAP message sent using this request, or -1 if it no LDAP messages have yet been sent using this request.
    • getOperationType

      Retrieves the type of operation that is represented by this request.
      Specified by:
      getOperationType in class LDAPRequest
      Returns:
      The type of operation that is represented by this request.
    • duplicate

      Creates a new instance of this LDAP request that may be modified without impacting this request.
      Specified by:
      duplicate in interface ReadOnlyAddRequest
      Specified by:
      duplicate in interface ReadOnlyLDAPRequest
      Returns:
      A new instance of this LDAP request that may be modified without impacting this request.
    • duplicate

      Creates a new instance of this LDAP request that may be modified without impacting this request. The provided controls will be used for the new request instead of duplicating the controls from this request.
      Specified by:
      duplicate in interface ReadOnlyAddRequest
      Specified by:
      duplicate in interface ReadOnlyLDAPRequest
      Parameters:
      controls - The set of controls to include in the duplicate request.
      Returns:
      A new instance of this LDAP request that may be modified without impacting this request.
    • responseReceived

      Throws:
      LDAPException
    • toLDIFChangeRecord

      Retrieves an LDIF add change record with the contents of this add request.
      Specified by:
      toLDIFChangeRecord in interface ReadOnlyAddRequest
      Returns:
      An LDIF add change record with the contents of this add request.
    • toLDIF

      @NotNull public String[] toLDIF()
      Retrieves a string array whose lines contain an LDIF representation of the corresponding add change record.
      Specified by:
      toLDIF in interface ReadOnlyAddRequest
      Returns:
      A string array whose lines contain an LDIF representation of the corresponding add change record.
    • toLDIFString

      Retrieves an LDIF string representation of this add request.
      Specified by:
      toLDIFString in interface ReadOnlyAddRequest
      Returns:
      An LDIF string representation of this add request.
    • toString

      public void toString(@NotNull StringBuilder buffer)
      Appends a string representation of this request to the provided buffer.
      Specified by:
      toString in interface ProtocolOp
      Specified by:
      toString in interface ReadOnlyLDAPRequest
      Specified by:
      toString in class LDAPRequest
      Parameters:
      buffer - The buffer to which to append a string representation of this request.
    • toCode

      public void toCode(@NotNull List<String> lineList, @NotNull String requestID, int indentSpaces, boolean includeProcessing)
      Appends a number of lines comprising the Java source code that can be used to recreate this request to the given list.
      Specified by:
      toCode in interface ReadOnlyLDAPRequest
      Parameters:
      lineList - The list to which the source code lines should be added.
      requestID - The name that should be used as an identifier for the request. If this is null or empty, then a generic ID will be used.
      indentSpaces - The number of spaces that should be used to indent the generated code. It must not be negative.
      includeProcessing - Indicates whether the generated code should include code required to actually process the request and handle the result (if true), or just to generate the request (if false).