[jboss-svn-commits] JBL Code SVN: r20215 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/common and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 29 11:07:38 EDT 2008


Author: tirelli
Date: 2008-05-29 11:07:38 -0400 (Thu, 29 May 2008)
New Revision: 20215

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimeServices.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Scheduler.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/timer/Timer.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Job.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobHandle.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SchedulerFactory.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/jdk/JDKScheduler.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/scheduler/impl/jdk/JDKSchedulerTest.java
Log:
JBRULES-1625: refactoring scheduler API to unify it with CEP clock API

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-05-29 15:04:57 UTC (rev 20214)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -23,7 +23,6 @@
 import java.io.InputStream;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.io.OutputStream;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -38,20 +37,11 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseConfiguration;
 import org.drools.StatefulSession;
-import org.drools.concurrent.CommandExecutor;
-import org.drools.concurrent.ExecutorService;
 import org.drools.event.RuleBaseEventListener;
 import org.drools.event.RuleBaseEventSupport;
 import org.drools.marshalling.Marshaller;
-import org.drools.marshalling.OutputMarshaller;
-import org.drools.marshalling.PlaceholderResolverStrategyFactory;
-import org.drools.marshalling.RuleBaseNodes;
-import org.drools.marshalling.SerializablePlaceholderResolverStrategy;
-import org.drools.marshalling.MarshallerReaderContext;
-import org.drools.marshalling.MarshallerWriteContext;
 import org.drools.objenesis.Objenesis;
 import org.drools.process.core.Process;
-import org.drools.reteoo.ReteooStatefulSession;
 import org.drools.rule.CompositePackageClassLoader;
 import org.drools.rule.DialectDatas;
 import org.drools.rule.FactType;
@@ -62,7 +52,6 @@
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
 import org.drools.rule.TypeDeclaration;
-import org.drools.spi.ExecutorServiceFactory;
 import org.drools.spi.FactHandleFactory;
 import org.drools.util.ObjectHashSet;
 import org.drools.util.ObjenesisFactory;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/timer/Timer.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/timer/Timer.java	2008-05-29 15:04:57 UTC (rev 20214)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/timer/Timer.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,6 +1,6 @@
 package org.drools.process.core.timer;
 
-import org.drools.scheduler.JobHandle;
+import org.drools.time.JobHandle;
 
 public class Timer {
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java	2008-05-29 15:04:57 UTC (rev 20214)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,25 +1,22 @@
 package org.drools.process.instance.timer;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TimerTask;
 
 import org.drools.WorkingMemory;
 import org.drools.process.core.timer.Timer;
 import org.drools.process.instance.ProcessInstance;
-import org.drools.scheduler.Job;
-import org.drools.scheduler.JobContext;
-import org.drools.scheduler.JobHandle;
-import org.drools.scheduler.Scheduler;
-import org.drools.scheduler.SchedulerFactory;
-import org.drools.scheduler.Trigger;
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.TimeServices;
+import org.drools.time.SchedulerFactory;
+import org.drools.time.Trigger;
 
 public class TimerManager {
     private long                        timerId    = 0;
 
     private WorkingMemory               workingMemory;
-    private Scheduler                   scheduler;
+    private TimeServices                   scheduler;
 
     public TimerManager(WorkingMemory workingMemory) {
         this.workingMemory = workingMemory;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java	2008-05-29 15:04:57 UTC (rev 20214)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -16,16 +16,13 @@
  * limitations under the License.
  */
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
 
-import org.drools.FactException;
-import org.drools.FactHandle;
 import org.drools.QueryResults;
 import org.drools.base.DroolsQuery;
 import org.drools.common.AbstractWorkingMemory;
@@ -33,19 +30,14 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalRuleBase;
 import org.drools.common.InternalWorkingMemory;
-import org.drools.common.ObjectTypeConfigurationRegistry;
 import org.drools.common.PropagationContextImpl;
 import org.drools.common.WorkingMemoryAction;
-import org.drools.event.RuleBaseEventListener;
-import org.drools.marshalling.InputMarshaller;
-import org.drools.marshalling.OutputMarshaller;
 import org.drools.marshalling.MarshallerReaderContext;
 import org.drools.marshalling.MarshallerWriteContext;
 import org.drools.rule.EntryPoint;
 import org.drools.rule.Package;
 import org.drools.rule.Query;
 import org.drools.rule.Rule;
-import org.drools.spi.Activation;
 import org.drools.spi.FactHandleFactory;
 import org.drools.spi.PropagationContext;
 

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time (from rev 20208, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler)

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Job.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/Job.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Job.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,4 +1,4 @@
-package org.drools.scheduler;
+package org.drools.time;
 
 public interface Job {
 	public void execute(JobContext ctx);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/JobContext.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobContext.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,4 +1,4 @@
-package org.drools.scheduler;
+package org.drools.time;
 
 public interface JobContext {    
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/JobHandle.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/JobHandle.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,4 +1,4 @@
-package org.drools.scheduler;
+package org.drools.time;
 
 public interface JobHandle {
 

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Scheduler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/Scheduler.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Scheduler.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,7 +0,0 @@
-package org.drools.scheduler;
-
-public interface Scheduler {
-	public JobHandle scheduleJob(Job job, JobContext ctx, Trigger trigger);
-	
-	public boolean removeJob(JobHandle jobHandle);
-}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SchedulerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/SchedulerFactory.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/SchedulerFactory.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,11 +1,11 @@
-package org.drools.scheduler;
+package org.drools.time;
 
-import org.drools.scheduler.impl.jdk.JDKScheduler;
+import org.drools.time.impl.jdk.JDKScheduler;
 
 public class SchedulerFactory {
-    private static Scheduler scheduler = new JDKScheduler();
+    private static TimeServices scheduler = new JDKScheduler();
     
-    public static Scheduler getScheduler() {
+    public static TimeServices getScheduler() {
         return scheduler;
     }
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimeServices.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimeServices.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/TimeServices.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2008 Red Hat
+ * 
+ * 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;
+
+/**
+ * An interface for all schedulers used in a drools session.
+ * 
+ */
+public interface TimeServices {
+    
+    /**
+     * Returns the current time from the scheduler clock
+     * 
+     * @return the current timestamp
+     * 
+     */
+    public long getCurrentTime();
+    
+    /**
+     * Schedule a job for later execution
+     * 
+     * @param job
+     * @param ctx
+     * @param trigger
+     * 
+     * @return
+     */
+	public JobHandle scheduleJob(Job job, JobContext ctx, Trigger trigger);
+	
+	/**
+	 * Remove the job identified by the given job handle from the 
+	 * scheduled queue
+	 * 
+	 * @param jobHandle the job identity handle
+	 * 
+	 * @return
+	 */
+	public boolean removeJob(JobHandle jobHandle);
+	
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/Trigger.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/Trigger.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,4 +1,4 @@
-package org.drools.scheduler;
+package org.drools.time;
 
 import java.util.Date;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/jdk/JDKScheduler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/scheduler/impl/jdk/JDKScheduler.java	2008-05-29 12:07:04 UTC (rev 20208)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/jdk/JDKScheduler.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -1,4 +1,20 @@
-package org.drools.scheduler.impl.jdk;
+/*
+ * 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.jdk;
 
 import java.util.Date;
 import java.util.concurrent.Callable;
@@ -6,15 +22,21 @@
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
-import org.drools.scheduler.Job;
-import org.drools.scheduler.JobContext;
-import org.drools.scheduler.JobHandle;
-import org.drools.scheduler.Scheduler;
-import org.drools.scheduler.Trigger;
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.TimeServices;
+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
-    Scheduler {
+    TimeServices {
     private ScheduledThreadPoolExecutor scheduler;
 
     public JDKScheduler() {
@@ -25,6 +47,13 @@
         this.scheduler = new ScheduledThreadPoolExecutor( size );
     }
 
+    /**
+     * @inheritDoc
+     */
+    public long getCurrentTime() {
+        return System.currentTimeMillis();
+    }
+
     public JobHandle scheduleJob(Job job,
                                  JobContext ctx,
                                  Trigger trigger) {
@@ -53,6 +82,24 @@
         return this.scheduler.remove( (Runnable) ((JDKJobHandle) jobHandle).getFuture() );
     }
 
+    private static ScheduledFuture schedule(Date date,
+                                            JDKCallableJob callableJob,
+                                            ScheduledThreadPoolExecutor scheduler) {
+        long then = date.getTime();
+        long now = System.currentTimeMillis();
+        ScheduledFuture 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 {
@@ -109,22 +156,4 @@
 
     }
 
-    private static ScheduledFuture schedule(Date date,
-                                            JDKCallableJob callableJob,
-                                            ScheduledThreadPoolExecutor scheduler) {
-        long then = date.getTime();
-        long now = System.currentTimeMillis();
-        ScheduledFuture future = null;
-        if ( then >= now ) {
-            future = scheduler.schedule( callableJob,
-                                         then - now,
-                                         TimeUnit.MILLISECONDS );
-        } else {
-            future = scheduler.schedule( callableJob,
-                                         0,
-                                         TimeUnit.MILLISECONDS );
-        }
-        return future;
-    }
-
 }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/scheduler/impl/jdk/JDKSchedulerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/scheduler/impl/jdk/JDKSchedulerTest.java	2008-05-29 15:04:57 UTC (rev 20214)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/scheduler/impl/jdk/JDKSchedulerTest.java	2008-05-29 15:07:38 UTC (rev 20215)
@@ -5,19 +5,19 @@
 import java.util.List;
 import java.util.Stack;
 
-import org.drools.scheduler.Job;
-import org.drools.scheduler.JobContext;
-import org.drools.scheduler.JobHandle;
-import org.drools.scheduler.Scheduler;
-import org.drools.scheduler.SchedulerFactory;
-import org.drools.scheduler.Trigger;
-
 import junit.framework.TestCase;
 
+import org.drools.time.Job;
+import org.drools.time.JobContext;
+import org.drools.time.JobHandle;
+import org.drools.time.TimeServices;
+import org.drools.time.SchedulerFactory;
+import org.drools.time.Trigger;
+
 public class JDKSchedulerTest extends TestCase {
     
     public void test1() throws Exception {
-        Scheduler scheduler = SchedulerFactory.getScheduler(); 
+        TimeServices scheduler = SchedulerFactory.getScheduler(); 
         Trigger trigger = new DelayedTrigger( 100 );
         HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", scheduler);
         scheduler.scheduleJob( new HelloWorldJob(), ctx,  trigger);        
@@ -26,7 +26,7 @@
     }    
     
     public void test2() throws Exception {
-        Scheduler scheduler = SchedulerFactory.getScheduler(); 
+        TimeServices scheduler = SchedulerFactory.getScheduler(); 
         Trigger trigger = new DelayedTrigger(  new long[] { 100, 100, 100} );
         HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", scheduler);
         scheduler.scheduleJob( new HelloWorldJob(), ctx,  trigger);        
@@ -37,7 +37,7 @@
         
     
 	public void test3() throws Exception {
-        Scheduler scheduler = SchedulerFactory.getScheduler();
+        TimeServices scheduler = SchedulerFactory.getScheduler();
 		Trigger trigger = new DelayedTrigger( new long[] { 100, 100, 100, 100, 100 } );
 		HelloWorldJobContext ctx = new HelloWorldJobContext( "hello world", scheduler);
 		ctx.setLimit( 3 );
@@ -60,7 +60,7 @@
 	
 	public static class HelloWorldJobContext implements JobContext {
 	    private String message;
-	    private  Scheduler scheduler;
+	    private  TimeServices scheduler;
 	    private JobHandle jobHandle;
 	    
 	    private List list;
@@ -68,7 +68,7 @@
 	    private int counter;	    
 	    private int limit;
 	    
-	    public HelloWorldJobContext(String message, Scheduler scheduler) {
+	    public HelloWorldJobContext(String message, TimeServices scheduler) {
 	        this.message = message;
 	        this.scheduler = scheduler;
 	        this.list = new ArrayList();




More information about the jboss-svn-commits mailing list