directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DIRSERVER-952) NPE when using createSubcontext() with embedded server
Date Fri, 01 Jun 2007 14:11:15 GMT

    [ https://issues.apache.org/jira/browse/DIRSERVER-952?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12500720
] 

Emmanuel Lecharny commented on DIRSERVER-952:
---------------------------------------------

Beside the fact we have a NPE, this behaviour is expected as the BasicAttributes() has been
created as caseSensitive in the caller code.

What happens is that you created the attribute using "objectClass" when we are looking for
"objectclass" in the code ( we do attr.getAttribute( "objectclass" ) ). We have two options
here :
- throwing an explicit exception instead of a NPE
- writing some costly code to iterate through all the attributes, like :

...
        if ( objectClass == null )
        {
            NamingEnumeration ids = attributes.getIDs();
            
            while ( ids.hasMoreElements() )
            {
                String id = (String)ids.nextElement();
                
                if ( "objectclass".compareToIgnoreCase( id ) == 0 )
                {
                    objectClass = attributes.get( id );
                    break;
                }
            }
            
            if ( objectClass == null )
            {
                throw new NamingException( "No ObjectClass attribute in the entry" );
            }
        }
...

Even if I personnaly hate JNDI for allowing users to create case sensitive BasicAttributes(),
I think we should protect the server from it because all our users will do this mistake at
least once (and I did this mistake so many times ... !). So I will implement this loop, and
I will also do it in 1.5 version, because we have the very same error.



> NPE when using createSubcontext() with embedded server
> ------------------------------------------------------
>
>                 Key: DIRSERVER-952
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-952
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.0.2
>         Environment: Windows 2003, JDK 1.5
>            Reporter: Simon Temple
>             Fix For: 1.0.2
>
>
> We've found a problem with DS 1.0.2.  This problem only exists when running with DS embedded
in the same VM.
> Running the same code remotely (outside of DS VM) works fine.
>  
> Example code:
>  
>    ....
>             Attributes attrs = new BasicAttributes();
>             attrs.put("objectClass", "organizationalUnit");
>             attrs.put("description", "Test OU");
>             
>             DirContext subContext = context.createSubcontext("ou=Test", attrs);
>  
>  
> Exception from createSubcontext():
>  
> Caused by: java.lang.NullPointerException
>  at org.apache.directory.shared.ldap.util.AttributeUtils.containsValueCaseIgnore(AttributeUtils.java:309)
>  at org.apache.directory.server.core.schema.SchemaService.assertAllAttributesAllowed(SchemaService.java:1806)
>  at org.apache.directory.server.core.schema.SchemaService.check(SchemaService.java:1624)
>  at org.apache.directory.server.core.schema.SchemaService.add(SchemaService.java:1636)
>  at org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1181)
>  ... 130 more
>  
> If you change the BasicAttributes() constructor call to:
>  
>             Attributes attrs = new BasicAttributes( true );
> it works fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message