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 2008/06/08 09:27:28 UTC

svn commit: r664463 - in /directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap: ./ handlers/ handlers/bind/

Author: akarasulu
Date: Sun Jun  8 00:27:28 2008
New Revision: 664463

URL: http://svn.apache.org/viewvc?rev=664463&view=rev
Log:
fixed extended handler and other handler issues but many problems remain with search, sasl and extended operation handlers

Added:
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewExtendedHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewUnbindHandler.java
      - copied, changed from r664456, directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultUnbindHandler.java
Removed:
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultExtendedHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultUnbindHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/ExtendedHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/UnbindHandler.java
Modified:
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/ExtendedOperationHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/LdapServer.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewSearchHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5CallbackHandler.java
    directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5MechanismHandler.java

Modified: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/ExtendedOperationHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/ExtendedOperationHandler.java?rev=664463&r1=664462&r2=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/ExtendedOperationHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/ExtendedOperationHandler.java Sun Jun  8 00:27:28 2008
@@ -65,9 +65,9 @@
 
 
     /**
-     * Sets the LDAP provider for this extendedOperation handler.
+     * Sets the LDAP server for this extendedOperation handler.
      * 
-     * @param provider the ldap protocol provider 
+     * @param ldapServer the ldap protocol server
      */
-    void setLdapProvider( LdapServer provider );
+    void setLdapServer( LdapServer ldapServer );
 }

Modified: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/LdapServer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/LdapServer.java?rev=664463&r1=664462&r2=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/LdapServer.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/LdapServer.java Sun Jun  8 00:27:28 2008
@@ -33,27 +33,17 @@
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.server.core.partition.PartitionNexus;
 import org.apache.directory.server.core.security.CoreKeyStoreSpi;
-import org.apache.directory.server.newldap.handlers.CompareHandler;
-import org.apache.directory.server.newldap.handlers.DefaultCompareHandler;
-import org.apache.directory.server.newldap.handlers.DefaultDeleteHandler;
-import org.apache.directory.server.newldap.handlers.DefaultExtendedHandler;
-import org.apache.directory.server.newldap.handlers.DefaultModifyDnHandler;
-import org.apache.directory.server.newldap.handlers.DefaultModifyHandler;
-import org.apache.directory.server.newldap.handlers.DefaultSearchHandler;
-import org.apache.directory.server.newldap.handlers.DefaultUnbindHandler;
-import org.apache.directory.server.newldap.handlers.DeleteHandler;
-import org.apache.directory.server.newldap.handlers.ExtendedHandler;
+import org.apache.directory.server.newldap.handlers.NewExtendedHandler;
+import org.apache.directory.server.newldap.handlers.NewModifyHandler;
+import org.apache.directory.server.newldap.handlers.NewSearchHandler;
+import org.apache.directory.server.newldap.handlers.NewUnbindHandler;
 import org.apache.directory.server.newldap.handlers.LdapRequestHandler;
-import org.apache.directory.server.newldap.handlers.ModifyDnHandler;
-import org.apache.directory.server.newldap.handlers.ModifyHandler;
 import org.apache.directory.server.newldap.handlers.NewAbandonHandler;
 import org.apache.directory.server.newldap.handlers.NewAddHandler;
 import org.apache.directory.server.newldap.handlers.NewBindHandler;
 import org.apache.directory.server.newldap.handlers.NewCompareHandler;
 import org.apache.directory.server.newldap.handlers.NewDeleteHandler;
 import org.apache.directory.server.newldap.handlers.NewModifyDnHandler;
-import org.apache.directory.server.newldap.handlers.SearchHandler;
-import org.apache.directory.server.newldap.handlers.UnbindHandler;
 import org.apache.directory.server.newldap.handlers.bind.*;
 import org.apache.directory.server.newldap.handlers.ssl.LdapsInitializer;
 import org.apache.directory.server.protocol.shared.DirectoryBackedService;
@@ -191,11 +181,11 @@
     private LdapRequestHandler<BindRequest> bindHandler;
     private LdapRequestHandler<CompareRequest> compareHandler;
     private LdapRequestHandler<DeleteRequest> deleteHandler;
-    private ExtendedHandler extendedHandler;
-    private ModifyHandler modifyHandler;
+    private LdapRequestHandler<ExtendedRequest> extendedHandler;
+    private LdapRequestHandler<ModifyRequest> modifyHandler;
     private LdapRequestHandler<ModifyDnRequest> modifyDnHandler;
-    private SearchHandler searchHandler;
-    private UnbindHandler unbindHandler;
+    private LdapRequestHandler<SearchRequest> searchHandler;
+    private LdapRequestHandler<UnbindRequest> unbindHandler;
 
 
     /** the underlying provider codec factory */
@@ -270,12 +260,12 @@
         
         if ( getExtendedHandler() == null )
         {
-            setExtendedHandler( new DefaultExtendedHandler() );
+            setExtendedHandler( new NewExtendedHandler() );
         }
         
         if ( getModifyHandler() == null )
         {
-            setModifyHandler( new DefaultModifyHandler() );
+            setModifyHandler( new NewModifyHandler() );
         }
         
         if ( getModifyDnHandler() == null )
@@ -285,12 +275,12 @@
         
         if ( getSearchHandler() == null )
         {
-            setSearchHandler( new DefaultSearchHandler() );
+            setSearchHandler( new NewSearchHandler() );
         }
         
         if ( getUnbindHandler() == null )
         {
-            setUnbindHandler( new DefaultUnbindHandler() );
+            setUnbindHandler( new NewUnbindHandler() );
         }
     }
 
@@ -407,9 +397,8 @@
 
         for ( ExtendedOperationHandler h : extendedOperationHandlers )
         {
-            extendedHandler.addHandler( h );
             LOG.info( "Added Extended Request Handler: " + h.getOid() );
-            h.setLdapProvider( this );
+            h.setLdapServer( this );
             nexus.registerSupportedExtensions( h.getExtensionOids() );
         }
 
@@ -480,8 +469,7 @@
     {
         if ( started )
         {
-            extendedHandler.addHandler( eoh );
-            eoh.setLdapProvider( this );
+            eoh.setLdapServer( this );
             PartitionNexus nexus = getDirectoryService().getPartitionNexus();
             nexus.registerSupportedExtensions( eoh.getExtensionOids() );
         }
@@ -501,27 +489,20 @@
      */
     public void removeExtendedOperationHandler( String oid )
     {
-        if ( started )
-        {
-            extendedHandler.removeHandler( oid );
+        // need to do something like this to make this work right
+        //            PartitionNexus nexus = getDirectoryService().getPartitionNexus();
+        //            nexus.unregisterSupportedExtensions( eoh.getExtensionOids() );
 
-            // need to do something like this to make this work right
-            //            PartitionNexus nexus = getDirectoryService().getPartitionNexus();
-            //            nexus.unregisterSupportedExtensions( eoh.getExtensionOids() );
-        }
-        else
+        ExtendedOperationHandler handler = null;
+        for ( ExtendedOperationHandler h : extendedOperationHandlers )
         {
-            ExtendedOperationHandler handler = null;
-            for ( ExtendedOperationHandler h : extendedOperationHandlers )
+            if ( h.getOid().equals( oid ) )
             {
-                if ( h.getOid().equals( oid ) )
-                {
-                    handler = h;
-                    break;
-                }
+                handler = h;
+                break;
             }
-            extendedOperationHandlers.remove( handler );
         }
+        extendedOperationHandlers.remove( handler );
     }
 
 
@@ -535,18 +516,11 @@
      */
     public ExtendedOperationHandler getExtendedOperationHandler( String oid )
     {
-        if ( started )
-        {
-            return extendedHandler.getHandler( oid );
-        }
-        else
+        for ( ExtendedOperationHandler h : extendedOperationHandlers )
         {
-            for ( ExtendedOperationHandler h : extendedOperationHandlers )
+            if ( h.getOid().equals( oid ) )
             {
-                if ( h.getOid().equals( oid ) )
-                {
-                    return h;
-                }
+                return h;
             }
         }
 
@@ -555,18 +529,6 @@
 
 
     /**
-     * Returns a {@link Map} of all registered OID-{@link ExtendedOperationHandler}
-     * pairs.
-     *
-     * @return map of all extended operation handlers
-     */
-    public Map<String,ExtendedOperationHandler> getExtendedOperationHandlerMap()
-    {
-        return extendedHandler.getHandlerMap();
-    }
-
-
-    /**
      * Returns <tt>true</tt> if LDAPS is enabled.
      *
      * @return True if LDAPS is enabled.
@@ -934,39 +896,37 @@
     }
 
 
-    public ExtendedHandler getExtendedHandler()
+    public LdapRequestHandler<ExtendedRequest> getExtendedHandler()
     {
         return extendedHandler;
     }
 
 
-    public void setExtendedHandler( ExtendedHandler extendedHandler )
+    public void setExtendedHandler( LdapRequestHandler<ExtendedRequest> extendedHandler )
     {
         this.handler.removeMessageHandler( ExtendedRequest.class );
         this.extendedHandler = extendedHandler;
         this.extendedHandler.setLdapServer( this );
-        //noinspection unchecked
         this.handler.addMessageHandler( ExtendedRequest.class, this.extendedHandler );
     }
 
 
-    public ModifyHandler getModifyHandler()
+    public LdapRequestHandler<ModifyRequest> getModifyHandler()
     {
         return modifyHandler;
     }
 
 
-    public void setModifyHandler( ModifyHandler modifyHandler )
+    public void setModifyHandler( LdapRequestHandler<ModifyRequest> modifyHandler )
     {
         this.handler.removeMessageHandler( ModifyRequest.class );
         this.modifyHandler = modifyHandler;
-        this.modifyHandler.setProtocolProvider( this );
-        //noinspection unchecked
+        this.modifyHandler.setLdapServer( this );
         this.handler.addMessageHandler( ModifyRequest.class, this.modifyHandler );
     }
 
 
-    public ModifyDnHandler getModifyDnHandler()
+    public LdapRequestHandler<ModifyDnRequest> getModifyDnHandler()
     {
         return modifyDnHandler;
     }
@@ -981,34 +941,32 @@
     }
 
 
-    public SearchHandler getSearchHandler()
+    public LdapRequestHandler<SearchRequest> getSearchHandler()
     {
         return searchHandler;
     }
 
 
-    public void setSearchHandler( SearchHandler searchHandler )
+    public void setSearchHandler( LdapRequestHandler<SearchRequest> searchHandler )
     {
         this.handler.removeMessageHandler( SearchRequest.class );
         this.searchHandler = searchHandler;
-        this.searchHandler.setProtocolProvider( this );
-        //noinspection unchecked
+        this.searchHandler.setLdapServer( this );
         this.handler.addMessageHandler( SearchRequest.class, this.searchHandler );
     }
 
 
-    public UnbindHandler getUnbindHandler()
+    public LdapRequestHandler<UnbindRequest> getUnbindHandler()
     {
         return unbindHandler;
     }
 
 
-    public void setUnbindHandler( UnbindHandler unbindHandler )
+    public void setUnbindHandler( LdapRequestHandler<UnbindRequest> unbindHandler )
     {
         this.handler.removeMessageHandler( UnbindRequest.class );
         this.unbindHandler = unbindHandler;
-        this.unbindHandler.setProtocolProvider( this );
-        //noinspection unchecked
+        this.unbindHandler.setLdapServer( this );
         this.handler.addMessageHandler( UnbindRequest.class, this.unbindHandler );
     }
 
@@ -1084,6 +1042,18 @@
             ldapSession.abandonAllOutstandingRequests();
         }
         
+        if ( ! session.isClosing() || session.isConnected() )
+        {
+            try
+            {
+                session.close();
+            }
+            catch ( Throwable t )
+            {
+                LOG.warn( "Failed to close IoSession for LdapSession." );
+            }
+        }
+        
         return ldapSession;
     }
     

Added: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewExtendedHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewExtendedHandler.java?rev=664463&view=auto
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewExtendedHandler.java (added)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewExtendedHandler.java Sun Jun  8 00:27:28 2008
@@ -0,0 +1,71 @@
+    /*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License. 
+ *  
+ */
+package org.apache.directory.server.newldap.handlers;
+
+
+import org.apache.directory.server.newldap.ExtendedOperationHandler;
+import org.apache.directory.server.newldap.LdapSession;
+import org.apache.directory.shared.ldap.message.ExtendedRequest;
+import org.apache.directory.shared.ldap.message.ExtendedResponse;
+import org.apache.directory.shared.ldap.message.LdapResult;
+import org.apache.directory.shared.ldap.message.ResultCodeEnum;
+import org.apache.directory.shared.ldap.util.ExceptionUtils;
+
+
+/**
+* A single reply handler for {@link ExtendedRequest}s.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev: 664302 $
+ */
+public class NewExtendedHandler extends LdapRequestHandler<ExtendedRequest>
+{
+    public void handle( LdapSession session, ExtendedRequest req ) throws Exception
+    {
+        ExtendedOperationHandler handler = getLdapServer().getExtendedOperationHandler( req.getOid() );
+
+        if ( handler == null )
+        {
+            // As long as no extended operations are implemented, send appropriate
+            // error back to the client.
+            String msg = "Unrecognized extended operation EXTENSION_OID: " + req.getOid();
+            LdapResult result = req.getResultResponse().getLdapResult();
+            result.setResultCode( ResultCodeEnum.PROTOCOL_ERROR );
+            result.setErrorMessage( msg );
+            session.getIoSession().write( req.getResultResponse() );
+            return;
+        }
+        
+        try
+        {
+            handler.handleExtendedOperation( session, req );
+        }
+        catch ( Exception e )
+        {
+            LdapResult result = req.getResultResponse().getLdapResult();
+            result.setResultCode( ResultCodeEnum.OTHER );
+            result.setErrorMessage( "Extended operation handler for the specified EXTENSION_OID (" + req.getOid()
+                + ") has failed to process your request:\n" + ExceptionUtils.getStackTrace( e ) );
+            ExtendedResponse resp = ( ExtendedResponse ) req.getResultResponse();
+            resp.setResponse( new byte[0] );
+            session.getIoSession().write( req.getResultResponse() );
+        }
+    }
+}
\ No newline at end of file

Modified: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewSearchHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewSearchHandler.java?rev=664463&r1=664462&r2=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewSearchHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewSearchHandler.java Sun Jun  8 00:27:28 2008
@@ -69,7 +69,7 @@
  */
 public class NewSearchHandler extends LdapRequestHandler<SearchRequest>
 {
-    private static final Logger LOG = LoggerFactory.getLogger( SearchHandler.class );
+    private static final Logger LOG = LoggerFactory.getLogger( NewSearchHandler.class );
 
     
     /** Speedup for logs */

Copied: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewUnbindHandler.java (from r664456, directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultUnbindHandler.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewUnbindHandler.java?p2=directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewUnbindHandler.java&p1=directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultUnbindHandler.java&r1=664456&r2=664463&rev=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/DefaultUnbindHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/NewUnbindHandler.java Sun Jun  8 00:27:28 2008
@@ -20,15 +20,12 @@
 package org.apache.directory.server.newldap.handlers;
 
 
-import org.apache.directory.server.core.jndi.ServerLdapContext;
+import org.apache.directory.server.newldap.LdapSession;
 import org.apache.directory.shared.ldap.message.UnbindRequest;
-import org.apache.mina.common.IoSession;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingException;
-import javax.naming.ldap.LdapContext;
-
 
 /**
  * A no reply protocol handler implementation for LDAP {@link
@@ -37,31 +34,22 @@
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$
  */
-public class DefaultUnbindHandler extends UnbindHandler
+public class NewUnbindHandler extends LdapRequestHandler<UnbindRequest>
 {
-    private static final Logger LOG = LoggerFactory.getLogger( UnbindHandler.class );
+    private static final Logger LOG = LoggerFactory.getLogger( NewUnbindHandler.class );
 
 
-    public void unbindMessageReceived( IoSession session, UnbindRequest request ) throws Exception
+    public void handle( LdapSession session, UnbindRequest request ) throws Exception
     {
         try
         {
-            LdapContext ctx = getSessionRegistry().getLdapContext( session, null, false );
-
-            if ( ctx != null )
-            {
-                if ( ctx instanceof ServerLdapContext && ( ( ServerLdapContext ) ctx ).getService().isStarted() )
-                {
-                    ( ( ServerLdapContext ) ctx ).ldapUnbind();
-                }
-                ctx.close();
-            }
-            getSessionRegistry().terminateSession( session );
-            getSessionRegistry().remove( session );
+            session.getCoreSession().unbind( request );
+            session.getIoSession().close();
+            ldapServer.removeLdapSession( session.getIoSession() );
         }
-        catch ( NamingException e )
+        catch ( Throwable t )
         {
-            LOG.error( "failed to unbind session properly", e );
+            LOG.error( "failed to unbind session properly", t );
         }
     }
 }
\ No newline at end of file

Modified: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5CallbackHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5CallbackHandler.java?rev=664463&r1=664462&r2=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5CallbackHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5CallbackHandler.java Sun Jun  8 00:27:28 2008
@@ -21,15 +21,14 @@
 
 
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.newldap.LdapSession;
 import org.apache.directory.shared.ldap.message.BindRequest;
-import org.apache.mina.common.IoSession;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.naming.Context;
-import javax.naming.ldap.LdapContext;
 import javax.security.sasl.AuthorizeCallback;
-import java.util.Hashtable;
 
 
 /**
@@ -40,8 +39,7 @@
 {
     private static final Logger LOG = LoggerFactory.getLogger( CramMd5CallbackHandler.class );
 
-    private IoSession session;
-    private BindRequest bindRequest;
+    private LdapSession session;
 
     private String bindDn;
     private String userPassword;
@@ -54,24 +52,19 @@
      * @param bindRequest the bind message
      * @param directoryService the directory service core
      */
-    public CramMd5CallbackHandler( DirectoryService directoryService,  IoSession session, BindRequest bindRequest )
+    public CramMd5CallbackHandler( DirectoryService directoryService,  LdapSession session, BindRequest bindRequest )
     {
         super( directoryService );
         this.session = session;
-        this.bindRequest = bindRequest;
     }
 
 
     protected String lookupPassword( String username, String realm )
     {
-        Hashtable<String, Object> env = getEnvironment( session );
-
-        LdapContext ctx = getContext( session, bindRequest, env );
-
         GetBindDn getDn = new GetBindDn( username );
 
         // Don't actually want the entry, rather the hacked in dn.
-        getDn.execute( ctx, null );
+        getDn.execute( session, null );
         bindDn = getDn.getBindDn();
         userPassword = getDn.getUserPassword();
 
@@ -86,7 +79,7 @@
             LOG.debug( "Converted username " + getUsername() + " to DN " + bindDn + " with password " + userPassword );
         }
 
-        session.setAttribute( Context.SECURITY_PRINCIPAL, bindDn );
+        session.getIoSession().setAttribute( Context.SECURITY_PRINCIPAL, bindDn );
 
         authorizeCB.setAuthorizedID( bindDn );
         authorizeCB.setAuthorized( true );

Modified: directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5MechanismHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5MechanismHandler.java?rev=664463&r1=664462&r2=664463&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5MechanismHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-newldap/src/main/java/org/apache/directory/server/newldap/handlers/bind/CramMd5MechanismHandler.java Sun Jun  8 00:27:28 2008
@@ -21,6 +21,7 @@
 
 
 import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.newldap.LdapSession;
 import org.apache.directory.shared.ldap.constants.SupportedSaslMechanisms;
 import org.apache.directory.shared.ldap.message.BindRequest;
 import org.apache.mina.common.IoSession;
@@ -50,17 +51,18 @@
     }
 
     
-    public SaslServer handleMechanism( IoSession session, BindRequest bindRequest ) throws Exception
+    public SaslServer handleMechanism( LdapSession session, BindRequest bindRequest ) throws Exception
     {
         SaslServer ss;
 
-        if ( session.containsAttribute( SASL_CONTEXT ) )
+        // TODO - don't use session properties anymore
+        if ( session.getIoSession().containsAttribute( SASL_CONTEXT ) )
         {
-            ss = ( SaslServer ) session.getAttribute( SASL_CONTEXT );
+            ss = ( SaslServer ) session.getIoSession().getAttribute( SASL_CONTEXT );
         }
         else
         {
-            String saslHost = ( String ) session.getAttribute( "saslHost" );
+            String saslHost = ( String ) session.getIoSession().getAttribute( "saslHost" );
 
             /*
              * Sasl will throw an exception is Sasl.QOP properties are set.
@@ -71,7 +73,7 @@
             CallbackHandler callbackHandler = new CramMd5CallbackHandler( directoryService, session, bindRequest );
 
             ss = Sasl.createSaslServer( SupportedSaslMechanisms.CRAM_MD5, "ldap", saslHost, saslProps, callbackHandler );
-            session.setAttribute( SASL_CONTEXT, ss );
+            session.getIoSession().setAttribute( SASL_CONTEXT, ss );
         }
 
         return ss;