001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020package org.apache.directory.api.ldap.model.message.controls; 021 022 023import org.apache.directory.api.ldap.model.message.Control; 024import org.apache.directory.api.ldap.model.name.Dn; 025 026 027/** 028 * A response control that may be returned by Persistent Search entry responses. 029 * It contains addition change information to describe the exact change that 030 * occurred to an entry. The exact details of this control are covered in section 031 * 5 of this (yes) expired draft: <a 032 * href="http://www3.ietf.org/proceedings/01aug/I-D/draft-ietf-ldapext-psearch-03.txt"> 033 * Persistent Search Draft v03</a> which is printed out below for convenience: 034 * 035 * <pre> 036 * 5. Entry Change Notification Control 037 * 038 * This control provides additional information about the change the caused 039 * a particular entry to be returned as the result of a persistent search. 040 * The controlType is "2.16.840.1.113730.3.4.7". If the client set the 041 * returnECs boolean to TRUE in the PersistentSearch control, servers MUST 042 * include an EntryChangeNotification control in the Controls portion of 043 * each SearchResultEntry that is returned due to an entry being added, 044 * deleted, or modified. 045 * 046 * EntryChangeNotification ::= SEQUENCE 047 * { 048 * changeType ENUMERATED 049 * { 050 * add (1), 051 * delete (2), 052 * modify (4), 053 * modDN (8) 054 * }, 055 * previousDN LDAPDN OPTIONAL, -- modifyDN ops. only 056 * changeNumber INTEGER OPTIONAL -- if supported 057 * } 058 * 059 * changeType indicates what LDAP operation caused the entry to be 060 * returned. 061 * 062 * previousDN is present only for modifyDN operations and gives the Dn of 063 * the entry before it was renamed and/or moved. Servers MUST include this 064 * optional field only when returning change notifications as a result of 065 * modifyDN operations. 066 * 067 * changeNumber is the change number [CHANGELOG] assigned by a server for 068 * the change. If a server supports an LDAP Change Log it SHOULD include 069 * this field. 070 * </pre> 071 * 072 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 073 */ 074public interface EntryChange extends Control 075{ 076 int UNDEFINED_CHANGE_NUMBER = -1; 077 078 /** The EntryChange control */ 079 String OID = "2.16.840.1.113730.3.4.7"; 080 081 082 /** 083 * @return The ChangeType 084 */ 085 ChangeType getChangeType(); 086 087 088 /** 089 * Set the ChangeType 090 * 091 * @param changeType Add, Delete; Modify or ModifyDN 092 */ 093 void setChangeType( ChangeType changeType ); 094 095 096 Dn getPreviousDn(); 097 098 099 void setPreviousDn( Dn previousDn ); 100 101 102 long getChangeNumber(); 103 104 105 void setChangeNumber( long changeNumber ); 106}