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/22 11:20:49 UTC

svn commit: rev 9662 - incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda

Author: akarasulu
Date: Mon Mar 22 02:20:49 2004
New Revision: 9662

Added:
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/LoggingStageMonitor.java   (contents, props changed)
Removed:
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/StderrLoggingStageMonitor.java
Modified:
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/DefaultStage.java   (contents, props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/DefaultStageConfig.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/EnqueuePredicate.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/Stage.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/StageConfig.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/StageHandler.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/StageMonitor.java   (props changed)
   incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/StageMonitorAdapter.java   (props changed)
Log:
renamed StderrLoggingStageMonitor to LoggingStageMonitor

Modified: incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/DefaultStage.java
==============================================================================
--- incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/DefaultStage.java	(original)
+++ incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/DefaultStage.java	Mon Mar 22 02:20:49 2004
@@ -136,7 +136,7 @@
      * The runnable driving the main thread of this Stage.
      *
      * @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
-     * @author $Author$
+     * @author $Author: akarasulu $
      * @version $Revision$
      */
     class StageDriver implements Runnable
@@ -184,7 +184,7 @@
      * The runnable driving the work of this Stage's handler.
      *
      * @author <a href="mailto:aok123@bellsouth.net">Alex Karasulu</a>
-     * @author $Author$
+     * @author $Author: akarasulu $
      * @version $Revision$
      */
     class ExecutableHandler implements Runnable
@@ -202,12 +202,14 @@
             
             try 
             {
-                if ( config.getHandler() != null )
+                if ( config.getHandler() == null )
+                {
+                    monitor.handlerMissing( DefaultStage.this ) ;
+                }
+                else
                 {
                     config.getHandler().handleEvent( m_event ) ;
                 }
-                
-                monitor.handlerMissing( DefaultStage.this ) ;
             } 
             catch( Throwable t ) 
             {

Added: incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/LoggingStageMonitor.java
==============================================================================
--- (empty file)
+++ incubator/directory/eve/trunk/eve/frontend/common/api/src/java/org/apache/eve/seda/LoggingStageMonitor.java	Mon Mar 22 02:20:49 2004
@@ -0,0 +1,281 @@
+/*
+ *   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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.eve.seda ;
+
+
+import java.util.EventObject ;
+
+import org.apache.commons.lang.Validate ;
+import org.apache.commons.lang.ClassUtils ;
+
+import org.apache.commons.logging.Log ;
+import org.apache.commons.logging.LogFactory ;
+
+
+/**
+ * A do nothing adapter for a stage.  For safty's sake this adapter reports 
+ * exceptions that occur on failure exception notifications to stderr.  This
+ * is just for safty since we do not want to ignore these exceptions.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">
+ * Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class LoggingStageMonitor implements StageMonitor
+{
+    private final Log log ;
+    
+    
+    /**
+     * Presumes the logged class is the DefaultStage.
+     */
+    public LoggingStageMonitor()
+    {
+        log = LogFactory.getLog( DefaultStage.class ) ;
+    }
+    
+    
+    /**
+     * Logs a specific Stage implementing class.
+     * 
+     * @param clazz the class of the stage
+     * @throws IllegalArgumentException if clazz does not implement Stage
+     */
+    public LoggingStageMonitor( Class clazz )
+    {
+        Validate.isTrue( ClassUtils.isAssignable( clazz, Stage.class ),
+                clazz.getName() + " does not implement the Stage interface" ) ;
+        log = LogFactory.getLog( DefaultStage.class ) ;
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#
+     * handlerMissing(org.apache.eve.seda.Stage)
+     */
+    public void handlerMissing( Stage stage )
+    {
+        if ( log.isErrorEnabled() )
+        {
+            log.error( "Stage " + stage.getConfig().getName() 
+                    + " does not have a handler assigned" ) ;
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#started(org.apache.eve.seda.Stage)
+     */
+    public void started( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() + " has started!" ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#stopped(org.apache.eve.seda.Stage)
+     */
+    public void stopped( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() + " has stopped!" ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#startedDriver(
+     * org.apache.eve.seda.Stage)
+     */
+    public void startedDriver( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() 
+                    + "'s driver started execution!" ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#enqueueOccurred(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void enqueueOccurred( Stage stage, EventObject event )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() + " had event " + event 
+                    + " enqueued!" ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#enqueueRejected(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void enqueueRejected( Stage stage, EventObject event )
+    {
+        if ( log.isWarnEnabled() )
+        {
+            log.warn( stage.getConfig().getName() + " had event " + event 
+                    + " enqueue REJECTED!" ) ;
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#lockedQueue(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void lockedQueue( Stage stage, EventObject event )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() 
+                    + "'s queue locked for processing " + event ) ; 
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#lockedQueue(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void lockedQueue( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() 
+                    + "'s queue locked by awoken stage driver thread" ) ; 
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#notified(org.apache.eve.seda.Stage)
+     */
+    public void notified( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() 
+                    + "'s stage driver thread notified out of waiting" ) ; 
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#stopping(org.apache.eve.seda.Stage)
+     */
+    public void stopping( Stage stage )
+    {
+        if ( log.isInfoEnabled() )
+        {
+            log.info( "Graceful shutdown of stage " 
+                    + stage.getConfig().getName() + " was requested" ) ; 
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#stopping(org.apache.eve.seda.Stage,
+     * long)
+     */
+    public void stopping( Stage stage, long millis )
+    {
+        if ( log.isInfoEnabled() )
+        {
+            log.info( "Waiting " + millis + " for graceful shutdown of stage " 
+                    + stage.getConfig().getName() ) ; 
+        }
+    }
+    
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#lockedQueue(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void waiting( Stage stage )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() 
+                    + "'s stage queue is empty, driver thread is waiting" ) ; 
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#eventDequeued(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void eventDequeued( Stage stage, EventObject event )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() + " had event " + event 
+                    + " dequeued!" ) ;
+        }
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#eventHandled(
+     * org.apache.eve.seda.Stage, java.util.EventObject)
+     */
+    public void eventHandled( Stage stage, EventObject event )
+    {
+        if ( log.isDebugEnabled() )
+        {
+            log.debug( stage.getConfig().getName() + " handled " + event ) ; 
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#driverFailed(
+     * org.apache.eve.seda.Stage, java.lang.InterruptedException)
+     */
+    public void driverFailed( Stage stage, InterruptedException fault )
+    {
+        if ( log.isErrorEnabled() )
+        {
+            log.error( stage.getConfig().getName() 
+                    + "'s driver failed", fault ) ; 
+        }
+    }
+
+    
+    /* (non-Javadoc)
+     * @see org.apache.eve.seda.StageMonitor#handlerFailed(
+     * org.apache.eve.seda.Stage, java.util.EventObject, java.lang.Throwable)
+     */
+    public void handlerFailed( Stage stage, EventObject event, Throwable fault )
+    {
+        if ( log.isErrorEnabled() )
+        {
+            log.error( stage.getConfig().getName() 
+                    + "'s handler failed", fault ) ; 
+        }
+    }
+}