[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