Author: norman
Date: Fri Jan 15 11:01:26 2010
New Revision: 899592

URL: http://svn.apache.org/viewvc?rev=899592&view=rev
Log:
Remove dependency on TimeScheduler (JAMES-954)

Removed:
    
james/server/trunk/core-function/src/main/java/org/apache/james/util/scheduler/
Modified:
    james/server/trunk/avalon-socket-library/pom.xml
    
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SchedulerWatchdogFactory.java
    james/server/trunk/core-function/pom.xml
    james/server/trunk/fetchmail-function/pom.xml
    
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchMail.java
    
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
    james/server/trunk/pom.xml
    james/server/trunk/spring-deployment/pom.xml
    james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml

Modified: james/server/trunk/avalon-socket-library/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/pom.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/avalon-socket-library/pom.xml (original)
+++ james/server/trunk/avalon-socket-library/pom.xml Fri Jan 15 11:01:26 2010
@@ -72,10 +72,7 @@
       <groupId>org.apache.avalon.cornerstone.sockets</groupId>
       <artifactId>cornerstone-sockets-api</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-api</artifactId>
-    </dependency>
+   
     <dependency>
       <groupId>org.apache.excalibur.components</groupId>
       <artifactId>excalibur-pool-api</artifactId>

Modified: 
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SchedulerWatchdogFactory.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SchedulerWatchdogFactory.java?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- 
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SchedulerWatchdogFactory.java
 (original)
+++ 
james/server/trunk/avalon-socket-library/src/main/java/org/apache/james/socket/SchedulerWatchdogFactory.java
 Fri Jan 15 11:01:26 2010
@@ -20,9 +20,10 @@
 
 package org.apache.james.socket;
 
-import org.apache.avalon.cornerstone.services.scheduler.PeriodicTimeTrigger;
-import org.apache.avalon.cornerstone.services.scheduler.Target;
-import org.apache.avalon.cornerstone.services.scheduler.TimeScheduler;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.james.socket.api.Watchdog;
 
 /**
@@ -60,7 +61,7 @@
     /**
      * The thread pool used to generate InaccurateTimeoutWatchdogs
      */
-    private TimeScheduler myTimeScheduler;
+    private ScheduledExecutorService myTimeScheduler;
 
     private long timeout = -1;
 
@@ -72,7 +73,7 @@
      *                         for Watchdogs produced by this factory
      * @param timeout the timeout for Watchdogs produced by this factory
      */
-    public SchedulerWatchdogFactory(TimeScheduler theTimeScheduler, long 
timeout) {
+    public SchedulerWatchdogFactory(ScheduledExecutorService theTimeScheduler, 
long timeout) {
         this.timeout = timeout;
         myTimeScheduler = theTimeScheduler;
     }
@@ -93,7 +94,7 @@
         /**
          * The in-scheduler identifier for this trigger.
          */
-        private String triggerID = null;
+        private ScheduledFuture<?> future = null;
 
         /**
          * The WatchdogTarget that is passed in when this
@@ -107,24 +108,25 @@
          * @param theTarget the target triggered by this Watchdog
          */
         SchedulerWatchdog(WatchdogTarget theTarget) {
-            // TODO: This should be made more robust then just
-            //       using toString()
-            triggerID = this.toString();
             theWatchdogTarget = theTarget;
+            
+            this.theTarget = new Runnable() {
+
+                public void run() {
+                    theWatchdogTarget.execute();
+                }
+            };
         }
 
+        private Runnable theTarget;
+        
         /**
          * Start this Watchdog, causing it to begin monitoring.  The Watchdog 
can
          * be stopped and restarted.
          */
-        public void start() {
-            PeriodicTimeTrigger theTrigger = new 
PeriodicTimeTrigger((int)SchedulerWatchdogFactory.this.timeout, -1);
-            Target theTarget = new Target() {
-                                    public void targetTriggered(String 
targetID) {
-                                        theWatchdogTarget.execute();
-                                    }
-                               };
-            
SchedulerWatchdogFactory.this.myTimeScheduler.addTrigger(triggerID, theTrigger, 
theTarget);
+        public void start() {            
+            future = 
SchedulerWatchdogFactory.this.myTimeScheduler.schedule(theTarget, 
SchedulerWatchdogFactory.this.timeout, TimeUnit.MILLISECONDS);
+
         }
 
         /**
@@ -132,7 +134,8 @@
          * (time to expiration, etc.) to their original values
          */
         public void reset() {
-            
SchedulerWatchdogFactory.this.myTimeScheduler.resetTrigger(triggerID);
+            future.cancel(false);
+            future = 
SchedulerWatchdogFactory.this.myTimeScheduler.schedule(theTarget, 
SchedulerWatchdogFactory.this.timeout, TimeUnit.MILLISECONDS);
         }
 
         /**
@@ -140,7 +143,7 @@
          * can be restarted with a call to startWatchdog.
          */
         public void stop() {
-            
SchedulerWatchdogFactory.this.myTimeScheduler.removeTrigger(triggerID);
+            future.cancel(false);
         }
     }
 

Modified: james/server/trunk/core-function/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-function/pom.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/core-function/pom.xml (original)
+++ james/server/trunk/core-function/pom.xml Fri Jan 15 11:01:26 2010
@@ -83,10 +83,6 @@
       <artifactId>excalibur-datasource</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.avalon.cornerstone.store</groupId>
       <artifactId>cornerstone-store-api</artifactId>
     </dependency>

Modified: james/server/trunk/fetchmail-function/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail-function/pom.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/fetchmail-function/pom.xml (original)
+++ james/server/trunk/fetchmail-function/pom.xml Fri Jan 15 11:01:26 2010
@@ -53,10 +53,6 @@
       <artifactId>james-server-core-library</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
     </dependency> 

Modified: 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchMail.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchMail.java?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchMail.java
 (original)
+++ 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchMail.java
 Fri Jan 15 11:01:26 2010
@@ -35,7 +35,6 @@
 import javax.mail.MessagingException;
 import javax.mail.Session;
 
-import org.apache.avalon.cornerstone.services.scheduler.Target;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.logging.Log;
@@ -74,7 +73,7 @@
  * <p>Creation Date: 24-May-03</p>
  * 
  */
-public class FetchMail implements Target, LogEnabled, Configurable {
+public class FetchMail implements Runnable, LogEnabled, Configurable {
     /**
      * Key fields for DynamicAccounts.
      */
@@ -499,9 +498,8 @@
     /**
      * Method target triggered fetches mail for each configured account.
      * 
-     * @see 
org.apache.avalon.cornerstone.services.scheduler.Target#targetTriggered(String)
      */
-    public void targetTriggered(String arg0)
+    public void run()
     {
         // if we are already fetching then just return
         if (isFetching())

Modified: 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
 (original)
+++ 
james/server/trunk/fetchmail-function/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
 Fri Jan 15 11:01:26 2010
@@ -24,13 +24,14 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
 
-import org.apache.avalon.cornerstone.services.scheduler.PeriodicTimeTrigger;
-import org.apache.avalon.cornerstone.services.scheduler.TimeScheduler;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.logging.Log;
@@ -57,14 +58,14 @@
     /**
      * The scheduler service that is used to trigger fetch tasks.
      */
-    private TimeScheduler scheduler;
+    private ScheduledExecutorService scheduler;
 
     /**
      * Whether this service is enabled.
      */
     private volatile boolean enabled = false;
 
-    private ArrayList<String> theFetchTaskNames = new ArrayList<String>();
+    private List<ScheduledFuture<?>> schedulers = new 
ArrayList<ScheduledFuture<?>>();
 
 
     private DNSService dns;
@@ -79,7 +80,7 @@
     private Log logger;
 
     @Resource(name="scheduler")
-    public void setTimeScheduler(TimeScheduler scheduler) {
+    public void setScheduledExecutorService(ScheduledExecutorService 
scheduler) {
         this.scheduler = scheduler;
     }
 
@@ -123,8 +124,7 @@
             {
                 // read configuration
                 HierarchicalConfiguration fetchConf = fetchConfs.get(i);
-                String fetchTaskName = fetchConf.getString("[...@name]");
-                Integer interval = new Integer(fetchConf.getInt("interval"));
+                Long interval = fetchConf.getLong("interval");
 
                 FetchMail fetcher = new FetchMail();
                 fetcher.setLog(logger);
@@ -132,15 +132,8 @@
                 fetcher.setDNSService(dns);
                 fetcher.setMailServer(mailserver);
                 fetcher.setUsersRepository(urepos);
-                // avalon specific initialization
-               // 
ContainerUtil.enableLogging(fetcher,getLogger().getChildLogger(fetchTaskName));
-
-
                 // initialize scheduling
-                PeriodicTimeTrigger fetchTrigger =
-                        new PeriodicTimeTrigger(0, interval.intValue());
-                scheduler.addTrigger(fetchTaskName, fetchTrigger, fetcher);
-                theFetchTaskNames.add(fetchTaskName);
+                schedulers.add(scheduler.scheduleWithFixedDelay(fetcher, 0, 
interval, TimeUnit.MILLISECONDS));
             }
 
             if (logger.isInfoEnabled()) logger.info("FetchMail Started");
@@ -159,10 +152,10 @@
         if (enabled)
         {
             logger.info("FetchMail dispose...");
-            Iterator<String> nameIterator = theFetchTaskNames.iterator();
-            while (nameIterator.hasNext())
+            Iterator<ScheduledFuture<?>> schedulersIt = schedulers.iterator();
+            while (schedulersIt.hasNext())
             {
-                scheduler.removeTrigger(nameIterator.next());
+                schedulersIt.next().cancel(false);
             }
             logger.info("FetchMail ...dispose end");
         }

Modified: james/server/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Fri Jan 15 11:01:26 2010
@@ -891,17 +891,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-api</artifactId>
-      <version>2.2.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-impl</artifactId>
-      <version>2.2.2</version>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
       <groupId>org.apache.avalon.cornerstone.store</groupId>
       <artifactId>cornerstone-store-api</artifactId>
       <version>2.2.2</version>

Modified: james/server/trunk/spring-deployment/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/pom.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/pom.xml (original)
+++ james/server/trunk/spring-deployment/pom.xml Fri Jan 15 11:01:26 2010
@@ -395,11 +395,7 @@
       <artifactId>cornerstone-sockets-impl</artifactId>
       <scope>runtime</scope>
     </dependency> 
-    <dependency>
-      <groupId>org.apache.avalon.cornerstone.scheduler</groupId>
-      <artifactId>cornerstone-scheduler-impl</artifactId>
-      <scope>runtime</scope>
-    </dependency> 
+    
        <dependency>
       <groupId>org.apache.derby</groupId>
       <artifactId>derby</artifactId>

Modified: 
james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml?rev=899592&r1=899591&r2=899592&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml 
(original)
+++ james/server/trunk/spring-deployment/src/main/config/james/spring-beans.xml 
Fri Jan 15 11:01:26 2010
@@ -380,8 +380,10 @@
        <bean id="sockets" 
class="org.apache.avalon.cornerstone.blocks.sockets.DefaultSocketManager" />
 
        <!-- The Time Scheduler block -->
-       <bean id="scheduler" 
class="org.apache.avalon.cornerstone.blocks.scheduler.DefaultTimeScheduler" 
destroy-method="dispose" />
-
+       <bean id="scheduler" class="java.util.concurrent.Executors" 
factory-method="newScheduledThreadPool">
+       <constructor-arg value="20"/>
+    </bean>
+      
        <!-- The DataSourceSelector block -->
        <bean id="database-connections" 
class="org.apache.avalon.cornerstone.blocks.datasources.DefaultDataSourceSelector"
 destroy-method="dispose" />
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to