directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pierre-Arnaud Marcelot ...@marcelot.net>
Subject Re: [AdminPoint] Add operation
Date Fri, 17 Dec 2010 15:30:11 GMT
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
> 


Mime
View raw message