Modified: incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/ModifyHandler.java URL: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/ModifyHandler.java?view=diff&r1=151810&r2=151811 ============================================================================== --- incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/ModifyHandler.java (original) +++ incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/ModifyHandler.java Mon Feb 7 17:59:05 2005 @@ -22,8 +22,6 @@ import javax.naming.directory.ModificationItem; import javax.naming.ldap.InitialLdapContext; -import org.apache.apseda.listener.ClientKey; -import org.apache.apseda.protocol.AbstractSingleReplyHandler; import org.apache.ldap.common.exception.LdapException; import org.apache.ldap.common.message.LdapResultImpl; import org.apache.ldap.common.message.ModifyRequest; @@ -31,6 +29,7 @@ import org.apache.ldap.common.message.ModifyResponseImpl; import org.apache.ldap.common.message.ResultCodeEnum; import org.apache.ldap.common.util.ExceptionUtils; +import org.apache.mina.protocol.ProtocolSession; /** @@ -39,13 +38,11 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Apache Directory Project</a> * @version $Rev$ */ -public class ModifyHandler extends AbstractSingleReplyHandler +public class ModifyHandler implements CommandHandler { private static final ModificationItem[] EMPTY = new ModificationItem[0]; - /** - * @see org.apache.apseda.protocol.SingleReplyHandler#handle(ClientKey,Object) - */ - public Object handle( ClientKey key, Object request ) + + public void handle( ProtocolSession session, Object request ) { ModifyRequest req = ( ModifyRequest ) request; ModifyResponse resp = new ModifyResponseImpl( req.getMessageId() ); @@ -54,7 +51,7 @@ try { InitialLdapContext ictx = SessionRegistry.getSingleton() - .getInitialLdapContext( key, null, true ); + .getInitialLdapContext( session, null, true ); DirContext ctx = ( DirContext ) ictx.lookup( "" ); Object[] mods = req.getModificationItems().toArray( EMPTY ); ctx.modifyAttributes( req.getName(), ( ModificationItem[] ) mods ); @@ -82,11 +79,13 @@ resp.getLdapResult().setMatchedDn( e.getResolvedName().toString() ); } - return resp; + session.write( resp ); + return; } resp.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS ); resp.getLdapResult().setMatchedDn( req.getName() ); - return resp; + session.write( resp ); + return; } }
Modified: incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SearchHandler.java URL: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SearchHandler.java?view=diff&r1=151810&r2=151811 ============================================================================== --- incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SearchHandler.java (original) +++ incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SearchHandler.java Mon Feb 7 17:59:05 2005 @@ -16,7 +16,6 @@ */ package org.apache.ldap.server.protocol; - import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -31,8 +30,6 @@ import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; -import org.apache.apseda.listener.ClientKey; -import org.apache.apseda.protocol.AbstractManyReplyHandler; import org.apache.ldap.common.exception.LdapException; import org.apache.ldap.common.message.LdapResultImpl; import org.apache.ldap.common.message.ReferralImpl; @@ -46,7 +43,7 @@ import org.apache.ldap.common.message.SearchResponseReferenceImpl; import org.apache.ldap.common.util.ArrayUtils; import org.apache.ldap.common.util.ExceptionUtils; - +import org.apache.mina.protocol.ProtocolSession; /** * A handler for processing search requests. @@ -54,18 +51,12 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Apache Directory Project</a> * @version $Rev$ */ -public class SearchHandler extends AbstractManyReplyHandler +public class SearchHandler implements CommandHandler { private static final String DEREFALIASES_KEY = "java.naming.ldap.derefAliases"; - public SearchHandler() - { - super( true ); - } - - - public Iterator handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { LdapContext ctx; SearchRequest req = ( SearchRequest ) request; @@ -75,14 +66,16 @@ String[] ids = null; Collection retAttrs = new HashSet(); retAttrs.addAll( req.getAttributes() ); - if ( retAttrs.size() > 0 && ! retAttrs.contains( "ref" ) ) + if( retAttrs.size() > 0 && !retAttrs.contains( "ref" ) ) { retAttrs.add( "ref" ); - ids = ( String [] ) retAttrs.toArray( ArrayUtils.EMPTY_STRING_ARRAY ); + ids = ( String[] ) retAttrs + .toArray( ArrayUtils.EMPTY_STRING_ARRAY ); } - else if ( retAttrs.size() > 0 ) + else if( retAttrs.size() > 0 ) { - ids = ( String [] ) retAttrs.toArray( ArrayUtils.EMPTY_STRING_ARRAY ); + ids = ( String[] ) retAttrs + .toArray( ArrayUtils.EMPTY_STRING_ARRAY ); } // prepare all the search controls @@ -97,9 +90,10 @@ try { InitialLdapContext ictx = SessionRegistry.getSingleton() - .getInitialLdapContext( key, null, true ); + .getInitialLdapContext( session, null, true ); ctx = ( LdapContext ) ictx.lookup( "" ); - ctx.addToEnvironment( DEREFALIASES_KEY, req.getDerefAliases().getName() ); + ctx.addToEnvironment( DEREFALIASES_KEY, req.getDerefAliases() + .getName() ); /* * Eve JNDI Provider Specific Hack! @@ -121,30 +115,42 @@ list = ctx.search( req.getBase(), null, controls ); ctx.removeFromEnvironment( "__filter__" ); - if ( list.hasMore() ) + if( list.hasMore() ) { - return new SearchResponseIterator( req, list ); + Iterator it = new SearchResponseIterator( req, list ); + while( it.hasNext() ) + { + session.write( it.next() ); + } + return; } else { list.close(); - SearchResponseDone resp = new SearchResponseDoneImpl( req.getMessageId() ); + SearchResponseDone resp = new SearchResponseDoneImpl( req + .getMessageId() ); resp.setLdapResult( new LdapResultImpl( resp ) ); resp.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS ); resp.getLdapResult().setMatchedDn( req.getBase() ); - return Collections.singleton( resp ).iterator(); + Iterator it = Collections.singleton( resp ).iterator(); + while( it.hasNext() ) + { + session.write( it.next() ); + } + return; } } - catch ( NamingException e ) + catch( NamingException e ) { String msg = "failed on search operation:\n" + req + "\n"; msg += ExceptionUtils.getStackTrace( e ); - SearchResponseDone resp = new SearchResponseDoneImpl( req.getMessageId() ); + SearchResponseDone resp = new SearchResponseDoneImpl( req + .getMessageId() ); ResultCodeEnum rc = null; - if ( e instanceof LdapException ) + if( e instanceof LdapException ) { - rc = ( ( LdapException ) e ).getResultCode() ; + rc = ( ( LdapException ) e ).getResultCode(); } else { @@ -154,30 +160,35 @@ resp.setLdapResult( new LdapResultImpl( resp ) ); resp.getLdapResult().setResultCode( rc ); resp.getLdapResult().setErrorMessage( msg ); - if ( e.getResolvedName() != null ) + if( e.getResolvedName() != null ) { - resp.getLdapResult().setMatchedDn( e.getResolvedName().toString() ); + resp.getLdapResult().setMatchedDn( + e.getResolvedName().toString() ); } else { resp.getLdapResult().setMatchedDn( "" ); } - return Collections.singleton( resp ).iterator(); + Iterator it = Collections.singleton( resp ).iterator(); + while( it.hasNext() ) + { + session.write( it.next() ); + } } } - SearchResponseDone getResponse( SearchRequest req, NamingException e ) { String msg = "failed on search operation:\n" + req + "\n"; msg += ExceptionUtils.getStackTrace( e ); - SearchResponseDone resp = new SearchResponseDoneImpl( req.getMessageId() ); + SearchResponseDone resp = new SearchResponseDoneImpl( req + .getMessageId() ); ResultCodeEnum rc = null; - if ( e instanceof LdapException ) + if( e instanceof LdapException ) { - rc = ( ( LdapException ) e ).getResultCode() ; + rc = ( ( LdapException ) e ).getResultCode(); } else { @@ -187,9 +198,10 @@ resp.setLdapResult( new LdapResultImpl( resp ) ); resp.getLdapResult().setResultCode( rc ); resp.getLdapResult().setErrorMessage( msg ); - if ( e.getResolvedName() != null ) + if( e.getResolvedName() != null ) { - resp.getLdapResult().setMatchedDn( e.getResolvedName().toString() ); + resp.getLdapResult() + .setMatchedDn( e.getResolvedName().toString() ); } else { @@ -199,15 +211,17 @@ return resp; } - class SearchResponseIterator implements Iterator { private final SearchRequest req; + private final NamingEnumeration underlying; + private SearchResponseDone respDone; + private boolean done = false; - private Object prefetched; + private Object prefetched; /** * Creates a search response iterator for the resulting enumeration @@ -216,14 +230,15 @@ * @param req the search request to generate responses to * @param underlying the underlying JNDI enumeration containing SearchResults */ - public SearchResponseIterator( SearchRequest req, NamingEnumeration underlying ) + public SearchResponseIterator( SearchRequest req, + NamingEnumeration underlying ) { this.req = req; this.underlying = underlying; try { - if ( underlying.hasMore() ) + if( underlying.hasMore() ) { SearchResult result = ( SearchResult ) underlying.next(); @@ -232,10 +247,11 @@ * local variable for the following call to next() */ Attribute ref = result.getAttributes().get( "ref" ); - if ( ref == null || ref.size() > 0 ) + if( ref == null || ref.size() > 0 ) { SearchResponseEntry respEntry; - respEntry = new SearchResponseEntryImpl( req.getMessageId() ); + respEntry = new SearchResponseEntryImpl( req + .getMessageId() ); respEntry.setAttributes( result.getAttributes() ); respEntry.setObjectName( result.getName() ); prefetched = respEntry; @@ -243,9 +259,10 @@ else { SearchResponseReference respRef; - respRef = new SearchResponseReferenceImpl( req.getMessageId() ); + respRef = new SearchResponseReferenceImpl( req + .getMessageId() ); respRef.setReferral( new ReferralImpl( respRef ) ); - for ( int ii = 0; ii < ref.size(); ii++ ) + for( int ii = 0; ii < ref.size(); ii ++ ) { String url; @@ -254,9 +271,15 @@ url = ( String ) ref.get( ii ); respRef.getReferral().addLdapUrl( url ); } - catch ( NamingException e ) + catch( NamingException e ) { - try { underlying.close(); } catch( Throwable t ) {} + try + { + underlying.close(); + } + catch( Throwable t ) + { + } prefetched = null; respDone = getResponse( req, e ); } @@ -265,33 +288,37 @@ } } } - catch ( NamingException e ) + catch( NamingException e ) { - try { this.underlying.close(); } catch( Exception e2 ) {} + try + { + this.underlying.close(); + } + catch( Exception e2 ) + { + } respDone = getResponse( req, e ); } } - public boolean hasNext() { return !done; } - public Object next() { Object next = prefetched; SearchResult result = null; // if we're done we got nothing to give back - if ( done ) + if( done ) { throw new NoSuchElementException(); } // if respDone has been assembled this is our last object to return - if ( respDone != null ) + if( respDone != null ) { done = true; return respDone; @@ -307,24 +334,37 @@ * If we have more results from the underlying cursorr then * we just set the result and build the response object below. */ - if ( underlying.hasMore() ) + if( underlying.hasMore() ) { result = ( SearchResult ) underlying.next(); } else { - try { underlying.close(); } catch( Throwable t ) {} + try + { + underlying.close(); + } + catch( Throwable t ) + { + } respDone = new SearchResponseDoneImpl( req.getMessageId() ); respDone.setLdapResult( new LdapResultImpl( respDone ) ); - respDone.getLdapResult().setResultCode( ResultCodeEnum.SUCCESS ); + respDone.getLdapResult().setResultCode( + ResultCodeEnum.SUCCESS ); respDone.getLdapResult().setMatchedDn( req.getBase() ); prefetched = null; return next; } } - catch ( NamingException e ) + catch( NamingException e ) { - try { underlying.close(); } catch( Throwable t ) {} + try + { + underlying.close(); + } + catch( Throwable t ) + { + } prefetched = null; respDone = getResponse( req, e ); return next; @@ -335,18 +375,20 @@ * local variable for the following call to next() */ Attribute ref = result.getAttributes().get( "ref" ); - if ( ref == null || ref.size() > 0 ) + if( ref == null || ref.size() > 0 ) { - SearchResponseEntry respEntry = new SearchResponseEntryImpl( req.getMessageId() ); + SearchResponseEntry respEntry = new SearchResponseEntryImpl( + req.getMessageId() ); respEntry.setAttributes( result.getAttributes() ); respEntry.setObjectName( result.getName() ); prefetched = respEntry; } else { - SearchResponseReference respRef = new SearchResponseReferenceImpl( req.getMessageId() ); + SearchResponseReference respRef = new SearchResponseReferenceImpl( + req.getMessageId() ); respRef.setReferral( new ReferralImpl( respRef ) ); - for ( int ii = 0; ii < ref.size(); ii++ ) + for( int ii = 0; ii < ref.size(); ii ++ ) { String url; @@ -355,9 +397,15 @@ url = ( String ) ref.get( ii ); respRef.getReferral().addLdapUrl( url ); } - catch ( NamingException e ) + catch( NamingException e ) { - try { underlying.close(); } catch( Throwable t ) {} + try + { + underlying.close(); + } + catch( Throwable t ) + { + } prefetched = null; respDone = getResponse( req, e ); return next; @@ -368,7 +416,6 @@ return next; } - /** * Unsupported so it throws an exception. Modified: incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java URL: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java?view=diff&r1=151810&r2=151811 ============================================================================== --- incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java (original) +++ incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/SessionRegistry.java Mon Feb 7 17:59:05 2005 @@ -20,8 +20,6 @@ import java.util.HashMap; import java.util.Hashtable; import java.util.Map; -import java.util.Observable; -import java.util.Observer; import javax.naming.Context; import javax.naming.NamingException; @@ -29,10 +27,8 @@ import javax.naming.ldap.Control; import javax.naming.ldap.InitialLdapContext; -import org.apache.apseda.event.DisconnectEvent; -import org.apache.apseda.event.EventRouter; -import org.apache.apseda.listener.ClientKey; import org.apache.ldap.common.exception.LdapNoPermissionException; +import org.apache.mina.protocol.ProtocolSession; /** @@ -44,12 +40,8 @@ public class SessionRegistry { private static SessionRegistry s_singleton; - /** a handle on the event router */ - private final EventRouter router; /** the set of client contexts */ private final Map contexts = new HashMap(); - /** the observer to listen for key expiration */ - private final Observer keyObserver = new KeyExpirationObserver(); /** the properties associated with this SessionRegistry */ private Hashtable env; @@ -77,10 +69,8 @@ * * @param env the properties associated with this SessionRegistry */ - SessionRegistry( Hashtable env, EventRouter router ) + SessionRegistry( Hashtable env ) { - this.router = router; - if ( s_singleton == null ) { s_singleton = this; @@ -121,24 +111,22 @@ * client. If the context is not present then there was no bind operation * that set it. Hence this operation requesting the IC is anonymous. * - * @param key the client's key + * @param session the client's key * @param connCtls connection controls if any to use if creating anon context * @param allowAnonymous true if anonymous requests will create anonymous * InitialContext if one is not present for the operation * @return the InitialContext or null */ - public InitialLdapContext getInitialLdapContext( ClientKey key, + public InitialLdapContext getInitialLdapContext( ProtocolSession session, Control[] connCtls, boolean allowAnonymous ) throws NamingException { InitialLdapContext ictx = null; - key.addObserver( keyObserver ); - synchronized( contexts ) { - ictx = ( InitialLdapContext ) contexts.get( key ); + ictx = ( InitialLdapContext ) contexts.get( session ); } if ( ictx == null && allowAnonymous ) @@ -159,16 +147,14 @@ /** * Sets the initial context associated with a newly authenticated client. * - * @param key the client's key + * @param session the client session * @param ictx the initial context gotten */ - public void setInitialLdapContext( ClientKey key, InitialDirContext ictx ) + public void setInitialLdapContext( ProtocolSession session, InitialDirContext ictx ) { - key.deleteObserver( keyObserver ); // remove first just in case - key.addObserver( keyObserver ); synchronized( contexts ) { - contexts.put( key, ictx ); + contexts.put( session, ictx ); } } @@ -176,39 +162,13 @@ /** * Removes the state mapping a JNDI initial context for the client's key. * - * @param key the client's key + * @param session the client's key */ - public void remove( ClientKey key ) + public void remove( ProtocolSession session ) { - key.deleteObserver( keyObserver ); synchronized( contexts ) { - contexts.remove( key ); - } - } - - - /** - * A key expiration observer. - */ - class KeyExpirationObserver implements Observer - { - /** - * This is called whenever the client's key expires. We react by removing - * the entry if any of the client's in our InitialContext registry. - * - * @param o the ClientKey that has expired - * @param arg will be null - */ - public void update( Observable o, Object arg ) - { - // cast just to make sure - ClientKey key = ( ClientKey ) o; - key.deleteObserver( keyObserver ); - synchronized( contexts ) - { - contexts.remove( key ); - } + contexts.remove( session ); } } @@ -216,11 +176,10 @@ /** * Terminates the session by publishing a disconnect event. * - * @param key the client key of the client to disconnect + * @param session the client key of the client to disconnect */ - public void terminateSession( ClientKey key ) + public void terminateSession( ProtocolSession session ) { - DisconnectEvent event = new DisconnectEvent( this, key ); - router.publish( event ); + session.close(); } } Modified: incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/UnbindHandler.java URL: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/UnbindHandler.java?view=diff&r1=151810&r2=151811 ============================================================================== --- incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/UnbindHandler.java (original) +++ incubator/directory/apacheds/trunk/protocol/src/main/java/org/apache/ldap/server/protocol/UnbindHandler.java Mon Feb 7 17:59:05 2005 @@ -20,8 +20,7 @@ import javax.naming.NamingException; import javax.naming.ldap.InitialLdapContext; -import org.apache.apseda.listener.ClientKey; -import org.apache.apseda.protocol.AbstractNoReplyHandler; +import org.apache.mina.protocol.ProtocolSession; /** @@ -31,22 +30,22 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Apache Directory Project</a> * @version $Rev$ */ -public class UnbindHandler extends AbstractNoReplyHandler +public class UnbindHandler implements CommandHandler { - public void handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { SessionRegistry registry = SessionRegistry.getSingleton(); try { InitialLdapContext ictx = SessionRegistry.getSingleton() - .getInitialLdapContext( key, null, false ); + .getInitialLdapContext( session, null, false ); if ( ictx != null ) { ictx.close(); } - registry.terminateSession( key ); - registry.remove( key ); + registry.terminateSession( session ); + registry.remove( session ); } catch ( NamingException e ) { Modified: incubator/directory/apacheds/trunk/protocol/src/test/org/apache/ldap/server/protocol/LdapProtocolProviderTest.java URL: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/protocol/src/test/org/apache/ldap/server/protocol/LdapProtocolProviderTest.java?view=diff&r1=151810&r2=151811 ============================================================================== --- incubator/directory/apacheds/trunk/protocol/src/test/org/apache/ldap/server/protocol/LdapProtocolProviderTest.java (original) +++ incubator/directory/apacheds/trunk/protocol/src/test/org/apache/ldap/server/protocol/LdapProtocolProviderTest.java Mon Feb 7 17:59:05 2005 @@ -18,17 +18,32 @@ import java.util.Properties; -import java.util.Iterator; import junit.framework.TestCase; -import org.apache.ldap.common.exception.LdapNamingException; -import org.apache.ldap.common.message.*; import org.apache.ldap.common.NotImplementedException; -import org.apache.ldap.server.protocol.*; -import org.apache.apseda.listener.ClientKey; -import org.apache.apseda.listener.ClientKey; -import org.apache.apseda.protocol.*; +import org.apache.ldap.common.exception.LdapNamingException; +import org.apache.ldap.common.message.AbandonRequest; +import org.apache.ldap.common.message.AbandonRequestImpl; +import org.apache.ldap.common.message.AddRequest; +import org.apache.ldap.common.message.AddRequestImpl; +import org.apache.ldap.common.message.BindRequest; +import org.apache.ldap.common.message.BindRequestImpl; +import org.apache.ldap.common.message.CompareRequest; +import org.apache.ldap.common.message.CompareRequestImpl; +import org.apache.ldap.common.message.DeleteRequest; +import org.apache.ldap.common.message.DeleteRequestImpl; +import org.apache.ldap.common.message.ExtendedRequest; +import org.apache.ldap.common.message.ExtendedRequestImpl; +import org.apache.ldap.common.message.ModifyDnRequest; +import org.apache.ldap.common.message.ModifyDnRequestImpl; +import org.apache.ldap.common.message.ModifyRequest; +import org.apache.ldap.common.message.ModifyRequestImpl; +import org.apache.ldap.common.message.SearchRequest; +import org.apache.ldap.common.message.SearchRequestImpl; +import org.apache.ldap.common.message.UnbindRequest; +import org.apache.ldap.common.message.UnbindRequestImpl; +import org.apache.mina.protocol.ProtocolSession; /** @@ -50,42 +65,41 @@ */ public void testDefaultOperation() throws LdapNamingException { - LdapProtocolProvider provider = new LdapProtocolProvider( null ); - assertNotNull( provider.getDecoderFactory() ); - assertNotNull( provider.getEncoderFactory() ); + LdapProtocolProvider provider = new LdapProtocolProvider(); + assertNotNull( provider.getCodecFactory() ); assertTrue( provider.getName() == LdapProtocolProvider.SERVICE_NAME ); Object req = null; req = new AbandonRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof AbandonHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof AbandonHandler ); req = new AddRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof AddHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof AddHandler ); req = new BindRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof BindHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof BindHandler ); req = new CompareRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof CompareHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof CompareHandler ); req = new DeleteRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof DeleteHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof DeleteHandler ); req = new ExtendedRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof ExtendedHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof ExtendedHandler ); req = new ModifyDnRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof ModifyDnHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof ModifyDnHandler ); req = new ModifyRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof ModifyHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof ModifyHandler ); req = new SearchRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof SearchHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof SearchHandler ); req = new UnbindRequestImpl( 0 ); - assertTrue( provider.getHandler( null, req ) instanceof UnbindHandler ); + assertTrue( provider.getCommandHandler( req ) instanceof UnbindHandler ); } @@ -130,155 +144,139 @@ props.setProperty( UnbindRequest.class.getName(), BogusUnbindHandler.class.getName() ); props.setProperty( UnbindRequestImpl.class.getName(), BogusUnbindHandler.class.getName() ); - LdapProtocolProvider provider = new LdapProtocolProvider( props, null ); - assertNotNull( provider.getDecoderFactory() ); - assertNotNull( provider.getEncoderFactory() ); + LdapProtocolProvider provider = new LdapProtocolProvider( props ); + assertNotNull( provider.getCodecFactory() ); assertTrue( provider.getName() == LdapProtocolProvider.SERVICE_NAME ); Object req = null; - RequestHandler handler = null; + CommandHandler handler = null; req = new AbandonRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.NOREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusAbandonHandler ); req = new AddRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusAddHandler ); req = new BindRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusBindHandler ); req = new CompareRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusCompareHandler ); req = new DeleteRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusDeleteHandler ); req = new ExtendedRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusExtendedHandler ); req = new ModifyDnRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusModifyDnHandler ); req = new ModifyRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.SINGLEREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusModifyHandler ); req = new SearchRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.MANYREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusSearchHandler ); req = new UnbindRequestImpl( 0 ); - handler = provider.getHandler( null, req ); - assertEquals( HandlerTypeEnum.NOREPLY, handler.getHandlerType() ); + handler = provider.getCommandHandler( req ); assertTrue( handler instanceof BogusUnbindHandler ); } - public static class BogusAbandonHandler extends AbstractNoReplyHandler + public static class BogusAbandonHandler implements CommandHandler { - public void handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusUnbindHandler extends AbstractNoReplyHandler + public static class BogusUnbindHandler implements CommandHandler { - public void handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusAddHandler extends AbstractSingleReplyHandler + public static class BogusAddHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusBindHandler extends AbstractSingleReplyHandler + public static class BogusBindHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusCompareHandler extends AbstractSingleReplyHandler + public static class BogusCompareHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusDeleteHandler extends AbstractSingleReplyHandler + public static class BogusDeleteHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusExtendedHandler extends AbstractSingleReplyHandler + public static class BogusExtendedHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusModifyDnHandler extends AbstractSingleReplyHandler + public static class BogusModifyDnHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusModifyHandler extends AbstractSingleReplyHandler + public static class BogusModifyHandler implements CommandHandler { - public Object handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); } } - public static class BogusSearchHandler extends AbstractManyReplyHandler + public static class BogusSearchHandler implements CommandHandler { - public BogusSearchHandler() - { - super( true ); - } - - public Iterator handle( ClientKey key, Object request ) + public void handle( ProtocolSession session, Object request ) { throw new NotImplementedException( "handler not implemented!" ); }
