|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.unboundid.ldap.sdk.Control
com.unboundid.ldap.sdk.unboundidds.controls.SoftDeleteRequestControl
@NotMutable @ThreadSafety(level=COMPLETELY_THREADSAFE) public final class SoftDeleteRequestControl
NOTE: This class is part of the Commercial Edition of the UnboundID LDAP SDK for Java. It is not available for use in applications that include only the Standard Edition of the LDAP SDK, and is not supported for use in conjunction with non-UnboundID products.This class provides a request control which may be included in a delete request to indicate that the server should perform a soft delete rather than a hard delete. A soft delete will leave the entry in the server, but will mark it hidden so that it can only be retrieved with a special request (e.g., one which includes the
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.
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.
HardDeleteRequestControl
,
SoftDeleteResponseControl
,
SoftDeletedEntryAccessRequestControl
,
UndeleteRequestControl
,
Serialized FormField Summary | |
---|---|
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 Summary | |
---|---|
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. |
Method Summary | |
---|---|
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. |
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 |
---|
public static final java.lang.String SOFT_DELETE_REQUEST_OID
Constructor Detail |
---|
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(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.Method Detail |
---|
public boolean returnSoftDeleteResponse()
SoftDeleteResponseControl
.
true
if the delete response should include a soft delete
response control, or false
if not.public static DeleteRequest createSoftDeleteRequest(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.
public java.lang.String getControlName()
getControlName
in class Control
public void toString(java.lang.StringBuilder buffer)
toString
in class Control
buffer
- The buffer to which to append the string representation of
this buffer.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |