directory-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pierre-Alain RIVIERE <parivi...@ippon.fr>
Subject ApacheDS non US-ASCII DN manipulation?
Date Tue, 30 Jan 2007 16:10:24 GMT
Hi everyone,

I'm working on a project where I have embedded an Apache DS for testing 
purpose.

In my unit test, I'm trying to launch a request like this one

    "(&(member=cn=John
    Doe,ou=Peoples,ou=Paris,ou=Offices,dc=ippon,dc=fr)(objectClass=ipponGroup))"

Unfortunaly this request fails with the following stack trace

    Caused by: java.lang.NullPointerException
        at
    org.apache.directory.server.core.schema.DnNormalizer.normalize(DnNormalizer.java:64)
        at
    org.apache.directory.shared.ldap.schema.CachingNormalizer.normalize(CachingNormalizer.java:96)
        at
    org.apache.directory.server.core.partition.impl.btree.LeafEvaluator.evalEquality(LeafEvaluator.java:332)
        at
    org.apache.directory.server.core.partition.impl.btree.LeafEvaluator.evaluate(LeafEvaluator.java:121)
        at
    org.apache.directory.server.core.partition.impl.btree.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:103)
        at
    org.apache.directory.server.core.partition.impl.btree.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:130)
        at
    org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator$2.assertCandidate(ExpressionEnumerator.java:257)
        at
    org.apache.directory.server.core.partition.impl.btree.IndexAssertionEnumeration.prefetch(IndexAssertionEnumeration.java:161)
        at
    org.apache.directory.server.core.partition.impl.btree.IndexAssertionEnumeration.<init>(IndexAssertionEnumeration.java:66)
        at
    org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator.enumConj(ExpressionEnumerator.java:270)
        at
    org.apache.directory.server.core.partition.impl.btree.ExpressionEnumerator.enumerate(ExpressionEnumerator.java:134)
        at
    org.apache.directory.server.core.partition.impl.btree.DefaultSearchEngine.search(DefaultSearchEngine.java:136)
        at
    org.apache.directory.server.core.partition.impl.btree.BTreePartition.search(BTreePartition.java:404)
        at
    org.apache.directory.server.core.partition.DefaultPartitionNexus.search(DefaultPartitionNexus.java:863)
        at
    org.apache.directory.server.core.interceptor.InterceptorChain$1.search(InterceptorChain.java:139)
        at
    org.apache.directory.server.core.interceptor.InterceptorChain$2.search(InterceptorChain.java:1263)
        ... 45 more

ipponGroup objectClass's definition - OpenLDAP form - is the following :

    ##
    ##
    objectclass (1.3.6.1.4.1.7165.1.1.1.2 NAME 'ipponGroup'
        SUP top STRUCTURAL
        MUST ( cn )
        MAY ( description $ member ) )

member attribute is the same as described in the RFC2256: member of a group


With the debugger I found that the concerned method - 
DnNormalizer#normalize(Object) - does not perform LdapDN dn 
initilization. Here the code :

        public Object normalize( Object value ) throws NamingException
        {
            LdapDN dn = null;
            if ( value instanceof LdapDN )
            {
                dn = ( LdapDN ) ( ( LdapDN ) value ).clone();
            }
            else if ( value instanceof Name )
            {
                dn = new LdapDN( ( Name ) value );
            }
            else if ( value instanceof String )
            {
                dn = new LdapDN( ( String ) value );
            }
           
            dn.normalize( attrRegistry.getNormalizerMapping() );
            return dn.getNormName();
        }

In my case dn is null because value passed as parameter is a byte[]. 
Indeed, it seems that the case of DN containing non US-ASCII characters 
- my DNs may be composed with all characters used for (french) name and 
surname - is represented by ApacheDS with a byte[] - which can be used 
to construct a new String representation.

Is ApacheDS fails to handle UTF8 DN or should I not use UTF8 DN? In the 
second case, is the LDAP protocol explicitly proscribe non US-ASCII DN?

Thanks for help.


Mime
View raw message