[ 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