[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