[jboss-svn-commits] JBL Code SVN: r34349 - in labs/jbossrules/branches/trunk_20100722_esteban_diega: drools-core/src/main/java/org/drools/time and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 29 18:09:27 EDT 2010
Author: lucazamador
Date: 2010-07-29 18:09:27 -0400 (Thu, 29 Jul 2010)
New Revision: 34349
Modified:
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/JobHandle.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/TimerService.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/DefaultJobHandle.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/ProcessJobHandle.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/PseudoClockScheduler.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPACheckerProcessTimerJobService.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPAProcessTimerPersistenceStrategy.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/ProcessTimerJob.java
labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/test/java/org/drools/persistence/processinstance/timer/JPAPersistentTimerServiceTest.java
Log:
cleaning API
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/process/instance/timer/TimerManager.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -97,7 +97,7 @@
public void cancelTimer(long timerId) {
TimerInstance timer = timers.remove( timerId );
if ( timer != null ) {
- timerService.removeJob( timer.getJobHandle() );
+ timerService.cancelJob( timer.getJobHandle() );
}
}
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/JobHandle.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/JobHandle.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/JobHandle.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -23,4 +23,5 @@
*/
public interface JobHandle {
+ public boolean isLongTermJob();
}
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/TimerService.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/TimerService.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/TimerService.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -16,6 +16,8 @@
*/
package org.drools.time;
+import javax.swing.plaf.SliderUI;
+
/**
* An interface for all timer service implementations used in a drools session.
*
@@ -43,7 +45,9 @@
/**
* Remove the job identified by the given job handle from the
- * scheduled queue
+ * scheduled queue.
+ * This apply to non long term jobs. To remove a long term job
+ * you should see {@link TimerService#cancelJob(JobHandle)}
*
* @param jobHandle the job identity handle
*
@@ -52,6 +56,15 @@
public boolean removeJob(JobHandle jobHandle);
/**
+ * Cancel the job identified by the given job handle.
+ *
+ *
+ * @param jobHandle the job identity handle
+ * @return
+ */
+ public boolean cancelJob(JobHandle jobHandle);
+
+ /**
* Shuts the service down
*/
public void shutdown();
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/DefaultJobHandle.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/DefaultJobHandle.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/DefaultJobHandle.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -65,4 +65,9 @@
} else if ( !getJob().equals( other.getJob() ) ) return false;
return true;
}
+
+ public boolean isLongTermJob() {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/JDKTimerService.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -84,8 +84,7 @@
&& trigger instanceof IntervalTrigger){
ProcessJobContext processContext = (ProcessJobContext) ctx;
IntervalTrigger intervalTrigger = (IntervalTrigger) trigger;
- ProcessJobHandle jobHandle = new ProcessJobHandle();
- jobHandle.setProcessId(processContext.getProcessInstanceId());
+ ProcessJobHandle jobHandle = new ProcessJobHandle(true, processContext.getProcessInstanceId());
getProcessTimerPersistenceStrategy().save(processContext, intervalTrigger);
return jobHandle;
}else {
@@ -108,10 +107,20 @@
}
public boolean removeJob(JobHandle jobHandle) {
- if(null != getProcessTimerPersistenceStrategy() && jobHandle instanceof ProcessJobHandle)
- return getProcessTimerPersistenceStrategy().remove((ProcessJobHandle)jobHandle);
+ if(getProcessTimerPersistenceStrategy() != null && jobHandle.isLongTermJob())
+ return true;
return this.scheduler.remove( (Runnable) ((JDKJobHandle) jobHandle).getFuture() );
}
+
+ public boolean cancelJob(JobHandle jobHandle) {
+ if(getProcessTimerPersistenceStrategy() != null && jobHandle.isLongTermJob()) {
+ if(!(jobHandle instanceof ProcessJobHandle))
+ throw new IllegalArgumentException("Not yet implemented for handles of type " + jobHandle.getClass().getSimpleName());
+ ProcessJobHandle processHandle = (ProcessJobHandle)jobHandle;
+ return getProcessTimerPersistenceStrategy().remove(processHandle);
+ }
+ return removeJob(jobHandle);
+ }
private static ScheduledFuture schedule(Date date,
JDKCallableJob callableJob,
@@ -187,6 +196,10 @@
this.future = future;
}
+ public boolean isLongTermJob() {
+ return false;
+ }
+
}
public long getTimeToNextJob() {
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/ProcessJobHandle.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/ProcessJobHandle.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/ProcessJobHandle.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -5,7 +5,13 @@
public class ProcessJobHandle implements JobHandle {
private long processId;
+ private boolean longTermJob;
+ public ProcessJobHandle(boolean longTermJob, long processId){
+ this.processId = processId;
+ this.longTermJob = longTermJob;
+ }
+
public long getProcessId() {
return processId;
}
@@ -14,4 +20,12 @@
this.processId = processId;
}
+ public boolean isLongTermJob() {
+ return this.longTermJob;
+ }
+
+ public void setLongTermJob(boolean longTermJob) {
+ this.longTermJob = longTermJob;
+ }
+
}
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/PseudoClockScheduler.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/PseudoClockScheduler.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-core/src/main/java/org/drools/time/impl/PseudoClockScheduler.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -256,4 +256,8 @@
}
+ public boolean cancelJob(JobHandle jobHandle) {
+ return removeJob(jobHandle);
+ }
+
}
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPACheckerProcessTimerJobService.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPACheckerProcessTimerJobService.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPACheckerProcessTimerJobService.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -52,13 +52,11 @@
private EntityManagerFactory entityManagerFactory;
private KnowledgeBase kbase;
- private int sessionId;
private AtomicBoolean running = new AtomicBoolean(false);
private long poolingTime = DEFAULT_POOLING_TIME;
- public JPACheckerProcessTimerJobService(int sessionId, KnowledgeBase kbase) {
+ public JPACheckerProcessTimerJobService(KnowledgeBase kbase) {
this.entityManagerFactory = Persistence.createEntityManagerFactory("org.drools.persistence.jpa");
- this.sessionId = sessionId;
this.kbase = kbase;
}
@@ -81,7 +79,7 @@
environment.set(EnvironmentName.ENTITY_MANAGER_FACTORY, Persistence.createEntityManagerFactory("org.drools.persistence.jpa"));
environment.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());
- StatefulKnowledgeSession ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, environment);
+ StatefulKnowledgeSession ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(processJob.getSessionId(), kbase, null, environment);
StatefulKnowledgeSessionImpl sessionImpl = (StatefulKnowledgeSessionImpl) ((KnowledgeCommandContext) ((CommandBasedStatefulKnowledgeSession)ksession).getCommandService().getContext()).getStatefulKnowledgesession();
SignalManager signalManager = sessionImpl.getInternalWorkingMemory().getSignalManager();
TimerInstance timerInstance = processJob.getTimerInstance();
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPAProcessTimerPersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPAProcessTimerPersistenceStrategy.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/JPAProcessTimerPersistenceStrategy.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -4,6 +4,7 @@
import javax.persistence.EntityManagerFactory;
import javax.persistence.NoResultException;
+import org.drools.common.AbstractWorkingMemory;
import org.drools.process.instance.timer.TimerInstance;
import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
import org.drools.time.ProcessTimerPersistenceStrategy;
@@ -32,6 +33,8 @@
.getSingleResult();
}catch(NoResultException nre){
ProcessTimerJob timerJob = new ProcessTimerJob();
+ int sessionId = ((AbstractWorkingMemory)processContext.getWorkingMemory()).getId();
+ timerJob.setSessionId(sessionId);
timerJob.setProcessId(processInstanceId);
timerJob.setInitialTime(intervalTrigger.getStartTime().getTime());
timerJob.setPeriod(intervalTrigger.getPeriod());
@@ -43,10 +46,9 @@
}
public boolean remove(ProcessJobHandle jobHandle) {
- return true;
-// return getEntityManager().createQuery("delete ProcessTimerJob where processId=:processId")
-// .setParameter("processId", jobHandle.getProcessId())
-// .executeUpdate() == 1;
+ return getEntityManager().createQuery("delete ProcessTimerJob where processId=:processId")
+ .setParameter("processId", jobHandle.getProcessId())
+ .executeUpdate() == 1;
}
public EntityManager getEntityManager() {
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/ProcessTimerJob.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/ProcessTimerJob.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/timer/ProcessTimerJob.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -14,6 +14,7 @@
public class ProcessTimerJob {
private long id;
+ private int sessionId;
private long processId;
private long initialTime;
private long period;
@@ -30,6 +31,14 @@
this.id = id;
}
+ public void setSessionId(int sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public int getSessionId() {
+ return sessionId;
+ }
+
public long getProcessId() {
return processId;
}
Modified: labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/test/java/org/drools/persistence/processinstance/timer/JPAPersistentTimerServiceTest.java
===================================================================
--- labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/test/java/org/drools/persistence/processinstance/timer/JPAPersistentTimerServiceTest.java 2010-07-29 21:41:06 UTC (rev 34348)
+++ labs/jbossrules/branches/trunk_20100722_esteban_diega/drools-persistence-jpa/src/test/java/org/drools/persistence/processinstance/timer/JPAPersistentTimerServiceTest.java 2010-07-29 22:09:27 UTC (rev 34349)
@@ -88,7 +88,7 @@
KnowledgeBase kbase = getKnowledgeBase();
StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
- JPACheckerProcessTimerJobService jpaTimerChecker = new JPACheckerProcessTimerJobService(ksession.getId(), kbase);
+ JPACheckerProcessTimerJobService jpaTimerChecker = new JPACheckerProcessTimerJobService(kbase);
jpaTimerChecker.start();
List<Message> myList = new ArrayList<Message>();
@@ -159,7 +159,7 @@
int id = ksession.getId();
ksession.dispose();
- JPACheckerProcessTimerJobService jpaTimerChecker = new JPACheckerProcessTimerJobService(id, kbase);
+ JPACheckerProcessTimerJobService jpaTimerChecker = new JPACheckerProcessTimerJobService(kbase);
jpaTimerChecker.start();
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
More information about the jboss-svn-commits
mailing list