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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 2006-2008 Sun Microsystems, Inc. 026 */ 027 package org.opends.server.core; 028 029 import java.util.List; 030 import org.opends.server.types.ByteString; 031 import org.opends.server.types.DN; 032 import org.opends.server.types.Entry; 033 import org.opends.server.types.Modification; 034 import org.opends.server.types.Operation; 035 import org.opends.server.types.RDN; 036 import org.opends.server.types.operation.SubordinateModifyDNOperation; 037 038 /** 039 * This interface defines an operation used to move an entry in 040 * the Directory Server. 041 */ 042 public interface ModifyDNOperation 043 extends Operation, SubordinateModifyDNOperation 044 { 045 046 /** 047 * Retrieves the raw, unprocessed entry DN as included in the client request. 048 * The DN that is returned may or may not be a valid DN, since no validation 049 * will have been performed upon it. 050 * 051 * @return The raw, unprocessed entry DN as included in the client request. 052 */ 053 public ByteString getRawEntryDN(); 054 055 /** 056 * Specifies the raw, unprocessed entry DN as included in the client request. 057 * This should only be called by pre-parse plugins. 058 * 059 * @param rawEntryDN The raw, unprocessed entry DN as included in the client 060 * request. 061 */ 062 public void setRawEntryDN(ByteString rawEntryDN); 063 064 065 /** 066 * Retrieves the DN of the entry to rename. This should not be called by 067 * pre-parse plugins because the processed DN will not be available yet. 068 * Instead, they should call the <CODE>getRawEntryDN</CODE> method. 069 * 070 * @return The DN of the entry to rename, or <CODE>null</CODE> if the raw 071 * entry DN has not yet been processed. 072 */ 073 public DN getEntryDN(); 074 075 /** 076 * Retrieves the raw, unprocessed newRDN as included in the request from the 077 * client. This may or may not contain a valid RDN, as no validation will 078 * have been performed on it. 079 * 080 * @return The raw, unprocessed newRDN as included in the request from the 081 * client. 082 */ 083 public ByteString getRawNewRDN(); 084 085 /** 086 * Specifies the raw, unprocessed newRDN as included in the request from the 087 * client. This should only be called by pre-parse plugins and should not be 088 * used in later stages of processing. 089 * 090 * @param rawNewRDN The raw, unprocessed newRDN as included in the request 091 * from the client. 092 */ 093 public void setRawNewRDN(ByteString rawNewRDN); 094 095 /** 096 * Retrieves the new RDN to use for the entry. This should not be called by 097 * pre-parse plugins, because the processed newRDN will not yet be available. 098 * Pre-parse plugins should instead use the <CODE>getRawNewRDN</CODE> method. 099 * 100 * @return The new RDN to use for the entry, or <CODE>null</CODE> if the raw 101 * newRDN has not yet been processed. 102 */ 103 public RDN getNewRDN(); 104 105 106 /** 107 * Indicates whether the current RDN value should be removed from the entry. 108 * 109 * @return <CODE>true</CODE> if the current RDN value should be removed from 110 * the entry, or <CODE>false</CODE> if not. 111 */ 112 public boolean deleteOldRDN(); 113 114 /** 115 * Specifies whether the current RDN value should be removed from the entry. 116 * 117 * @param deleteOldRDN Specifies whether the current RDN value should be 118 * removed from the entry. 119 */ 120 public void setDeleteOldRDN(boolean deleteOldRDN); 121 122 /** 123 * Retrieves the raw, unprocessed newSuperior from the client request. This 124 * may or may not contain a valid DN, as no validation will have been 125 * performed on it. 126 * 127 * @return The raw, unprocessed newSuperior from the client request, or 128 * <CODE>null</CODE> if there is none. 129 */ 130 public ByteString getRawNewSuperior(); 131 132 /** 133 * Specifies the raw, unprocessed newSuperior for this modify DN operation, as 134 * provided in the request from the client. This method should only be called 135 * by pre-parse plugins. 136 * 137 * @param rawNewSuperior The raw, unprocessed newSuperior as provided in the 138 * request from the client. 139 */ 140 public void setRawNewSuperior(ByteString rawNewSuperior); 141 142 /** 143 * Retrieves the newSuperior DN for the entry. This should not be called by 144 * pre-parse plugins, because the processed DN will not yet be available at 145 * that time. Instead, they should use the <CODE>getRawNewSuperior</CODE> 146 * method. 147 * 148 * @return The newSuperior DN for the entry, or <CODE>null</CODE> if there is 149 * no newSuperior DN for this request or if the raw newSuperior has 150 * not yet been processed. 151 */ 152 public DN getNewSuperior(); 153 154 /** 155 * Retrieves the new DN for the entry. 156 * 157 * @return The new DN for the entry, or <CODE>null</CODE> if there is 158 * neither newRDN, nor entryDN for this request. 159 */ 160 public DN getNewDN(); 161 162 /** 163 * Retrieves the set of modifications applied to attributes of the target 164 * entry in the course of processing this modify DN operation. This will 165 * include attribute-level changes from the modify DN itself (e.g., removing 166 * old RDN values if deleteOldRDN is set, or adding new RDN values that don't 167 * already exist), but it may also be used by pre-operation plugins to cause 168 * additional changes in the entry. In this case, those plugins may add 169 * modifications to this list (they may not remove existing modifications) if 170 * any changes should be processed in addition to the core modify DN 171 * processing. Backends may read this list to identify which attribute-level 172 * changes were applied in order to more easily apply updates to attribute 173 * indexes. 174 * 175 * @return The set of modifications applied to attributes during the course 176 * of the modify DN processing, or <CODE>null</CODE> if that 177 * information is not yet available (e.g., during pre-parse plugins). 178 */ 179 public List<Modification> getModifications(); 180 181 /** 182 * Adds the provided modification to the set of modifications to be applied 183 * as part of the update. This should only be called by pre-operation 184 * plugins. 185 * 186 * @param modification The modification to add to the set of modifications 187 * to apply to the entry. 188 */ 189 public void addModification(Modification modification); 190 191 /** 192 * Retrieves the current entry, before it is renamed. This will not be 193 * available to pre-parse plugins or during the conflict resolution portion of 194 * the synchronization processing. 195 * 196 * @return The current entry, or <CODE>null</CODE> if it is not yet 197 * available. 198 */ 199 public Entry getOriginalEntry(); 200 201 202 /** 203 * Retrieves the new entry, as it will appear after it is renamed. This will 204 * not be available to pre-parse plugins or during the conflict resolution 205 * portion of the synchronization processing. 206 * 207 * @return The updated entry, or <CODE>null</CODE> if it is not yet 208 * available. 209 */ 210 public Entry getUpdatedEntry(); 211 212 /** 213 * Retrieves the change number that has been assigned to this operation. 214 * 215 * @return The change number that has been assigned to this operation, or -1 216 * if none has been assigned yet or if there is no applicable 217 * synchronization mechanism in place that uses change numbers. 218 */ 219 public long getChangeNumber(); 220 221 222 /** 223 * Specifies the change number that has been assigned to this operation by the 224 * synchronization mechanism. 225 * 226 * @param changeNumber The change number that has been assigned to this 227 * operation by the synchronization mechanism. 228 */ 229 public void setChangeNumber(long changeNumber); 230 231 232 /** 233 * Retrieves the proxied authorization DN for this operation if proxied 234 * authorization has been requested. 235 * 236 * @return The proxied authorization DN for this operation if proxied 237 * authorization has been requested, or {@code null} if proxied 238 * authorization has not been requested. 239 */ 240 public DN getProxiedAuthorizationDN(); 241 242 243 /** 244 * Sets the proxied authorization DN for this operation if proxied 245 * authorization has been requested. 246 * 247 * @param dn The proxied authorization DN for this operation if proxied 248 * authorization has been requested, or {@code null} if proxied 249 * authorization has not been requested. 250 */ 251 public void setProxiedAuthorizationDN(DN dn); 252 253 }