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

Reply via email to