Here is the description of a Delete operation, and how it's handled by the AdministrativePoint handler. The parts between >>>--- and ---<<< are pseudo code.

Deleting an entry is somehow easier, as we don't update anything, except when we delete a Subentry.

+--+
|AP|
+--+
We can't delete an AP if it has any child. So deleting an AP is a straightforward operation : we just remove the AP, and update the AP cache.

>>>-------------------------------------------
check that the AP has no children

if the AP is an AAP
  then
    for each role do
      remove the AP(role) from the AP(role) cache
    done
  else
    remove the AP(role) from the AP(role) cache

remove the AP from the backend
-------------------------------------------<<<

+--------+
|Subentry|
+--------+
Removing a subentry is slightly more complex, as we will have to update the associated AP SeqNumber, so that the entries part of the subtree can be updated later.

>>>-------------------------------------------
get a new seqNumber
update the parentAP(role) with the new seqNumber

if the parentAP(role) is an IAP
  then
    update the parentAP(role) descendant with the new seqNumber

remove the subentry from the backend
-------------------------------------------<<<


+-----+
|Entry|
+-----+

Deleting an entry is a straightforward operation. Nothing has to be done

>>>-------------------------------------------
continue down the chain
-------------------------------------------<<<

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to