Hi guys,

following the two mails I sent today, I'd like to give a bit more heads up about the pb we are facing

Currently, if we want to get the Dn/Rdn as a String, we have two methods to do so :
- getName() which returns the User provided Dn's name
- getNormName() which returns the normalized Dn

The toString() method calls getName() internally.

So far, so good, except that it's not enough. There is a confusion between a 'normalized' DN and a 'Printable' Dn. Let's see with an example. The following Dn :

"cn= Exa\+mple  one "

once parsed, will return the following results :
getName()     : "cn= Exa\+mple  one "
getNormName() : "cn=Exa\+mple  one"

If the Dn is schema aware, the result will be slightly different :
getName()     : "cn= Exa\+mple  one "
getNormName() : "2.5.4.3=exa\\+mple one"

Now, the problem is that the normalized value is only useful when manipulating a Dn or a Rdn as a String. There are cases where we want to compare the Rdn with some AttributeTypeAndValue. For instance, if we create an entry like :

dn: cn= Exa\+mple  one
Objectclass: top
ObjectClass: person
sn: example
cn: exa+mple one

then the server will blow chunks because the CN attribute cannot be compared to the Rdn ("exa\+mple one" is not equal to "exa+mple one").

I'm not sure right now if the solution would be to normalize the Rdn again (removing the escaped chars) or to modify the comparison between a Rdn and an Attribute Value.

Right now, I'm more inclined to investigate the second option, but it might not work.

In any case, this is a hell of painful issue...

Thoughts ?

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

Reply via email to