...
Here are the operations we are considering :
Operation |
AddRequest |
DelRequest |
ModifyRequest |
ModifyDNRequest |
...
Computing the revert LDIF for an AddRequest is easy : it's a DelRequest where we use the DN of the created entry.
An AddRequest contains those informations :
No Format |
---|
AddRequest ::= [APPLICATION 8] SEQUENCE {
entry LDAPDN,
attributes AttributeList }
AttributeList ::= SEQUENCE OF attribute Attribute
|
For the added entry :
No Format |
---|
dn: cn=test, dc=example, dc=com
objectclass: top
objectclass: person
cn: test
sn: This is a test
|
the reverse LDIF will be :
No Format |
---|
dn: cn=test, dc=example, dc=com
changetype: delete
|
DelRequest
To produce a revert LDIF for a DelRequest, we must first read the deleted attribute. We will create a Add Request based on the read deleted entry :
No Format |
---|
* read the entry to be deleted
* create a revert ldif AddRequest with this deleted entry
* delete the entry
|
Considering the existing entry :
No Format |
---|
dn: cn=test, dc=example, dc=com
objectclass: top
objectclass: person
cn: test
sn: This is a testcreatorsName: dc=admin, ou=systemcreateTimestamp: 20071010150132ZmodifiersName: dc=admin, ou=systemmodifyTimestamp: 20071010150133Z
|
if we have a delRequest which ldif is :
No Format |
---|
dn: cn=test, dc=example, dc=com
changetype: delete
|
the reversed ldif should be :
No Format |
---|
dn: cn=test, dc=example, dc=comchangetype: add
objectclass: top
objectclass: person
cn: test
sn: This is a test
|
Note |
---|
There is still a question regarding the operational attributes : should we keep them ? How de we guarantee that the creatorName and createTimeStamp attributes are the original ones, instead of the one injected while creating the saved entry ? We will have some impact on the OperationaAttributesInterceptor... |
To be able to build this reverse ldif, we need to read the previous entry before the deletion.
ModifyRequest
This is the most complex operation. The modification is applied on a specific entry, and can impact one or more attribute, one or more value, but it can't modify an attribute which is part iof the entry RDN.
...