Here is the description of a Search operation, and how it's handled by
the AdministrativePoint handler. The parts between >>>--- and ---<<< are
pseudo code.
The base idea is to check if an entry selected as a candidate is up to
date wrt the Administrative perspective. If we grab an entry from the
backend, and if there is an AP higher in the tree, then we will check
the entry seqNumber :
- if there is no seqNumber, then the entry need to be updated
- if there is a seqNumber which is below then its parent's AP, then the
entry need to be updated
- otherwise, the entry is already up to date
An entry might have a seqNumber with no reference to any subentry, that
just means the entry is not part of any subentry's subtree.
One other thing : we will have to deal with entries only when they have
been selected, so the entry filtering should be done during the
candidate evaluation. Here, we just update the entry adding the
references to the associated subentries (if any), and we will let the
ACI search filter to determinate if the entry is a valid candidate.
+--+
|AP|
+--+
An AP is always searchable by anyone, if one can reach it (ie, no higher
AP limit the access to a parent entry)
There is nothing to do
+--------+
|Subentry|
+--------+
Subentries are not returned to the user unless the Subentries control
has been sent with the request.
A Subentry is always searchable by anyone, if one can reach it (ie, no
higher AP limit the access to a parent entry)
There is nothing to do
+-----+
|Entry|
+-----+
We have to check if the entry is up to date.
-------------------------------------------
if entry has a parent AP
then take the entry seqNumber (entrySN) and the AP seqNumber (apSN)
else
continue up the chain
if entry has a seqNumber
then
if the entrySN equals the apSN
then
continue up the chain
else
remove the entrySN
remove the entry references to Subentries
store the apSN in the entry
update the references to Subentries
store the entry
continue up the chain
else
add the apSeqNumber to the entry
update the references to Subentries
store the modified entry
continue up the chain
-------------------------------------------
--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com