Author: giacomo
Date: Sat Nov  6 15:12:39 2004
New Revision: 56786

Modified:
   
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
   
cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java
Log:
added removal of Runnables

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
       (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/DefaultRunnableManager.java
       Sat Nov  6 15:12:39 2004
@@ -392,6 +392,33 @@
     }
 
     /**
+     * Remove a <code>Runnable</code> from the command stack
+     *
+     * @param command The <code>Runnable</code> to be removed
+     */
+    public void remove( Runnable command )
+    {
+        synchronized( m_commandStack )
+        {
+            for( final Iterator i = m_commandStack.iterator(  ); i.hasNext(  
); )
+            {
+                final ExecutionInfo info = (ExecutionInfo)i.next(  );
+
+                if( info.m_command == command )
+                {
+                    i.remove(  );
+                    m_commandStack.notifyAll(  );
+
+                    return;
+                }
+            }
+        }
+
+        getLogger(  ).warn( "Could not find command " + command +
+                            " for removal" );
+    }
+
+    /**
      * The heart of the command manager
      */
     public void run(  )
@@ -806,7 +833,6 @@
                 if( m_nextRun > 0 )
                 {
                     m_commandStack.add( this );
-                    m_commandStack.notifyAll(  );
                 }
             }
 

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java  
    (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/components/thread/RunnableManager.java  
    Sat Nov  6 15:12:39 2004
@@ -152,4 +152,11 @@
                   Runnable command,
                   long delay,
                   long interval );
+
+    /**
+     * Remove a [EMAIL PROTECTED] Runnable} from the execution stack
+     *
+     * @param command The command to be removed
+     */
+    void remove( Runnable command );
 }

Reply via email to