[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