Class AddRequest

  • All Implemented Interfaces:
    ProtocolOp, ReadOnlyAddRequest, ReadOnlyLDAPRequest, java.io.Serializable

    @Mutable
    @ThreadSafety(level=NOT_THREADSAFE)
    public final class AddRequest
    extends UpdatableLDAPRequest
    implements ReadOnlyAddRequest, ProtocolOp
    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:
    Serialized Form
    • Constructor Detail

      • AddRequest

        public AddRequest​(java.lang.String dn,
                          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​(java.lang.String dn,
                          Attribute[] attributes,
                          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​(java.lang.String dn,
                          java.util.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​(java.lang.String dn,
                          java.util.Collection<Attribute> attributes,
                          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​(DN dn,
                          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​(DN dn,
                          Attribute[] attributes,
                          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​(DN dn,
                          java.util.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​(DN dn,
                          java.util.Collection<Attribute> attributes,
                          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​(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​(Entry entry,
                          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​(java.lang.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 Detail

      • getDN

        public java.lang.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​(java.lang.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​(DN dn)
        Specifies the DN for this add request.
        Parameters:
        dn - The DN for this add request. It must not be null.
      • getAttribute

        public Attribute getAttribute​(java.lang.String attributeName)
        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​(java.lang.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​(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​(java.lang.String attributeName,
                                         java.lang.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​(java.lang.String attributeName,
                                         java.lang.String attributeValue,
                                         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​(java.lang.String attributeName,
                                         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​(java.lang.String attributeName,
                                         byte[] attributeValue,
                                         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​(java.lang.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

        public Entry 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​(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​(java.util.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​(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​(java.lang.String name,
                                 java.lang.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​(java.lang.String name,
                                 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​(java.lang.String name,
                                 java.lang.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​(java.lang.String name,
                                 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​(java.lang.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​(java.lang.String name,
                                            java.lang.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​(java.lang.String name,
                                       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​(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​(java.lang.String name,
                                     java.lang.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​(java.lang.String name,
                                     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​(java.lang.String name,
                                     java.lang.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​(java.lang.String name,
                                     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.
      • writeTo

        public void writeTo​(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.
      • process

        protected LDAPResult process​(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.
      • duplicate

        public AddRequest duplicate​(Control[] controls)
        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.
      • toLDIF

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

        public java.lang.String 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​(java.lang.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​(java.util.List<java.lang.String> lineList,
                           java.lang.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).