@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.
|
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 . |
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this LDAP control to the provided
buffer.
|
decode, decode, decodeControls, 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