directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Lécharny <elecha...@apache.org>
Subject Re: Some more thoughts about the Dn class
Date Thu, 17 Feb 2011 08:02:19 GMT
On 2/17/11 12:43 AM, Alex Karasulu wrote:
> On Thu, Feb 17, 2011 at 1:20 AM, Emmanuel Lécharny<elecharny@apache.org>  wrote:
>> On 2/17/11 12:03 AM, Alex Karasulu wrote:
>>> On Thu, Feb 17, 2011 at 12:55 AM, Emmanuel Lécharny
>>> <elecharny@apache.org>    wrote:
>>>> On 2/16/11 9:02 PM, Alex Karasulu wrote:
>>>>> On Wed, Feb 16, 2011 at 4:50 PM, Emmanuel Lecharny<elecharny@gmail.com>
>>>>>   wrote:
>>>>>> Hi,
>>>>>>
>>>>>> we have had some convo about the Dn methods last night. Here are
some
>>>>>> of
>>>>>> the things we discussed and came with :
>>>>>>
>>>>>> o the getPrefix(N)/getSuffix(N) are cumbersome, and not easy to
>>>>>> manipulate. The main issue is that they depend on the RDN order,
which
>>>>>> is
>>>>>> the opposite as what people are used to manipulate. Everytime you
have
>>>>>> to
>>>>>> get a prefix from a Dn, you always wonder what the position should
be,
>>>>>> and
>>>>>> if it's 0 based or 1 based...
>>>>>>
>>>>>> We propose to replace those methods by getParent(Dn) and
>>>>>> getDescendant(Dn). Let me give you an example :
>>>>>>
>>>>>> // A DN
>>>>>> Dn dn = new Dn( "cn=test,ou=server,ou=directory,dc=apache,dc=org"
);
>>>>>>
>>>>>> // Get the right part (equivalent to getprefix( 2 ) )
>>>>>> Dn parent = dn.getParent( "cn=test,ou=server,ou=directory" ); //
>>>>>> returns
>>>>>> "dc=apache,dc=org"
>>>>>>
>>>>>> // Get the left part (equivalent to getSuffix( 3 ))
>>>>>> Dn descendant = dn.getDescendant( "ou=directory,dc=apache,dc=org"
); //
>>>>>> returns "cn=test,ou=server"
>>>>>>
>>>>>> o The Add method is a bit annoying to remove, because first, the
JNDI
>>>>>> Name interface has such a method, and people are used to it, second
>>>>>> removing
>>>>>> it means we have to add some more constructors line Dn( Dn, Rdn...
). I
>>>>>> agree that someone doing something like :
>>>>>>
>>>>>> Dn dn = new Dn( "dc=apache,dc=org" );
>>>>>> dn.add( "ou=directory" );
>>>>>>
>>>>>> will expect that the dn is now "ou=directory,dc=apache,dc=org", when
>>>>>> it's
>>>>>> unchanged.
>>>>>>
>>>>>> This is really troublesome... What about rename it concatenate()
?
>>>>>>
>>>>>> Thoughts ?
>>>>> Sounds good. But how about this:
>>>>>
>>>>> // not showing full Rdn but an index value representing the actual
>>>>> rdns in the dn for pos clarity
>>>>> Dn dn = new Dn( “9, 8, 7, 6, 5, 4, 3, 2, 1, 0” );
>>>>>
>>>>> dn.getAncestorDn( “9, 8, 7, 6” );
>>>>>
>>>>> =>      “5, 4, 3, 2, 1, 0”
>>>> That's ok, but why not getParent() ?
>>> Because the result is not necessarily the parent of 'dn'. It may be if
>>> it's immediately superior. You're mixing together the meanings I
>>> think.
>> Sorry, I don't get it. You have a DN, and you want the parent of it's left
>> part, how possible the result couldn't be the parent ? If the parameter is
>> not the left part, then you get an exception, but that's in the contract.
>>
>> Did I missed something ?
> The dn is “9, 8, 7, 6, 5, 4, 3, 2, 1, 0” you're getting one of it's
> ancestors not it's parent.
>
> The parent would be “8, 7, 6, 5, 4, 3, 2, 1, 0”, the ancestor in the
> example is “5, 4, 3, 2, 1, 0”.
>
> You see what I mean?
yes, but in the sample I gave it was :

“9, 8, 7, 6, 5, 4, 3, 2, 1, 0”.getParent( "9, 8, 7, 6" ) which is "5, 4, 3, 2, 1, 0”


The idea is that the parameter is the left part of the DN, and the 
getParent returns the right part.

OTOH,

“9, 8, 7, 6, 5, 4, 3, 2, 1, 0”.getParent() would return  "8, 7, 6, 5, 4, 3, 2, 1, 0”

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


Mime
View raw message