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​(@NotNull
                          java.lang.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
                          java.lang.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

        public AddRequest​(@NotNull
                          java.lang.String dn,
                          @NotNull
                          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​(@NotNull
                          java.lang.String dn,
                          @NotNull
                          java.util.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
                          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​(@NotNull
                          DN dn,
                          @NotNull
                          java.util.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
                          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

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

        @Nullable
        public Attribute getAttribute​(@NotNull
                                      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​(@NotNull
                                    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​(@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
                                         java.lang.String attributeName,
                                         @NotNull
                                         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​(@NotNull
                                         java.lang.String attributeName,
                                         @NotNull
                                         java.lang.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
                                         java.lang.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
                                         java.lang.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
                                      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

        @NotNull
        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​(@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
                                  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​(@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
                                 java.lang.String name,
                                 @NotNull
                                 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​(@NotNull
                                 java.lang.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
                                 java.lang.String name,
                                 @NotNull
                                 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​(@NotNull
                                 java.lang.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
                                       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​(@NotNull
                                            java.lang.String name,
                                            @NotNull
                                            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​(@NotNull
                                       java.lang.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
                                     java.lang.String name,
                                     @NotNull
                                     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​(@NotNull
                                     java.lang.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
                                     java.lang.String name,
                                     @NotNull
                                     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​(@NotNull
                                     java.lang.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.
      • 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.
      • 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.
      • duplicate

        @NotNull
        public AddRequest duplicate​(@Nullable
                                    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

        @NotNull
        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.
      • toCode

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