com.unboundid.ldap.sdk.controls
Class PermissiveModifyRequestControl

java.lang.Object
  extended by com.unboundid.ldap.sdk.Control
      extended by com.unboundid.ldap.sdk.controls.PermissiveModifyRequestControl
All Implemented Interfaces:
java.io.Serializable

@NotMutable
@ThreadSafety(level=COMPLETELY_THREADSAFE)
public final class PermissiveModifyRequestControl
extends Control

This class provides an implementation of the permissive modify request control, which is supported by a number of servers and may be included in a modify request to indicate that the server should not reject a modify request which attempts to add an attribute value which already exists or remove an attribute value which does not exist. Normally, such modification attempts would be rejected.

The OID for this control is "1.2.840.113556.1.4.1413". It does not have a value.

Example

The following example demonstrates the use of the permissive modify request control to process a modification that attempts to add an attribute value to an entry that already contains that value.
 // Ensure that we start with a known description value in the test entry
 // by using a replace to overwrite any existing value(s).
 ModifyRequest replaceRequest = new ModifyRequest(
      "uid=test.user,ou=People,dc=example,dc=com",
      new Modification(ModificationType.REPLACE, "description", "value"));
 LDAPResult replaceResult = connection.modify(replaceRequest);

 // Create a modify request that will attempt to add the value that already
 // exists.  If we attempt to do this without the permissive modify control,
 // the attempt should fail.
 ModifyRequest addExistingValueRequest = new ModifyRequest(
      "uid=test.user,ou=People,dc=example,dc=com",
      new Modification(ModificationType.ADD, "description", "value"));
 LDAPResult addExistingValueResultWithoutControl;
 try
 {
   addExistingValueResultWithoutControl =
        connection.modify(addExistingValueRequest);
   // We shouldn't get here because the attempt to add the existing value
   // should fail.
 }
 catch (LDAPException le)
 {
   // We expected this failure because the value we're trying to add already
   // exists in the entry.
   addExistingValueResultWithoutControl = le.toLDAPResult();
   ResultCode resultCode = le.getResultCode();
   String errorMessageFromServer = le.getDiagnosticMessage();
 }

 // Update the modify request to include the permissive modify request
 // control, and re-send the request.  The operation should now succeed.
 addExistingValueRequest.addControl(new PermissiveModifyRequestControl());
 LDAPResult addExistingValueResultWithControl;
 try
 {
   addExistingValueResultWithControl =
        connection.modify(addExistingValueRequest);
   // If we've gotten here, then the modification was successful.
 }
 catch (LDAPException le)
 {
   // If we've gotten here, then the modification failed for some reason.
   addExistingValueResultWithControl = le.toLDAPResult();
   ResultCode resultCode = le.getResultCode();
   String errorMessageFromServer = le.getDiagnosticMessage();
 }
 

See Also:
Serialized Form

Field Summary
static java.lang.String PERMISSIVE_MODIFY_REQUEST_OID
          The OID (1.2.840.113556.1.4.1413) for the permissive modify request control.
 
Constructor Summary
PermissiveModifyRequestControl()
          Creates a new permissive modify request control.
PermissiveModifyRequestControl(boolean isCritical)
          Creates a new permissive modify request control.
PermissiveModifyRequestControl(Control control)
          Creates a new permissive modify request control which is decoded from the provided generic control.
 
Method Summary
 java.lang.String getControlName()
          Retrieves the user-friendly name for this control, if available.
 void toString(java.lang.StringBuilder buffer)
          Appends a string representation of this LDAP control to the provided buffer.
 
Methods inherited from class com.unboundid.ldap.sdk.Control
decode, decode, decodeControls, deregisterDecodeableControl, encode, encodeControls, equals, getOID, getValue, hashCode, hasValue, isCritical, readFrom, registerDecodeableControl, toString, writeTo
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PERMISSIVE_MODIFY_REQUEST_OID

public static final java.lang.String PERMISSIVE_MODIFY_REQUEST_OID
The OID (1.2.840.113556.1.4.1413) for the permissive modify request control.

See Also:
Constant Field Values
Constructor Detail

PermissiveModifyRequestControl

public PermissiveModifyRequestControl()
Creates a new permissive modify request control. The control will not be marked critical.


PermissiveModifyRequestControl

public PermissiveModifyRequestControl(boolean isCritical)
Creates a new permissive modify request control.

Parameters:
isCritical - Indicates whether the control should be marked critical.

PermissiveModifyRequestControl

public PermissiveModifyRequestControl(Control control)
                               throws LDAPException
Creates a new permissive modify request control which is decoded from the provided generic control.

Parameters:
control - The generic control to be decoded as a permissive modify request control.
Throws:
LDAPException - If the provided control cannot be decoded as a permissive modify request control.
Method Detail

getControlName

public java.lang.String getControlName()
Retrieves the user-friendly name for this control, if available. If no user-friendly name has been defined, then the OID will be returned.

Overrides:
getControlName in class Control
Returns:
The user-friendly name for this control, or the OID if no user-friendly name is available.

toString

public void toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP control to the provided buffer.

Overrides:
toString in class Control
Parameters:
buffer - The buffer to which to append the string representation of this buffer.