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]