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

svn commit: r328303 - in /directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support: AddHandler.java BindHandler.java

Author: elecharny
Date: Tue Oct 25 00:50:01 2005
New Revision: 328303

URL: http://svn.apache.org/viewcvs?rev=328303&view=rev
Log:
Updated the resultMessage

Modified:
    directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/AddHandler.java
    directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/BindHandler.java

Modified: directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/AddHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/AddHandler.java?rev=328303&r1=328302&r2=328303&view=diff
==============================================================================
--- directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/AddHandler.java (original)
+++ directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/AddHandler.java Tue Oct 25 00:50:01 2005
@@ -41,31 +41,37 @@
  */
 public class AddHandler implements MessageHandler
 {
-    private static final Logger LOG = LoggerFactory.getLogger( AddHandler.class );
+    private static final Logger log = LoggerFactory.getLogger( AddHandler.class );
 
     public void messageReceived( ProtocolSession session, Object request )
     {
         AddRequest req = ( AddRequest ) request;
+        
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( "Received a Add message : " + req.toString() );
+        }
+
         AddResponse resp = new AddResponseImpl( req.getMessageId() );
         resp.setLdapResult( new LdapResultImpl( resp ) );
 
         try
         {
             LdapContext ctx = SessionRegistry.getSingleton().getLdapContext( session, null, true );
-            ctx.createSubcontext( req.getName(), req.getEntry() );
+            ctx.createSubcontext( req.getEntry(), req.getAttributes() );
         }
         catch( NamingException e )
         {
-            String msg = "failed to add entry " + req.getName();
+            String msg = "failed to add entry " + req.getEntry();
 
-            if ( LOG.isDebugEnabled() )
+            if ( log.isDebugEnabled() )
             {
                 msg += ":\n" + ExceptionUtils.getStackTrace( e );
             }
 
             ResultCodeEnum code;
 
-            if( e instanceof LdapException )
+            if ( e instanceof LdapException )
             {
                 code = ( ( LdapException ) e ).getResultCode();
             }
@@ -76,7 +82,12 @@
 
             resp.getLdapResult().setResultCode( code );
             resp.getLdapResult().setErrorMessage( msg );
-            if( e.getResolvedName() != null )
+            
+            if ( ( e.getResolvedName() != null ) &&
+                 ( ( code == ResultCodeEnum.NOSUCHOBJECT ) ||
+                   ( code == ResultCodeEnum.ALIASPROBLEM ) ||
+                   ( code == ResultCodeEnum.INVALIDDNSYNTAX ) ||
+                   ( code == ResultCodeEnum.ALIASDEREFERENCINGPROBLEM ) ) )
             {
                 resp.getLdapResult().setMatchedDn(
                         e.getResolvedName().toString() );
@@ -87,7 +98,6 @@
         }
 
         resp.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS );
-        resp.getLdapResult().setMatchedDn( req.getName() );
         session.write( resp );
     }
 }

Modified: directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/BindHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/BindHandler.java?rev=328303&r1=328302&r2=328303&view=diff
==============================================================================
--- directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/BindHandler.java (original)
+++ directory/protocol-providers/ldap/branches/protocol-ldap-utf8/src/main/java/org/apache/ldap/server/protocol/support/BindHandler.java Tue Oct 25 00:50:01 2005
@@ -25,6 +25,8 @@
 import javax.naming.ldap.LdapContext;
 import javax.naming.spi.InitialContextFactory;
 
+import org.apache.asn1new.util.StringUtils;
+import org.apache.asn1new.util.StringUtilsTest;
 import org.apache.ldap.common.exception.LdapException;
 import org.apache.ldap.common.message.BindRequest;
 import org.apache.ldap.common.message.BindResponse;
@@ -52,7 +54,7 @@
  */
 public class BindHandler implements MessageHandler
 {
-    private static final Logger LOG = LoggerFactory.getLogger( BindHandler.class );
+    private static final Logger log = LoggerFactory.getLogger( BindHandler.class );
     private static final Control[] EMPTY = new Control[0];
 
 
@@ -66,6 +68,7 @@
 
         Hashtable env = SessionRegistry.getSingleton().getEnvironment();
         StartupConfiguration cfg = ( StartupConfiguration ) Configuration.toConfiguration( env );
+        
         // if the bind request is not simple then we freak: no strong auth yet
         if ( ! req.isSimple() )
         {
@@ -77,7 +80,7 @@
 
         boolean allowAnonymousBinds = cfg.isAllowAnonymousAccess();
         boolean emptyCredentials = req.getCredentials() == null || req.getCredentials().length == 0;
-        boolean emptyDn = req.getName() == null || req.getName().length() == 0;
+        boolean emptyDn = StringUtils.isEmpty( req.getName() );
 
         if ( emptyCredentials && emptyDn && ! allowAnonymousBinds )
         {
@@ -89,8 +92,7 @@
         }
 
         // clone the environment first then add the required security settings
-
-        String dn = req.getName();
+        String dn = ( emptyDn ? "" : req.getName() );
 
         byte[] creds = req.getCredentials();
 
@@ -121,25 +123,36 @@
         }
         catch( NamingException e )
         {
+            ResultCodeEnum code;
+            
             if ( e instanceof LdapException )
             {
-                result.setResultCode( ( ( LdapException ) e ).getResultCode() );
+                code = ( ( LdapException ) e ).getResultCode();
+                result.setResultCode( code );
             }
             else
             {
-                result.setResultCode( ResultCodeEnum.getBestEstimate( e,
-                        req.getType() ) );
+                code = ResultCodeEnum.getBestEstimate( e, req.getType() );
+                result.setResultCode( code );
             }
 
             String msg = "Bind failed";
 
-            if ( LOG.isDebugEnabled() )
+            if ( log.isDebugEnabled() )
             {
                 msg += ":\n" + ExceptionUtils.getStackTrace( e );
                 msg += "\n\nBindRequest = \n" + req.toString();
             }
 
-
+            if ( ( e.getResolvedName() != null ) &&
+                    ( ( code == ResultCodeEnum.NOSUCHOBJECT ) ||
+                      ( code == ResultCodeEnum.ALIASPROBLEM ) ||
+                      ( code == ResultCodeEnum.INVALIDDNSYNTAX ) ||
+                      ( code == ResultCodeEnum.ALIASDEREFERENCINGPROBLEM ) ) )
+            {
+                resp.getLdapResult().setMatchedDn( e.getResolvedName().toString() );
+            }
+            
             result.setErrorMessage( msg );
             session.write( resp );
             return;
@@ -147,7 +160,6 @@
 
         SessionRegistry.getSingleton().setLdapContext( session, ctx );
         result.setResultCode( ResultCodeEnum.SUCCESS );
-        result.setMatchedDn( req.getName() );
         session.write( resp );
     }
 }