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 02:11:03 UTC

svn commit: rev 9596 - incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl

Author: akarasulu
Date: Thu Mar 18 17:11:02 2004
New Revision: 9596

Removed:
   incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/HandlerTypeEnum.java
   incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/RequestHandler.java
Modified:
   incubator/directory/eve/trunk/eve/frontend/processor/pojo-impl/src/java/org/apache/eve/processor/impl/DefaultRequestProcessor.java
Log:
playing around with old interfaces and ideas

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 17:11:02 2004
@@ -23,12 +23,20 @@
 import org.apache.eve.event.EventRouter ;
 import org.apache.eve.event.RequestEvent ;
 import org.apache.eve.event.RequestSubscriber ;
+import org.apache.eve.listener.ClientKey;
+import org.apache.eve.processor.HandlerRegistry;
+import org.apache.eve.processor.HandlerTypeEnum;
+import org.apache.eve.processor.NoReplyHandler;
+import org.apache.eve.processor.RequestHandler;
 import org.apache.eve.processor.RequestProcessor ;
 import org.apache.eve.processor.RequestProcessorMonitor;
 import org.apache.eve.processor.RequestProcessorMonitorAdapter;
+import org.apache.eve.processor.SingleReplyHandler;
 import org.apache.eve.seda.DefaultStage ;
 import org.apache.eve.seda.StageConfig ;
+import org.apache.eve.seda.StageHandler;
 import org.apache.ldap.common.message.Request;
+import org.apache.ldap.common.message.SingleReplyRequest;
 
 
 /**
@@ -41,14 +49,24 @@
 public class DefaultRequestProcessor extends DefaultStage
     implements RequestProcessor, RequestSubscriber
 {
+    private final HandlerRegistry hooks ;
     private final EventRouter router ;
     private RequestProcessorMonitor monitor = null ;
     
     
-    public DefaultRequestProcessor( EventRouter router, StageConfig config )
+    /**
+     * Creates a default RequestProcessor.
+     * 
+     * @param router the event router we subscribe and publish to
+     * @param config the configuration for this stage 
+     * @param hooks the handler registry to use for setting the request hooks
+     */
+    public DefaultRequestProcessor( EventRouter router, StageConfig config, 
+                                    HandlerRegistry hooks )
     {
         super( config ) ;
         
+        this.hooks = hooks ;
         this.router = router ;
         this.router.subscribe( RequestEvent.class, this ) ;
         this.monitor = new RequestProcessorMonitorAdapter() ;
@@ -61,9 +79,8 @@
      */
     public void inform( RequestEvent event )
     {
-        Request request = event.getRequest() ;
-        
-        
+        // @todo do something with the monitor here
+        enqueue( event ) ;
     }
     
     
@@ -88,5 +105,61 @@
      */
     public void dummy()
     {
+    }
+    
+    
+    class ProcessorStageHandler implements StageHandler
+    {
+        /**
+         * Event handler method for processing RequestEvents.
+         *
+         * @param event the RequestEvent to process.
+         */
+        public void handleEvent( EventObject event )
+        {
+            Request l_request = null ;
+            ClientKey l_clientKey = null ;
+
+            // Throw protocol exception if the event is not a request event.
+            if( ! ( event instanceof RequestEvent ) )
+            {
+                throw new ProtocolException( "Unrecognized event: " + event ) ;
+            }
+
+            // 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() )
+            {
+            case( HandlerTypeEnum.NOREPLY_VAL ):
+                NoReplyHandler l_noreply = ( NoReplyHandler ) l_handler ;
+                l_noreply.handle( l_request ) ;
+                break ;
+            case( HandlerTypeEnum.SINGLEREPLY_VAL ):
+                SingleReplyHandler l_single = ( SingleReplyHandler ) l_handler ;
+                doSingleReply( l_single, ( SingleReplyRequest ) l_request ) ;
+                break ;
+            case( HandlerTypeEnum.SEARCH_VAL ):
+                SearchHandler l_search = ( SearchHandler ) l_handler ;
+                l_search.handle( ( SearchRequest ) l_request ) ;
+                break ;
+            default:
+                throw new ProtocolException( "Unrecognized handler type: "
+                    + l_handler.getRequestType().getName() ) ;
+            }
+
+        }
     }
 }