@NotMutable @ThreadSafety(level=COMPLETELY_THREADSAFE) public final class SoftDeleteRequestControl extends Control
SoftDeletedEntryAccessRequestControl
or
a filter which includes an "(objectClass=ds-soft-deleted-entry)" component).
A soft-deleted entry may later be undeleted (using an add request containing
the UndeleteRequestControl
) in order to restore them with the same or
a different DN.
NOTE: This class, and other classes within the
com.unboundid.ldap.sdk.unboundidds
package structure, are only
supported for use against Ping Identity, UnboundID, and
Nokia/Alcatel-Lucent 8661 server products. These classes provide support
for proprietary functionality or for external specifications that are not
considered stable or mature enough to be guaranteed to work in an
interoperable way with other types of LDAP servers.
TRUE
or FALSE
,
but this will only impact how the delete request is to be handled by servers
which do not support this control. A criticality of TRUE
will cause
any server which does not support this control to reject the request, while
a criticality of FALSE
should cause the delete request to be
processed as if the control had not been included (i.e., as a regular "hard"
delete).
SoftDeleteRequestValue ::= SEQUENCE { returnSoftDeleteResponse [0] BOOLEAN DEFAULT TRUE, ... }
// Perform a search to verify that the test entry exists. SearchRequest searchRequest = new SearchRequest("dc=example,dc=com", SearchScope.SUB, Filter.createEqualityFilter("uid", "test")); SearchResult searchResult = connection.search(searchRequest); LDAPTestUtils.assertEntriesReturnedEquals(searchResult, 1); String originalDN = searchResult.getSearchEntries().get(0).getDN(); // Perform a soft delete against the entry. DeleteRequest softDeleteRequest = new DeleteRequest(originalDN); softDeleteRequest.addControl(new SoftDeleteRequestControl()); LDAPResult softDeleteResult = connection.delete(softDeleteRequest); // Verify that a soft delete response control was included in the result. SoftDeleteResponseControl softDeleteResponseControl = SoftDeleteResponseControl.get(softDeleteResult); String softDeletedDN = softDeleteResponseControl.getSoftDeletedEntryDN(); // Verify that the original entry no longer exists. LDAPTestUtils.assertEntryMissing(connection, originalDN); // Verify that the original search no longer returns any entries. searchResult = connection.search(searchRequest); LDAPTestUtils.assertNoEntriesReturned(searchResult); // Verify that the search will return an entry if we include the // soft-deleted entry access control in the request. searchRequest.addControl(new SoftDeletedEntryAccessRequestControl()); searchResult = connection.search(searchRequest); LDAPTestUtils.assertEntriesReturnedEquals(searchResult, 1); // Perform an undelete operation to restore the entry. AddRequest undeleteRequest = UndeleteRequestControl.createUndeleteRequest( originalDN, softDeletedDN); LDAPResult undeleteResult = connection.add(undeleteRequest); // Verify that the original entry is back. LDAPTestUtils.assertEntryExists(connection, originalDN); // Permanently remove the original entry with a hard delete. DeleteRequest hardDeleteRequest = new DeleteRequest(originalDN); hardDeleteRequest.addControl(new HardDeleteRequestControl()); LDAPResult hardDeleteResult = connection.delete(hardDeleteRequest);Note that this class provides convenience methods that can be used to easily create a delete request containing an appropriate soft delete request control. Similar methods can be found in the
HardDeleteRequestControl
and UndeleteRequestControl
classes
for creating appropriate hard delete and undelete requests, respectively.Modifier and Type | Field and Description |
---|---|
static java.lang.String |
SOFT_DELETE_REQUEST_OID
The OID (1.3.6.1.4.1.30221.2.5.20) for the soft delete request control.
|
Constructor and Description |
---|
SoftDeleteRequestControl()
Creates a new soft delete request control with the default settings for
all elements.
|
SoftDeleteRequestControl(boolean isCritical,
boolean returnSoftDeleteResponse)
Creates a new soft delete request control with the provided information.
|
SoftDeleteRequestControl(Control control)
Creates a new soft delete request control which is decoded from the
provided generic control.
|
Modifier and Type | Method and Description |
---|---|
static DeleteRequest |
createSoftDeleteRequest(java.lang.String targetDN,
boolean isCritical,
boolean returnSoftDeleteResponse)
Creates a new delete request that may be used to soft delete the specified
target entry.
|
static SoftDeleteRequestControl |
decodeJSONControl(JSONObject controlObject,
boolean strict)
Attempts to decode the provided object as a JSON representation of a
soft delete request control.
|
java.lang.String |
getControlName()
Retrieves the user-friendly name for this control, if available.
|
boolean |
returnSoftDeleteResponse()
Indicates whether the delete response should include a
SoftDeleteResponseControl . |
JSONObject |
toJSONControl()
Retrieves a representation of this soft delete request control as a JSON
object.
|
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP control to the provided
buffer.
|
decode, decode, decodeControls, decodeJSONControl, deregisterDecodeableControl, encode, encodeControls, equals, getOID, getValue, hashCode, hasValue, isCritical, readFrom, registerDecodeableControl, registerDecodeableControl, toString, writeTo
@NotNull public static final java.lang.String SOFT_DELETE_REQUEST_OID
public SoftDeleteRequestControl()
public SoftDeleteRequestControl(boolean isCritical, boolean returnSoftDeleteResponse)
isCritical
- Indicates whether this control should be
marked critical. This will only have an
effect on the way the associated delete
operation is handled by servers which do
NOT support the soft delete request
control. For such servers, a control
that is critical will cause the soft
delete attempt to fail, while a control
that is not critical will be processed as
if the control was not included in the
request (i.e., as a normal "hard"
delete).returnSoftDeleteResponse
- Indicates whether to return a soft delete
response control in the delete response
to the client.public SoftDeleteRequestControl(@NotNull Control control) throws LDAPException
control
- The generic control to be decoded as a soft delete request
control.LDAPException
- If the provided control cannot be decoded as a soft
delete request control.public boolean returnSoftDeleteResponse()
SoftDeleteResponseControl
.true
if the delete response should include a soft delete
response control, or false
if not.@NotNull public static DeleteRequest createSoftDeleteRequest(@NotNull java.lang.String targetDN, boolean isCritical, boolean returnSoftDeleteResponse)
targetDN
- The DN of the entry to be soft deleted.isCritical
- Indicates whether this control should be
marked critical. This will only have an
effect on the way the associated delete
operation is handled by servers which do
NOT support the soft delete request
control. For such servers, a control
that is critical will cause the soft
delete attempt to fail, while a control
that is not critical will be processed as
if the control was not included in the
request (i.e., as a normal "hard"
delete).returnSoftDeleteResponse
- Indicates whether to return a soft delete
response control in the delete response
to the client.@NotNull public java.lang.String getControlName()
getControlName
in class Control
@NotNull public JSONObject toJSONControl()
oid
-- A mandatory string field whose value is the object
identifier for this control. For the soft delete request control, the
OID is "1.3.6.1.4.1.30221.2.5.20".
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, the oid
field should be used to identify the type of control.
criticality
-- A mandatory Boolean field used to indicate
whether this control is considered critical.
value-base64
-- An optional string field whose value is a
base64-encoded representation of the raw value for this soft delete
request control. Exactly one of the value-base64
and
value-json
fields must be present.
value-json
-- An optional JSON object field whose value is a
user-friendly representation of the value for this soft delete request
control. Exactly one of the value-base64
and
value-json
fields must be present, and if the
value-json
field is used, then it will use the following
fields:
return-soft-delete-response-control
-- A mandatory Boolean
field that indicates whether to include a corresponding soft delete
response control in the delete result.
toJSONControl
in class Control
@NotNull public static SoftDeleteRequestControl decodeJSONControl(@NotNull JSONObject controlObject, boolean strict) throws LDAPException
controlObject
- The JSON object to be decoded. It must not be
null
.strict
- Indicates whether to use strict mode when decoding
the provided JSON object. If this is true
,
then this method will throw an exception if the
provided JSON object contains any unrecognized
fields. If this is false
, then unrecognized
fields will be ignored.LDAPException
- If the provided JSON object cannot be parsed as a
valid soft delete request control.