You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2005/09/20 20:10:09 UTC

svn commit: r290501 - in /directory/protocol-providers/ldap/trunk: project.xml src/main/java/org/apache/ldap/server/protocol/CompareHandler.java

Author: akarasulu
Date: Tue Sep 20 11:10:04 2005
New Revision: 290501

URL: http://svn.apache.org/viewcvs?rev=290501&view=rev
Log:
changes ...

 o altered compare handler to use the newly introduced ApacheDS provider 
   specific compare() operation - this considerably cleans up the handler
 o fixed project pom so it references the latest jars


Modified:
    directory/protocol-providers/ldap/trunk/project.xml
    directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java

Modified: directory/protocol-providers/ldap/trunk/project.xml
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/ldap/trunk/project.xml?rev=290501&r1=290500&r2=290501&view=diff
==============================================================================
--- directory/protocol-providers/ldap/trunk/project.xml (original)
+++ directory/protocol-providers/ldap/trunk/project.xml Tue Sep 20 11:10:04 2005
@@ -150,19 +150,19 @@
     <dependency>
       <groupId>directory-asn1</groupId>
       <artifactId>asn1-codec</artifactId>
-      <version>0.3.2</version>
+      <version>0.3.3-SNAPSHOT</version>
       <url>http://directory.apache.org/subprojects/asn1/ber-codec</url>
     </dependency>
     <dependency>
       <groupId>directory-shared</groupId>
       <artifactId>ldap-common</artifactId>
-      <version>0.9.2</version>
+      <version>0.9.3-SNAPSHOT</version>
       <url>http://directory.apache.org/subprojects/ldap/common</url>
     </dependency>
     <dependency>
       <groupId>directory</groupId>
       <artifactId>apacheds-core</artifactId>
-      <version>0.9.2</version>
+      <version>0.9.3-SNAPSHOT</version>
       <url>http://directory.apache.org/subprojects/apacheds</url>
     </dependency>
     <dependency>

Modified: directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java?rev=290501&r1=290500&r2=290501&view=diff
==============================================================================
--- directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java (original)
+++ directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java Tue Sep 20 11:10:04 2005
@@ -18,8 +18,6 @@
 
 
 import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.DirContext;
 
 import org.apache.ldap.common.exception.LdapException;
 import org.apache.ldap.common.message.CompareRequest;
@@ -28,9 +26,8 @@
 import org.apache.ldap.common.message.LdapResultImpl;
 import org.apache.ldap.common.message.ResultCodeEnum;
 import org.apache.ldap.common.util.ExceptionUtils;
-import org.apache.ldap.common.schema.Normalizer;
-import org.apache.ldap.server.jndi.ContextFactoryService;
-import org.apache.ldap.server.schema.AttributeTypeRegistry;
+import org.apache.ldap.common.name.LdapName;
+import org.apache.ldap.server.jndi.ServerLdapContext;
 import org.apache.mina.protocol.ProtocolSession;
 import org.apache.mina.protocol.handler.MessageHandler;
 import org.slf4j.Logger;
@@ -55,54 +52,15 @@
 
         try
         {
-            DirContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
-            Attribute attr = ctx.getAttributes( req.getName() ).get( req.getAttributeId() );
-            AttributeTypeRegistry registry = ContextFactoryService.getInstance().
-                    getConfiguration().getGlobalRegistries().getAttributeTypeRegistry();
-
-            // complain if we do not recognize the attribute being compared
-            if ( ! registry.hasAttributeType( req.getAttributeId() ) )
-            {
-                resp.getLdapResult().setResultCode( ResultCodeEnum.UNDEFINEDATTRIBUTETYPE );
-            }
-            // complain if the attribute being compared does not exist in the entry
-            else if ( attr == null )
-            {
-                resp.getLdapResult().setResultCode( ResultCodeEnum.NOSUCHATTRIBUTE );
-            }
-            // see first if simple match without normalization succeeds
-            else if ( attr.contains( req.getAssertionValue() ) )
+            ServerLdapContext ctx = ( ServerLdapContext ) SessionRegistry.getSingleton().getLdapContext( session, null, true );
+            LdapName name = new LdapName( req.getName() );
+            if ( ctx.compare( name, req.getAttributeId(), req.getAssertionValue() ) )
             {
                 resp.getLdapResult().setResultCode( ResultCodeEnum.COMPARETRUE );
             }
-            // now must apply normalization to all values (attr and in request) to compare
             else
             {
-                /*
-                 * Get ahold of the normalizer for the attribute and normalize the request
-                 * assertion value for comparisons with normalized attribute values.  Loop
-                 * through all values looking for a match.
-                 */
-                Normalizer normalizer = registry.lookup( req.getAttributeId() ).getEquality().getNormalizer();
-                String reqVal = ( String ) normalizer.normalize( req.getAssertionValue() );
-                boolean isCompareTrue = false;
-
-                for ( int ii = 0; ii < attr.size(); ii++ )
-                {
-                    String attrVal = ( String ) normalizer.normalize( attr.get( ii ) );
-                    if ( attrVal.equals( reqVal ) )
-                    {
-                        resp.getLdapResult().setResultCode( ResultCodeEnum.COMPARETRUE );
-                        isCompareTrue = true;
-                        break;
-                    }
-                }
-
-                // if no match was found then we set compare to false
-                if ( ! isCompareTrue )
-                {
-                    resp.getLdapResult().setResultCode( ResultCodeEnum.COMPAREFALSE );
-                }
+                resp.getLdapResult().setResultCode( ResultCodeEnum.COMPAREFALSE );
             }
         }
         catch ( NamingException e )