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 2004/03/19 06:19:57 UTC
svn commit: rev 9604 - in incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor: . impl
Author: akarasulu
Date: Thu Mar 18 21:19:53 2004
New Revision: 9604
Added:
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/AbandonHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/AbandonHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/AddHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/AddHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/BindHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/BindHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/CompareHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/CompareHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/DeleteHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/DeleteHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/ExtendedHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/ExtendedHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/ModifyDnHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/ModifyDnHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/ModifyHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/ModifyHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/SearchHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/SearchHandler.java
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/UnbindHandler.java
- copied unchanged from rev 9602, incubator/directory/ldap/trunk/server/src/java/org/apache/ldap/server/protocol/UnbindHandler.java
Modified:
incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/DefaultRequestProcessor.java
Log:
Adding initially but need to move and groom them
Modified: incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/DefaultRequestProcessor.java
==============================================================================
--- incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/DefaultRequestProcessor.java (original)
+++ incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/DefaultRequestProcessor.java Thu Mar 18 21:19:53 2004
@@ -19,13 +19,16 @@
import java.util.EventObject ;
+import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.eve.event.AbstractSubscriber ;
import org.apache.eve.event.EventRouter ;
import org.apache.eve.event.RequestEvent ;
import org.apache.eve.event.RequestSubscriber ;
+import org.apache.eve.event.ResponseEvent;
import org.apache.eve.listener.ClientKey;
import org.apache.eve.processor.HandlerRegistry;
import org.apache.eve.processor.HandlerTypeEnum;
+import org.apache.eve.processor.ManyReplyHandler;
import org.apache.eve.processor.NoReplyHandler;
import org.apache.eve.processor.RequestHandler;
import org.apache.eve.processor.RequestProcessor ;
@@ -35,7 +38,13 @@
import org.apache.eve.seda.DefaultStage ;
import org.apache.eve.seda.StageConfig ;
import org.apache.eve.seda.StageHandler;
+import org.apache.ldap.common.message.LdapResult;
+import org.apache.ldap.common.message.LdapResultImpl;
+import org.apache.ldap.common.message.ManyReplyRequest;
+import org.apache.ldap.common.message.MessageTypeEnum;
import org.apache.ldap.common.message.Request;
+import org.apache.ldap.common.message.ResultCodeEnum;
+import org.apache.ldap.common.message.ResultResponse;
import org.apache.ldap.common.message.SingleReplyRequest;
@@ -100,14 +109,6 @@
}
- /* (non-Javadoc)
- * @see org.apache.eve.processor.RequestProcessor#dummy()
- */
- public void dummy()
- {
- }
-
-
class ProcessorStageHandler implements StageHandler
{
/**
@@ -115,51 +116,111 @@
*
* @param event the RequestEvent to process.
*/
- public void handleEvent( EventObject event )
+ public void handleEvent( EventObject unspecific )
{
- Request l_request = null ;
- ClientKey l_clientKey = null ;
+ RequestEvent event = ( RequestEvent ) unspecific ;
+ Request request = event.getRequest() ;
+ ClientKey key = event.getClientKey() ;
+ RequestHandler handler = hooks.lookup( request.getType() ) ;
- // Throw protocol exception if the event is not a request event.
- if( ! ( event instanceof RequestEvent ) )
+ if( handler == null )
{
- throw new ProtocolException( "Unrecognized event: " + event ) ;
+ throw new IllegalArgumentException(
+ "Unknown request message type: "
+ + request.getType().getName() ) ;
}
- // Extract the ClientKey and Request parameters from the event
- l_request = ( ( RequestEvent ) event ).getRequest() ;
- l_clientKey = ( ClientKey )
- ( ( RequestEvent ) event ).getSource() ;
-
- // Get the handler if we have one defined.
- RequestHandler l_handler = ( RequestHandler )
- m_handlers.get( l_request.getType() ) ;
- if( l_handler == null )
- {
- throw new ProtocolException( "Unknown request message type: "
- + l_request.getType().getName() ) ;
- }
-
- // Based on the handler type start request handling.
- switch( l_handler.getHandlerType().getValue() )
+ switch( handler.getHandlerType().getValue() )
{
case( HandlerTypeEnum.NOREPLY_VAL ):
- NoReplyHandler l_noreply = ( NoReplyHandler ) l_handler ;
- l_noreply.handle( l_request ) ;
+ NoReplyHandler noreply = ( NoReplyHandler ) handler ;
+ noreply.handle( request ) ;
break ;
case( HandlerTypeEnum.SINGLEREPLY_VAL ):
- SingleReplyHandler l_single = ( SingleReplyHandler ) l_handler ;
- doSingleReply( l_single, ( SingleReplyRequest ) l_request ) ;
+ SingleReplyHandler single = ( SingleReplyHandler ) handler ;
+ reply( single, ( SingleReplyRequest ) request, key ) ;
break ;
- case( HandlerTypeEnum.SEARCH_VAL ):
- SearchHandler l_search = ( SearchHandler ) l_handler ;
- l_search.handle( ( SearchRequest ) l_request ) ;
+ case( HandlerTypeEnum.MANYREPLY_VAL ):
+ ManyReplyHandler many = ( ManyReplyHandler ) handler ;
+ reply( many, ( ManyReplyRequest ) request, key ) ;
break ;
default:
- throw new ProtocolException( "Unrecognized handler type: "
- + l_handler.getRequestType().getName() ) ;
+ throw new IllegalArgumentException( "Unrecognized type: "
+ + handler.getRequestType().getName() ) ;
+ }
+ }
+ }
+
+
+ /**
+ * Handles the generation and return of multiple responses.
+ *
+ * @param handler the handler that generates the responses
+ * @param request the request responded to
+ */
+ private void reply( ManyReplyHandler handler, ManyReplyRequest request,
+ ClientKey key )
+ {
+ }
+
+
+ /**
+ * Handles the generation and return of a single response.
+ *
+ * @param handler the handler that generates the single response
+ * @param request the request responded to
+ */
+ private void reply( SingleReplyHandler handler, SingleReplyRequest request,
+ ClientKey key )
+ {
+ int id = request.getMessageId() ;
+ LdapResult result = null ;
+ ResultResponse response = null ;
+
+ try
+ {
+ response = handler.handle( request ) ;
+ }
+
+ // If the individual handlers do not do a global catch and report this
+ // will sheild the server from complete failure on a request reporting
+ // at a minimum the stack trace that cause the request to fail.
+ catch( Throwable t )
+ {
+ switch( request.getResponseType().getValue() )
+ {
+ case( MessageTypeEnum.ADDRESPONSE_VAL ):
+ response = new AddResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.BINDRESPONSE_VAL ):
+ response = new BindResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.COMPARERESPONSE_VAL ):
+ response = new CompareResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.DELRESPONSE_VAL ):
+ response = new DeleteResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.EXTENDEDRESP_VAL ):
+ response = new ExtendedResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.MODDNRESPONSE_VAL ):
+ response = new ModifyDnResponseImpl( id ) ;
+ break ;
+ case( MessageTypeEnum.MODIFYRESPONSE_VAL ):
+ response = new ModifyResponseImpl( id ) ;
+ break ;
}
+ monitor.failedOnSingleReply( key, request, t ) ;
+
+ result = new LdapResultImpl( response ) ;
+ result.setMatchedDn( "" ) ;
+ result.setErrorMessage( "STUBBED OUT FOR NOW!" ) ;
+ result.setResultCode( ResultCodeEnum.OPERATIONSERROR ) ;
+ response.setLdapResult( result ) ;
}
+
+ router.publish( new ResponseEvent( this, key, response ) ) ;
}
}