Emmanuel Lecharny wrote:
Hallvard B Furuseth wrote:
Michael Ströder writes:
It really depends on what you want to express. Note that "" represents the rootDSE or root naming context. So "" would reference something existing or well-defined. IMHO NULL (or None in Python) would better signal something undefined or none-existing.
Yes. There is one case in the LDAP ASN.1 grammar (in rfc 4511) where you need to distinguish between an absent DN and an empty DN: The LDAPDN field ModifyDNRequest.newSuperior, which is 'OPTIONAL'. There may be others in LDAP extensions defined elsewhere.
This is starting to be confusing. The initial question was :
"Should the toString() method of a class that represents a DN return null or an empty string?"
This can't be answered consistently without knowing what this returned value is used for. But I'll try: If you just created an object instance of the DN class without assigning any real DN to it method toString() should return NULL instead of "".
But if the question is : "How do I represent a DN in a structure when I do a toString() on this structure", then the answer would be :
- null if the DN member is null
I guess with "DN member" you're referring to the class' attribute for storing the DN. So I guess this is the case I described above.
- "" if the DN does not hold any value.
I doubt that this is right or maybe I misunderstood "does not hold any value".
Again: "" refers to the rootDSE or is the root naming context in search requests with scope!=base. If you pass "" to any other method (e.g. for a modify request) then it has a specific meaning (e.g. modifying the rootDSE).
Well, not being a Java programmer I will stay out of further discussion because I don't know what's common in the Java world.
Ciao, Michael.