[ http://issues.apache.org/jira/browse/DIREVE-281?page=all ]
     
Alex Karasulu resolved DIREVE-281:
----------------------------------

    Resolution: Fixed

Within the NormalizationService a tree visitor called the 
ValueNormalizingVisitor descends the filter tree for a filter.  It normalized 
the values of the filter on search calls.  I have made the visitor capable of 
pruning a filter tree for leaf nodes that have undefined attributes hence are 
ignored according to RFC 2251.  

Interesting thing is this can prune away entire branches that contain bogus 
filter assertions on undefined attributes leaving the filter empty.  In this 
case search returns an empty enumeration bypassing the rest of the interceptor 
chain.

I have committed my changes and test case in revision 328253 here:

http://svn.apache.org/viewcvs.cgi?view=rev&rev=328253


> Attribute from extensibleObject cannot be used in search filter.
> ----------------------------------------------------------------
>
>          Key: DIREVE-281
>          URL: http://issues.apache.org/jira/browse/DIREVE-281
>      Project: Directory Server
>         Type: Bug
>   Components: jndi-provider
>     Reporter: Enrique Rodriguez
>     Assignee: Alex Karasulu
>      Fix For: 0.9.3

>
> The following filter fails during DirContext.search() when the attribute used 
> is from an extensibleObject:
> String filter = "(servicePid=org.apache.dns.factory)";
> LDIF excerpt:
> dn: ou=dns,ou=services,ou=configuration,ou=system
> objectClass: top
> objectClass: organizationalUnit
> objectClass: extensibleObject
> ou: dns
> servicePid: org.apache.dns.factory
> org.apache.ldap.server.interceptor.InterceptorException: Unexpected 
> exception. [Root exception is java.lang.RuntimeException: OID for name 
> 'servicePid' was not found within the OID registry]
>       at 
> org.apache.ldap.server.interceptor.InterceptorChain.throwInterceptorException(InterceptorChain.java:1368)
>       at 
> org.apache.ldap.server.interceptor.InterceptorChain.search(InterceptorChain.java:754)
>       at 
> org.apache.ldap.server.partition.DirectoryPartitionNexusProxy.search(DirectoryPartitionNexusProxy.java:371)
>       at 
> org.apache.ldap.server.partition.DirectoryPartitionNexusProxy.search(DirectoryPartitionNexusProxy.java:359)
>       at 
> org.apache.ldap.server.jndi.ServerDirContext.search(ServerDirContext.java:616)
> ...
> Caused by: java.lang.RuntimeException: OID for name 'servicePid' was not 
> found within the OID registry
>       at 
> org.apache.ldap.server.normalization.ValueNormalizingVisitor.visit(ValueNormalizingVisitor.java:71)
>       at org.apache.ldap.common.filter.SimpleNode.accept(SimpleNode.java:168)
>       at org.apache.ldap.common.filter.BranchNode.accept(BranchNode.java:356)
>       at 
> org.apache.ldap.server.normalization.NormalizationService.search(NormalizationService.java:163)
>       at 
> org.apache.ldap.server.interceptor.InterceptorChain.search(InterceptorChain.java:746)
>       ... 22 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to