Hi Emmanuel,

Comments inline below...

On 17 déc. 2010, at 14:37, Emmanuel Lecharny wrote:

> Here is the description of an Add operation, and how it's handled by the 
> AdministrativePoint handler. The parts between >>>--- and ---<<< are pseudo 
> code.
> 
> +--+
> |AP|
> +--+
> 
> We have to deal with three cases :
> - the AP has a parent AP (IAP or SAP, it's irrelevant) and no subordinate IAP
> - the AP has a parent AP but some subordinate IAPs
>  in this second case, we have to change the IAPs seqNumber to reflect the 
> change in entries relationship, recusively.
> - the AP has no parent AP
> 
> The second case is the most complex.
> 
> >>>-------------------------------------------
> for each AP role
>  get a new seqNumber, add it to the AP(role)
>  update the AP(role) cache
> 
>  if hasParentAP( AP(role) )
>    then
>      if hasSubordonateIAP( AP(role) )
>        then
>          for each subordinate IAP(role) (and their own subordinates)
>            modify the subordinate IAP(role) seqNumber with the new seqNumber
>            store the IAP(role)
>          done
> done
> 
> continue down the chain
> -------------------------------------------<<<

I disagree. In any case, you won't have any entry under the SAP.
So, you only need to add the AP to the cache.

> +--------+
> |Subentry|
> +--------+
> 
> We can't add a subentry if the immediate parent is not an AP and if the 
> parent AP does not have the same role (or of the parent  is an IAP and there 
> are no higher parent with the same role).
> 
> Otherwise, adding a subentry is just a matter to update the parent's AP 
> seqNumber (and all the hierarchy up to the first SAP if it's an IAP)
> 
> As a subentry is only associated with one single role, we don't have to loop 
> on all the roles

This goes against what you previously stated in your introduction:
>> X.500 also says that a subentry can also be used to handle more than one 
>> specific role, which is done by having more than one auxiliary ObjectClass 
>> being added in the subentry.


We might want to loop on all roles, then.

> 
> >>>-------------------------------------------
> check the parentAP for the role
> 
> get a new new seqNumber
> 
> update the parentAP and all its IAP subordinate with the same role with the 
> new seqNumber
> 
> continue down the chain
> -------------------------------------------<<<
> 
> +-----+
> |Entry|
> +-----+
> 
> When we add an entry, we have to check if it depends on an AP for each roles. 
> If so, we have to add the AP seqNumber into the entry, and add references to 
> all the subentry it is related too.
> 
> >>>-------------------------------------------
> for each role
>  for each parent AP(role)
>    get the parentAP(role) seqNumber, store it into the entry
> 
>    for each subentry associated with the AP(role) do
>      if the entry is part of the subtree
>        then add the subentry entryUUID into the entry references
>    done
>  done
> done
> 
> continue down the chain
> -------------------------------------------<<<

Agreed.


Regards,
Pierre-Arnaud

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

Reply via email to