[jboss-svn-commits] JBL Code SVN: r20360 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: time and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jun 6 22:21:32 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-06-06 22:21:32 -0400 (Fri, 06 Jun 2008)
New Revision: 20360
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKScheduler.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ClockType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
Log:
JBRULES-1625 Create Scheduler API with JDK implementation
-Removed JDKScheduler, as we should only be using JDKTimerService now.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ClockType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ClockType.java 2008-06-06 16:34:35 UTC (rev 20359)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ClockType.java 2008-06-07 02:21:32 UTC (rev 20360)
@@ -18,7 +18,7 @@
package org.drools;
import org.drools.time.SessionClock;
-import org.drools.time.impl.JDKScheduler;
+import org.drools.time.impl.JDKTimerService;
import org.drools.time.impl.PseudoClockScheduler;
/**
@@ -30,7 +30,7 @@
REAL_TIME {
public SessionClock createInstance() {
- return new JDKScheduler();
+ return new JDKTimerService();
}
},
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java 2008-06-06 16:34:35 UTC (rev 20359)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java 2008-06-07 02:21:32 UTC (rev 20360)
@@ -1,7 +1,8 @@
package org.drools.time;
+import java.io.Externalizable;
import java.util.Date;
-public interface Trigger {
+public interface Trigger extends Externalizable {
public Date getNextFireTime();
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKScheduler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKScheduler.java 2008-06-06 16:34:35 UTC (rev 20359)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKScheduler.java 2008-06-07 02:21:32 UTC (rev 20360)
@@ -1,163 +0,0 @@
-/*
- * Copyright 2008 JBoss Inc
- *
- * 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.drools.time.impl;
-
-import java.util.Date;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.drools.time.Job;
-import org.drools.time.JobContext;
-import org.drools.time.JobHandle;
-import org.drools.time.SessionClock;
-import org.drools.time.TimerService;
-import org.drools.time.Trigger;
-
-/**
- * A default Scheduler implementation that uses the
- * JDK built-in ScheduledThreadPoolExecutor as the
- * scheduler and the system clock as the clock.
- *
- */
-public class JDKScheduler
- implements
- TimerService,
- SessionClock {
-
- private ScheduledThreadPoolExecutor scheduler;
-
- public JDKScheduler() {
- this( 3 );
- }
-
- public JDKScheduler(int size) {
- this.scheduler = new ScheduledThreadPoolExecutor( size );
- }
-
- /**
- * @inheritDoc
- */
- public long getCurrentTime() {
- return System.currentTimeMillis();
- }
-
- public JobHandle scheduleJob(Job job,
- JobContext ctx,
- Trigger trigger) {
- JDKJobHandle jobHandle = new JDKJobHandle();
-
- Date date = trigger.getNextFireTime();
-
- if ( date != null ) {
- JDKCallableJob callableJob = new JDKCallableJob( job,
- ctx,
- trigger,
- jobHandle,
- this.scheduler );
- ScheduledFuture future = schedule( date,
- callableJob,
- this.scheduler );
- jobHandle.setFuture( future );
-
- return jobHandle;
- } else {
- return null;
- }
- }
-
- public boolean removeJob(JobHandle jobHandle) {
- return this.scheduler.remove( (Runnable) ((JDKJobHandle) jobHandle).getFuture() );
- }
-
- private static ScheduledFuture<Void> schedule(Date date,
- JDKCallableJob callableJob,
- ScheduledThreadPoolExecutor scheduler) {
- long then = date.getTime();
- long now = System.currentTimeMillis();
- ScheduledFuture<Void> future = null;
- if ( then >= now ) {
- future = scheduler.schedule( callableJob,
- then - now,
- TimeUnit.MILLISECONDS );
- } else {
- future = scheduler.schedule( callableJob,
- 0,
- TimeUnit.MILLISECONDS );
- }
- return future;
- }
-
- public static class JDKCallableJob
- implements
- Callable<Void> {
- private final Job job;
- private final Trigger trigger;
- private final JobContext ctx;
- private final ScheduledThreadPoolExecutor scheduler;
- private final JDKJobHandle handle;
-
- public JDKCallableJob(Job job,
- JobContext ctx,
- Trigger trigger,
- JDKJobHandle handle,
- ScheduledThreadPoolExecutor scheduler) {
- this.job = job;
- this.ctx = ctx;
- this.trigger = trigger;
- this.handle = handle;
- this.scheduler = scheduler;
- }
-
- public Void call() throws Exception {
- this.job.execute( this.ctx );
-
- // our triggers allow for flexible rescheduling
- Date date = this.trigger.getNextFireTime();
- if ( date != null ) {
- ScheduledFuture<Void> future = schedule( date,
- this,
- this.scheduler );
- this.handle.setFuture( future );
- }
-
- return null;
- }
- }
-
- public class JDKJobHandle
- implements
- JobHandle {
-
- private static final long serialVersionUID = 6607880828232839927L;
-
- private ScheduledFuture<Void> future;
-
- public JDKJobHandle() {
- }
-
- public ScheduledFuture<Void> getFuture() {
- return future;
- }
-
- public void setFuture(ScheduledFuture<Void> future) {
- this.future = future;
- }
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2008-06-06 16:34:35 UTC (rev 20359)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2008-06-07 02:21:32 UTC (rev 20360)
@@ -25,6 +25,7 @@
import org.drools.time.Job;
import org.drools.time.JobContext;
import org.drools.time.JobHandle;
+import org.drools.time.SessionClock;
import org.drools.time.TimerService;
import org.drools.time.Trigger;
@@ -36,7 +37,9 @@
*/
public class JDKTimerService
implements
- TimerService {
+ TimerService,
+ SessionClock {
+
private ScheduledThreadPoolExecutor scheduler;
public JDKTimerService() {
@@ -87,7 +90,7 @@
ScheduledThreadPoolExecutor scheduler) {
long then = date.getTime();
long now = System.currentTimeMillis();
- ScheduledFuture future = null;
+ ScheduledFuture<Void> future = null;
if ( then >= now ) {
future = scheduler.schedule( callableJob,
then - now,
@@ -102,12 +105,12 @@
public static class JDKCallableJob
implements
- Callable {
- private Job job;
- private Trigger trigger;
- private JobContext ctx;
- private ScheduledThreadPoolExecutor scheduler;
- private JDKJobHandle handle;
+ Callable<Void> {
+ private final Job job;
+ private final Trigger trigger;
+ private final JobContext ctx;
+ private final ScheduledThreadPoolExecutor scheduler;
+ private final JDKJobHandle handle;
public JDKCallableJob(Job job,
JobContext ctx,
@@ -121,15 +124,15 @@
this.scheduler = scheduler;
}
- public Object call() throws Exception {
+ public Void call() throws Exception {
this.job.execute( this.ctx );
// our triggers allow for flexible rescheduling
Date date = this.trigger.getNextFireTime();
if ( date != null ) {
- ScheduledFuture future = schedule( date,
- this,
- this.scheduler );
+ ScheduledFuture<Void> future = schedule( date,
+ this,
+ this.scheduler );
this.handle.setFuture( future );
}
@@ -140,17 +143,19 @@
public static class JDKJobHandle
implements
JobHandle {
- private ScheduledFuture future;
+ private static final long serialVersionUID = 6607880828232839927L;
+
+ private ScheduledFuture<Void> future;
+
public JDKJobHandle() {
-
}
- public ScheduledFuture getFuture() {
+ public ScheduledFuture<Void> getFuture() {
return future;
}
- public void setFuture(ScheduledFuture future) {
+ public void setFuture(ScheduledFuture<Void> future) {
this.future = future;
}
More information about the jboss-svn-commits
mailing list