001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * docs/licenses/cddl.txt
011 * or http://www.opensource.org/licenses/cddl1.php.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * docs/licenses/cddl.txt. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2010-2013 UnboundID Corp.
026 */
027 package com.unboundid.directory.sdk.common.operation;
028
029
030
031 import com.unboundid.ldap.sdk.ReadOnlyDeleteRequest;
032 import com.unboundid.ldap.sdk.unboundidds.controls.HardDeleteRequestControl;
033 import com.unboundid.ldap.sdk.unboundidds.controls.SoftDeleteRequestControl;
034 import com.unboundid.ldif.LDIFDeleteChangeRecord;
035 import com.unboundid.util.NotExtensible;
036 import com.unboundid.util.ThreadSafety;
037 import com.unboundid.util.ThreadSafetyLevel;
038
039
040
041 /**
042 * This interface defines a set of methods which may be used to interact with a
043 * delete request.
044 */
045 @NotExtensible()
046 @ThreadSafety(level=ThreadSafetyLevel.INTERFACE_NOT_THREADSAFE)
047 public interface DeleteRequest
048 extends ChangeRequest
049 {
050 /**
051 * Retrieves the DN of the entry to be deleted.
052 *
053 * @return The DN of the entry to be deleted.
054 */
055 String getDN();
056
057
058
059 /**
060 * Retrieves an LDAP SDK representation of this delete request.
061 *
062 * @return An LDAP SDK representation of this delete request.
063 */
064 ReadOnlyDeleteRequest toLDAPSDKRequest();
065
066
067
068 /**
069 * Retrieves an LDIF change record that corresponds to this delete request.
070 *
071 * @return An LDIF change record that corresponds to this delete request.
072 */
073 LDIFDeleteChangeRecord toLDIFChangeRecord();
074
075
076
077 /**
078 * Indicates whether this request will result in the target entry being
079 * soft-deleted. This will be true either if the
080 * {@link SoftDeleteRequestControl} is included or if the request matches
081 * the auto-soft-delete connection criteria or request criteria specified in
082 * the Soft Delete Policy for the server.
083 *
084 * @return true if this request will result in the target entry being
085 * soft-deleted, false otherwise.
086 */
087 boolean isSoftDelete();
088
089
090
091 /**
092 * Retrieves the soft-delete request control included in the delete request if
093 * it is present. Note that soft delete operations can occur without the
094 * {@link SoftDeleteRequestControl} if the request matches the
095 * auto-soft-delete connection criteria; in that case this method will return
096 * {@code null}.
097 *
098 * @return the soft-delete request control if it is present in the request,
099 * otherwise {@code null}.
100 */
101 SoftDeleteRequestControl getSoftDeleteRequestControl();
102
103
104
105 /**
106 * Indicates whether this request will result in the target entry being
107 * hard-deleted. This will be true either if the
108 * {@link HardDeleteRequestControl} is included or if the request didn't match
109 * any condition necessary to make it a soft-delete.
110 *
111 * @return true if this request will result in the target entry being
112 * hard-deleted, false otherwise.
113 */
114 boolean isHardDelete();
115
116
117
118 /**
119 * Retrieves the hard-delete request control included in the delete request if
120 * it is present. Note that hard delete operations can occur without the
121 * {@link HardDeleteRequestControl}. If the request is not a soft-delete, it
122 * is effectively a hard delete; the presence of the
123 * {@link HardDeleteRequestControl} just makes it explicit.
124 *
125 * @return the hard-delete request control if it is present in the request,
126 * otherwise {@code null}.
127 */
128 HardDeleteRequestControl getHardDeleteRequestControl();
129 }