Package com.unboundid.ldap.sdk.controls
Class PermissiveModifyRequestControl
java.lang.Object
com.unboundid.ldap.sdk.Control
com.unboundid.ldap.sdk.controls.PermissiveModifyRequestControl
- All Implemented Interfaces:
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.
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe OID (1.2.840.113556.1.4.1413) for the permissive modify request control. -
Constructor Summary
ConstructorsConstructorDescriptionCreates 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
Modifier and TypeMethodDescriptiondecodeJSONControl(JSONObject controlObject, boolean strict) Attempts to decode the provided object as a JSON representation of a permissive modify request control.Retrieves the user-friendly name for this control, if available.Retrieves a representation of this permissive modify request control as a JSON object.voidtoString(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, decodeJSONControl, deregisterDecodeableControl, encode, encodeControls, equals, getOID, getValue, hashCode, hasValue, isCritical, readFrom, registerDecodeableControl, registerDecodeableControl, toString, writeTo
-
Field Details
-
PERMISSIVE_MODIFY_REQUEST_OID
The OID (1.2.840.113556.1.4.1413) for the permissive modify request control.- See Also:
-
-
Constructor Details
-
PermissiveModifyRequestControl
public PermissiveModifyRequestControl()Creates a new permissive modify request control. The control will not be marked critical. -
PermissiveModifyRequestControl
Creates a new permissive modify request control.- Parameters:
isCritical- Indicates whether the control should be marked critical.
-
PermissiveModifyRequestControl
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 Details
-
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:
getControlNamein classControl- Returns:
- The user-friendly name for this control, or the OID if no user-friendly name is available.
-
toJSONControl
Retrieves a representation of this permissive modify request control as a JSON object. The JSON object uses the following fields (note that since this control does not have a value, neither thevalue-base64norvalue-jsonfields may be present):-
oid-- A mandatory string field whose value is the object identifier for this control. For the permissive modify request control, the OID is "1.2.840.113556.1.4.1413". -
control-name-- An optional string field whose value is a human-readable name for this control. This field is only intended for descriptive purposes, and when decoding a control, theoidfield should be used to identify the type of control. -
criticality-- A mandatory Boolean field used to indicate whether this control is considered critical.
- Overrides:
toJSONControlin classControl- Returns:
- A JSON object that contains a representation of this control.
-
-
decodeJSONControl
@NotNull public static PermissiveModifyRequestControl decodeJSONControl(@NotNull JSONObject controlObject, boolean strict) throws LDAPException Attempts to decode the provided object as a JSON representation of a permissive modify request control.- Parameters:
controlObject- The JSON object to be decoded. It must not benull.strict- Indicates whether to use strict mode when decoding the provided JSON object. If this istrue, then this method will throw an exception if the provided JSON object contains any unrecognized fields. If this isfalse, then unrecognized fields will be ignored.- Returns:
- The permissive modify request control that was decoded from the provided JSON object.
- Throws:
LDAPException- If the provided JSON object cannot be parsed as a valid permissive modify request control.
-
toString
Appends a string representation of this LDAP control to the provided buffer.
-