com.unboundid.ldap.sdk
Class AddRequest

java.lang.Object
  extended by com.unboundid.ldap.sdk.LDAPRequest
      extended by com.unboundid.ldap.sdk.UpdatableLDAPRequest
          extended by com.unboundid.ldap.sdk.AddRequest
All Implemented Interfaces:
ProtocolOp, ReadOnlyAddRequest, ReadOnlyLDAPRequest, java.io.Serializable

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 Summary
AddRequest(DN dn, Attribute... attributes)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(DN dn, Attribute[] attributes, Control[] controls)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(DN dn, java.util.Collection<Attribute> attributes)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(DN dn, java.util.Collection<Attribute> attributes, Control[] controls)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(Entry entry)
          Creates a new add request to add the provided entry.
AddRequest(Entry entry, Control[] controls)
          Creates a new add request to add the provided entry.
AddRequest(java.lang.String... ldifLines)
          Creates a new add request with the provided entry in LDIF form.
AddRequest(java.lang.String dn, Attribute... attributes)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(java.lang.String dn, Attribute[] attributes, Control[] controls)
          Creates a new add request with the provided DN and set of attributes.
AddRequest(java.lang.String dn, java.util.Collection<Attribute> attributes)
          Creates a new add request with the provided DN and set of attributes.
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.
 
Method Summary
 void addAttribute(Attribute attribute)
          Adds the provided attribute to the entry to add.
 void addAttribute(java.lang.String name, byte[]... values)
          Adds the provided attribute to the entry to add.
 void addAttribute(java.lang.String name, byte[] value)
          Adds the provided attribute to the entry to add.
 void addAttribute(java.lang.String name, java.lang.String... values)
          Adds the provided attribute to the entry to add.
 void addAttribute(java.lang.String name, java.lang.String value)
          Adds the provided attribute to the entry to add.
 AddRequest duplicate()
          Creates a new instance of this LDAP request that may be modified without impacting this request.
 AddRequest duplicate(Control[] controls)
          Creates a new instance of this LDAP request that may be modified without impacting this request.
 ASN1Element encodeProtocolOp()
          Encodes the add request protocol op to an ASN.1 element.
 Attribute getAttribute(java.lang.String attributeName)
          Retrieves the specified attribute from this add request.
 java.util.List<Attribute> getAttributes()
          Retrieves the set of attributes for this add request.
 java.lang.String getDN()
          Retrieves the DN for this add request.
 int getLastMessageID()
          Retrieves the message ID for the last LDAP message sent using this request.
 OperationType getOperationType()
          Retrieves the type of operation that is represented by this request.
 byte getProtocolOpType()
          Retrieves the BER type for this protocol op.
 boolean hasAttribute(Attribute attribute)
          Indicates whether this add request contains the specified attribute.
 boolean hasAttribute(java.lang.String attributeName)
          Indicates whether this add request contains the specified attribute.
 boolean hasAttributeValue(java.lang.String attributeName, byte[] attributeValue)
          Indicates whether this add request contains an attribute with the given name and value.
 boolean hasAttributeValue(java.lang.String attributeName, byte[] attributeValue, MatchingRule matchingRule)
          Indicates whether this add request contains an attribute with the given name and value.
 boolean hasAttributeValue(java.lang.String attributeName, java.lang.String attributeValue)
          Indicates whether this add request contains an attribute with the given name and value.
 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.
 boolean hasObjectClass(java.lang.String objectClassName)
          Indicates whether this add request contains the specified object class.
protected  LDAPResult process(LDAPConnection connection, int depth)
          Sends this add request to the directory server over the provided connection and returns the associated response.
 boolean removeAttribute(java.lang.String attributeName)
          Removes the attribute with the specified name from the entry to add.
 boolean removeAttribute(java.lang.String name, byte[] value)
          Removes the specified attribute value from this add request.
 boolean removeAttributeValue(java.lang.String name, java.lang.String value)
          Removes the specified attribute value from this add request.
 void replaceAttribute(Attribute attribute)
          Replaces the specified attribute in the entry to add.
 void replaceAttribute(java.lang.String name, byte[]... values)
          Replaces the specified attribute in the entry to add.
 void replaceAttribute(java.lang.String name, byte[] value)
          Replaces the specified attribute in the entry to add.
 void replaceAttribute(java.lang.String name, java.lang.String... values)
          Replaces the specified attribute in the entry to add.
 void replaceAttribute(java.lang.String name, java.lang.String value)
          Replaces the specified attribute in the entry to add.
 void responseReceived(LDAPResponse response)
          Indicates that the provided LDAP response has been received by from the server.
 void setAttributes(Attribute[] attributes)
          Specifies the set of attributes for this add request.
 void setAttributes(java.util.Collection<Attribute> attributes)
          Specifies the set of attributes for this add request.
 void setDN(DN dn)
          Specifies the DN for this add request.
 void setDN(java.lang.String dn)
          Specifies the DN for this add request.
 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.
 Entry toEntry()
          Retrieves an Entry object containing the DN and attributes of this add request.
 java.lang.String[] toLDIF()
          Retrieves a string array whose lines contain an LDIF representation of the corresponding add change record.
 LDIFAddChangeRecord toLDIFChangeRecord()
          Retrieves an LDIF add change record with the contents of this add request.
 java.lang.String toLDIFString()
          Retrieves an LDIF string representation of this add request.
 void toString(java.lang.StringBuilder buffer)
          Appends a string representation of this request to the provided buffer.
 void writeTo(ASN1Buffer buffer)
          Writes an ASN.1-encoded representation of this LDAP protocol op to the provided ASN.1 buffer.
 
Methods inherited from class com.unboundid.ldap.sdk.UpdatableLDAPRequest
addControl, addControls, clearControls, removeControl, removeControl, replaceControl, replaceControl, setControls, setControls
 
Methods inherited from class com.unboundid.ldap.sdk.LDAPRequest
followReferrals, getControl, getControlList, getControls, getIntermediateResponseListener, getResponseTimeoutMillis, hasControl, hasControl, setFollowReferrals, setIntermediateResponseListener, setResponseTimeoutMillis, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.unboundid.ldap.sdk.ReadOnlyLDAPRequest
followReferrals, getControl, getControlList, getResponseTimeoutMillis, hasControl, hasControl, toString
 

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

getAttributes

public java.util.List<Attribute> 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

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.

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(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

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

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.

getOperationType

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

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

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.

responseReceived

@InternalUseOnly
public void responseReceived(LDAPResponse response)
                      throws LDAPException
Indicates that the provided LDAP response has been received by from the server.

Parameters:
response - The LDAP response that has been received from the server. It may be null if the connection has been closed without having received any response.
Throws:
LDAPException - If a problem occurs while handling the response.

toLDIFChangeRecord

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

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