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/23 00:56:50 UTC

svn commit: r291029 - /directory/protocol-providers/ldap/trunk/src/main/java/org/apache/ldap/server/protocol/CompareHandler.java

Author: akarasulu
Date: Thu Sep 22 15:56:47 2005
New Revision: 291029

URL: http://svn.apache.org/viewcvs?rev=291029&view=rev
Log:
fixed bug where we were getting a class cast exception when performing compare operations

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

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=291029&r1=291028&r2=291029&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 Thu Sep 22 15:56:47 2005
@@ -18,6 +18,7 @@
 
 
 import javax.naming.NamingException;
+import javax.naming.ldap.LdapContext;
 
 import org.apache.ldap.common.exception.LdapException;
 import org.apache.ldap.common.message.CompareRequest;
@@ -52,9 +53,10 @@
 
         try
         {
-            ServerLdapContext ctx = ( ServerLdapContext ) SessionRegistry.getSingleton().getLdapContext( session, null, true );
+            LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
+            ServerLdapContext newCtx = ( ServerLdapContext ) ctx.lookup( "" );
             LdapName name = new LdapName( req.getName() );
-            if ( ctx.compare( name, req.getAttributeId(), req.getAssertionValue() ) )
+            if ( newCtx.compare( name, req.getAttributeId(), req.getAssertionValue() ) )
             {
                 resp.getLdapResult().setResultCode( ResultCodeEnum.COMPARETRUE );
             }
@@ -63,7 +65,7 @@
                 resp.getLdapResult().setResultCode( ResultCodeEnum.COMPAREFALSE );
             }
         }
-        catch ( NamingException e )
+        catch ( Exception e )
         {
             String msg = "failed to compare entry " + req.getName();
 
@@ -85,9 +87,12 @@
             resp.getLdapResult().setResultCode( code );
             resp.getLdapResult().setErrorMessage( msg );
 
-            if ( e.getResolvedName() != null )
+            if ( e instanceof NamingException )
             {
-                resp.getLdapResult().setMatchedDn( e.getResolvedName().toString() );
+                if ( ( ( NamingException ) e ).getResolvedName() != null )
+                {
+                    resp.getLdapResult().setMatchedDn( ( ( NamingException ) e ).getResolvedName().toString() );
+                }
             }
 
             session.write( resp );