[jboss-svn-commits] JBL Code SVN: r35140 - in labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer: drools-timer-executor/src/main/java/org/drools/job/executor and 12 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 14 11:37:46 EDT 2010


Author: diegoll
Date: 2010-09-14 11:37:45 -0400 (Tue, 14 Sep 2010)
New Revision: 35140

Added:
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
Removed:
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
Modified:
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
   labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java
Log:
[JBRULES-2616]  executor refactor to support multiple session loaders

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -8,7 +8,6 @@
 import org.drools.persistence.jpa.KnowledgeStoreService;
 import org.drools.runtime.Environment;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.timer.message.TimerJob;
 import org.drools.timer.scheduler.TimerSchedulerHornetQService;
 import org.h2.tools.DeleteDbFiles;
 import org.h2.tools.Server;
@@ -60,8 +59,7 @@
         ;
 
         //start services
-        @SuppressWarnings("unchecked")
-        JobExecutorService<TimerJob> timerJobExecutor = (JobExecutorService<TimerJob>) executorApplicationContext.getBean("timerJobExecutorService");
+        JobExecutorService timerJobExecutor = (JobExecutorService) executorApplicationContext.getBean("jobExecutorService");
         TimerSchedulerHornetQService timerScheduler = (TimerSchedulerHornetQService) schedulerApplicationContext.getBean("schedulerService");
         new Thread(timerJobExecutor, "executor").start();
         new Thread(timerScheduler, "scheduler").start();

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutor.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,7 +1,9 @@
 package org.drools.job.executor;
 
-public interface JobExecutor<T> {
+import org.drools.executor.message.ExecutionJob;
 
-	public void execute(T job);
-	
+
+public interface JobExecutor {
+
+    void execute(ExecutionJob job);
 }

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,10 @@
+package org.drools.job.executor;
+
+import org.drools.executor.message.ExecutionJob;
+
+
+public interface JobExecutorFactory {
+
+    <T extends ExecutionJob> JobExecutor getExecutor(Class<T> job);
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,23 @@
+package org.drools.job.executor;
+
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.timer.TimerJob;
+
+public class JobExecutorFactoryImpl
+    implements
+    JobExecutorFactory {
+
+    JobExecutor timerJobExecutor;
+
+    public <T extends ExecutionJob> JobExecutor getExecutor(Class<T> job) {
+        if ( job.isAssignableFrom( TimerJob.class ) ) {
+            return timerJobExecutor;
+        }
+        throw new IllegalArgumentException( job.getSimpleName() + " job not supported" );
+    }
+
+    public void setTimerJobExecutor(JobExecutor timerJobExecutor) {
+        this.timerJobExecutor = timerJobExecutor;
+    }
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorFactoryImpl.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/JobExecutorService.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -3,36 +3,36 @@
 import java.util.TimerTask;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.drools.executor.message.ExecutionJob;
 import org.hornetq.api.core.HornetQException;
 import org.hornetq.api.core.client.ClientConsumer;
 import org.hornetq.api.core.client.ClientMessage;
-import org.hornetq.api.core.client.ClientProducer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class JobExecutorService<T> extends TimerTask {
+public class JobExecutorService extends TimerTask {
 	
 	private static Logger logger = LoggerFactory.getLogger(JobExecutorService.class);
 	
 	private ClientConsumer consumer;
-	private ClientProducer producer;
+	private HornetQMessageTranslator<ExecutionJob> translator;
+	private MessageErrorMechanism messageErrorMechanism;
+	private JobExecutorFactory executorFactory;
 	private AtomicBoolean running = new AtomicBoolean(false);
-	private HornetQMessageTranslator<T> translator;
-	private JobExecutor<T> executor;
-
+	
 	public void run() {
 		running.set(true);
 		try{
 			while (running.get()) {
 				ClientMessage clientMessage = consumer.receive();
 				if (clientMessage!=null) {
+				    ExecutionJob job = translator.readMessage(clientMessage);
+				    JobExecutor executor = executorFactory.getExecutor(job.getClass());
 					try{
-						T job = translator.readMessage(clientMessage);
 						executor.execute(job);
 					} catch (Exception e) {
 						logger.error("error running job executor service", e);
-						logger.debug("retrying message");
-						producer.send(clientMessage);
+						messageErrorMechanism.onMessageError( clientMessage, e );
 					}
 				}
 			}
@@ -58,16 +58,16 @@
 		this.consumer = consumer;
 	}
 
-	public void setTranslator(HornetQMessageTranslator<T> translator) {
+	public void setTranslator(HornetQMessageTranslator<ExecutionJob> translator) {
 		this.translator = translator;
 	}
 
-	public void setExecutor(JobExecutor<T> executor) {
-		this.executor = executor;
-	}
+    public void setMessageErrorMechanism(MessageErrorMechanism messageErrorMechanism) {
+        this.messageErrorMechanism = messageErrorMechanism;
+    }
 
-	public void setProducer(ClientProducer producer) {
-		this.producer = producer;
-	}
+    public void setExecutorFactory(JobExecutorFactory executorFactory) {
+        this.executorFactory = executorFactory;
+    }
 
 }

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,8 @@
+package org.drools.job.executor;
+
+import org.hornetq.api.core.client.ClientMessage;
+
+public interface MessageErrorMechanism {
+
+    void onMessageError(ClientMessage failingMessage, Throwable error);
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/MessageErrorMechanism.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,33 @@
+package org.drools.job.executor;
+
+import org.hornetq.api.core.HornetQException;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RetryForeverErrorMechanism
+    implements
+    MessageErrorMechanism {
+
+    private static Logger logger = LoggerFactory.getLogger(RetryForeverErrorMechanism.class);
+
+    private ClientProducer producer;
+
+    public void onMessageError(ClientMessage failingMessage,
+                               Throwable error) {
+        logger.debug("retrying message");
+        try {
+            producer.send(failingMessage);
+        } catch ( HornetQException e ) {
+            String errorMessage = "Error running retry mechanism";
+            logger.error( errorMessage, e );
+            throw new RuntimeException(errorMessage, e);
+        }
+    }
+
+    public void setProducer(ClientProducer producer) {
+        this.producer = producer;
+    }
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/RetryForeverErrorMechanism.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,10 @@
+package org.drools.job.executor.session;
+
+import org.drools.executor.message.SessionConfiguratorType;
+
+public interface KnowledgeSessionConfiguratorFactory {
+
+    KnowledgeSessionLoader getKnowledgeSessionExecutor(SessionConfiguratorType sessionConfiguratorType,
+                                       Object sessionConfiguratiorData);
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactory.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,28 @@
+package org.drools.job.executor.session;
+
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+
+public class KnowledgeSessionConfiguratorFactoryImpl
+    implements
+    KnowledgeSessionConfiguratorFactory {
+
+    private SpringKnowledgeSessionLoader springKnowledgeSessionLoader;
+    
+    public KnowledgeSessionLoader getKnowledgeSessionExecutor(SessionConfiguratorType sessionConfiguratorType,
+                                                                    Object sessionConfiguratiorData) {
+        switch ( sessionConfiguratorType ) {
+            case SPRING :
+                springKnowledgeSessionLoader
+                    .setSessionLoaderConfiguration((SpringKnowledgeSessionLoaderConfiguration) sessionConfiguratiorData);
+                return springKnowledgeSessionLoader;
+            default :
+                throw new IllegalArgumentException( "Unsupported configuration type" );
+        }
+    }
+
+    public void setSpringKnowledgeSessionLoader(SpringKnowledgeSessionLoader springKnowledgeSessionLoader) {
+        this.springKnowledgeSessionLoader = springKnowledgeSessionLoader;
+    }
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionConfiguratorFactoryImpl.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,8 @@
+package org.drools.job.executor.session;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+
+public interface KnowledgeSessionLoader {
+
+    StatefulKnowledgeSession loadSession(int sessionId);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/KnowledgeSessionLoader.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,48 @@
+package org.drools.job.executor.session;
+
+import org.drools.KnowledgeBase;
+import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.persistence.jpa.KnowledgeStoreService;
+import org.drools.runtime.Environment;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringKnowledgeSessionLoader implements KnowledgeSessionLoader {
+
+    private static Logger logger = LoggerFactory.getLogger(SpringKnowledgeSessionLoader.class);
+    private ApplicationContext sessionContext;
+    private SpringKnowledgeSessionLoaderConfiguration sessionLoaderConfiguration;
+    
+    public StatefulKnowledgeSession loadSession(int sessionId){
+        return loadSession(sessionId, 
+                           sessionLoaderConfiguration.getEnvironmentBeanName(),
+                           sessionLoaderConfiguration.getKnowledgeBaseBeanName(),
+                           sessionLoaderConfiguration.getKnowledgeStoreServiceBeanName(),
+                           sessionLoaderConfiguration.getRuntimeSessionConfiguratorBeanName()
+                           );
+    }
+
+    private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, String configuratorName) {
+        Environment env = (Environment) sessionContext.getBean(envName);
+        KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
+        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
+        KnowledgeSessionRuntimeConfigurator configurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(configuratorName);
+        StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
+        configurator.configure(ksession);
+        return ksession;
+    }
+    
+    public void setSessionContextLocation(String sessionContextLocation) {
+        logger.debug("creating session context at " + sessionContextLocation);
+        sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
+        logger.debug("session context created");
+    }
+
+    public void setSessionLoaderConfiguration(SpringKnowledgeSessionLoaderConfiguration sessionConfiguratiorData) {
+        this.sessionLoaderConfiguration = sessionConfiguratiorData;
+    }
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/session/SpringKnowledgeSessionLoader.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,80 +1,60 @@
 package org.drools.job.executor.timer;
 
-import org.drools.KnowledgeBase;
 import org.drools.command.impl.CommandBasedStatefulKnowledgeSession;
 import org.drools.command.runtime.process.SignalEventCommand;
-import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.timer.TimerJob;
 import org.drools.job.executor.JobExecutor;
-import org.drools.persistence.jpa.KnowledgeStoreService;
+import org.drools.job.executor.session.KnowledgeSessionConfiguratorFactory;
 import org.drools.process.instance.timer.TimerInstance;
-import org.drools.runtime.Environment;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.message.TimerJob;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class TimerJobExecutor implements JobExecutor<TimerJob> {
+public class TimerJobExecutor implements JobExecutor {
 
-	private static Logger logger = LoggerFactory.getLogger(TimerJobExecutor.class);
-	private ApplicationContext sessionContext;
-	
-	
-	public void execute(TimerJob job) {
-	    long processInstanceId = job.getProcessId();
-	    logger.info("executing timer job");
-	    logger.debug("Process instance to signal: " + processInstanceId);
-	    StatefulKnowledgeSession ksession = loadSession(
-	            job.getSessionId(), 
-	            job.getEnvironmentBeanName(),
-	            job.getKnowledgeBaseBeanName(),
-	            job.getKnowledgeStoreServiceBeanName(), 
-	            job.getRuntimeSessionConfiguratorBeanName(),
-	            getSessionContext());
-	    
-	    ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
-	    if(null == processInstance){
-	        throw new IllegalArgumentException("unexistent process instance with ID: " + processInstanceId);
-	    }
-	    
-	    
-	    CommandBasedStatefulKnowledgeSession executorService = (CommandBasedStatefulKnowledgeSession) ksession;
+    private static Logger logger = LoggerFactory.getLogger(TimerJobExecutor.class);
+    private KnowledgeSessionConfiguratorFactory sessionConfiguratorFactory;
+    
+    private void execute(TimerJob job) {
+        long processInstanceId = job.getProcessId();
+        logger.info("executing timer job");
+        logger.debug("Process instance to signal: " + processInstanceId);
+        StatefulKnowledgeSession ksession = sessionConfiguratorFactory.
+                        getKnowledgeSessionExecutor(
+                            job.getSessionConfiguratorType(), 
+                            job.getSessionConfiguratiorData())
+                        .loadSession(job.getSessionId());
+        
+        ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
+        if(null == processInstance){
+            throw new IllegalArgumentException("unexistent process instance with ID: " + processInstanceId);
+        }
+        
+        CommandBasedStatefulKnowledgeSession executorService = (CommandBasedStatefulKnowledgeSession) ksession;
 
-	    TimerInstance timerInstance = new TimerInstance();
-	    timerInstance.setId(job.getTimerId());
-	    timerInstance.setTimerId(job.getTimerId());
-	    timerInstance.setPeriod(job.getPeriod());
+        TimerInstance timerInstance = new TimerInstance();
+        timerInstance.setId(job.getTimerId());
+        timerInstance.setTimerId(job.getTimerId());
+        timerInstance.setPeriod(job.getPeriod());
 
-	    SignalEventCommand signalCommand = new SignalEventCommand();
-	    signalCommand.setProcessInstanceId(processInstanceId);
-	    signalCommand.setEventType("timerTriggered");
-	    signalCommand.setEvent(timerInstance);
-	    
-	    executorService.execute(signalCommand);
-	    
-	    ksession.dispose();
+        SignalEventCommand signalCommand = new SignalEventCommand();
+        signalCommand.setProcessInstanceId(processInstanceId);
+        signalCommand.setEventType("timerTriggered");
+        signalCommand.setEvent(timerInstance);
+        
+        executorService.execute(signalCommand);
+        
+        ksession.dispose();
 
-	}
+    }
 
-    public void setSessionContextLocation(String sessionContextLocation) {
-        logger.debug("creating session context at " + sessionContextLocation);
-        sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
-        logger.debug("session context created");
+    public void execute(ExecutionJob job) {
+        execute((TimerJob)job);
     }
-    
-    private ApplicationContext getSessionContext(){
-        return sessionContext;
+
+    public void setSessionConfiguratorFactory(KnowledgeSessionConfiguratorFactory sessionConfiguratorFactory) {
+        this.sessionConfiguratorFactory = sessionConfiguratorFactory;
     }
-    
-    private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, String configuratorName, ApplicationContext sessionContext) {
-        Environment env = (Environment) sessionContext.getBean(envName);
-        KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
-        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
-        KnowledgeSessionRuntimeConfigurator configurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(configuratorName);
-        StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
-        configurator.configure(ksession);
-        return ksession;
-    }
 }

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/main/resources/executorContext.xml	2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,38 +1,58 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"
+<beans xmlns="http://www.springframework.org/schema/beans"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
+  xmlns:util="http://www.springframework.org/schema/util"
   xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
                       http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd  
                       http://www.springframework.org/schema/util     http://www.springframework.org/schema/util/spring-util-3.0.xsd">
 
-  <bean id="timerJobExecutorService" class="org.drools.job.executor.JobExecutorService">
+  <bean id="jobExecutorService" class="org.drools.job.executor.JobExecutorService">
     <property name="consumer">
-      <bean factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
+      <bean factory-bean="clientSession" factory-method="createConsumer"
+        destroy-method="close">
         <constructor-arg value="executeTimerMessages" />
       </bean>
     </property>
-    <property name="producer">
-      <bean factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
-        <constructor-arg value="executeTimerMessages" />
+    <property name="translator" ref="messageTranslator" />
+    <property name="messageErrorMechanism">
+      <bean class="org.drools.job.executor.RetryForeverErrorMechanism">
+        <property name="producer">
+          <bean factory-bean="clientSession" factory-method="createProducer"
+            destroy-method="close">
+            <constructor-arg value="executeTimerMessages" />
+          </bean>
+        </property>
       </bean>
     </property>
-
-    <property name="translator" ref="messageTranslator" />
-    <property name="executor">
-      <bean class="org.drools.job.executor.timer.TimerJobExecutor">
-        <property name="sessionContextLocation" value="${sessioncontext.location}" />
+    <property name="executorFactory">
+      <bean class="org.drools.job.executor.JobExecutorFactoryImpl">
+        <property name="timerJobExecutor">
+          <bean class="org.drools.job.executor.timer.TimerJobExecutor">
+            <property name="sessionConfiguratorFactory">
+              <bean class="org.drools.job.executor.session.KnowledgeSessionConfiguratorFactoryImpl">
+                <property name="springKnowledgeSessionLoader">
+                  <bean class="org.drools.job.executor.session.SpringKnowledgeSessionLoader">
+                    <property name="sessionContextLocation" value="${sessioncontext.location}" />
+                  </bean>
+                </property>
+              </bean>
+            </property>
+          </bean>
+        </property>
       </bean>
     </property>
   </bean>
 
-  <bean id="messageTranslator" class="org.drools.job.executor.utils.SerializedMessageTranslator">
+  <bean id="messageTranslator"
+    class="org.drools.job.executor.utils.SerializedMessageTranslator">
     <property name="session" ref="clientSession" />
   </bean>
 
   <!-- client connection with the HornetQ server -->
-  <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start" />
-  <bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient" factory-method="createClientSessionFactory"
-    depends-on="hornetQServer">
+  <bean id="clientSession" factory-bean="clientSessionFactory"
+    factory-method="createSession" init-method="start" />
+  <bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient"
+    factory-method="createClientSessionFactory" depends-on="hornetQServer">
     <constructor-arg>
       <bean class="org.hornetq.api.core.TransportConfiguration">
         <constructor-arg>
@@ -42,7 +62,8 @@
           <map>
             <entry>
               <key>
-                <util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME" />
+                <util:constant
+                  static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME" />
               </key>
               <value>5446</value>
             </entry>
@@ -52,10 +73,11 @@
     </constructor-arg>
   </bean>
 
-  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+  <bean id="propertyConfigurer"
+    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="location" value="classpath:executor.properties" />
   </bean>
 
   <!-- dummy hornetQServer for override in tests -->
-  <bean id="hornetQServer" class="java.lang.Object"/>
+  <bean id="hornetQServer" class="java.lang.Object" />
 </beans>
\ No newline at end of file

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,11 +1,12 @@
 package org.drools.job.executor.timer;
 
 import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 import org.drools.KnowledgeBase;
 import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.executor.message.timer.TimerJob;
 import org.drools.job.executor.HornetQMessageTranslator;
 import org.drools.job.executor.JobExecutorService;
 import org.drools.job.executor.utils.SerializedMessageTranslator;
@@ -13,7 +14,6 @@
 import org.drools.runtime.Environment;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.message.TimerJob;
 import org.h2.tools.DeleteDbFiles;
 import org.h2.tools.Server;
 import org.hornetq.api.core.HornetQException;
@@ -50,6 +50,19 @@
         DeleteDbFiles.execute( "", H2_DB_NAME, true );
     }
 	
+    /**
+     * This test checks what happens in the executor when an exception is throw.
+     * The current behavior is to re queue the message and retry until it completes
+     * successfully
+     * The process is
+     * 
+     * start -> timer -> workitem which fail 5 attempts of completion -> end
+     * 
+     * After scheduling the timer job and letting the executor do its work
+     * the process should be completed 
+     * @throws InterruptedException
+     * @throws HornetQException
+     */
     @Test
     public void checkRetryExecution() throws InterruptedException, HornetQException{
 	    String sessionContextLocation = "classpath:/retryExecutionProcessSession.xml";
@@ -68,7 +81,7 @@
         
 	    //start the executor
 	    AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
-	    JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+	    JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
 
         //start process
 	    StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -123,7 +136,7 @@
 
 	    //start the executor
 	    AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
-	    JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+	    JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
 
         //start process
 	    final StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -188,7 +201,7 @@
 
         //start the executor
         AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
-        JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
+        JobExecutorService timerJobExecutorService = startJobExecutor(executorContext);
 
         //start process
         StatefulKnowledgeSession ksession = sessionManager.createSession();
@@ -236,12 +249,9 @@
         executorContext.close();
     }
 
-    private JobExecutorService<TimerJob> startJobExecutor(AbstractApplicationContext executorContext)
+    private JobExecutorService startJobExecutor(AbstractApplicationContext executorContext)
             throws InterruptedException {
-        @SuppressWarnings("unchecked")
-        JobExecutorService<TimerJob> timerJobExecutorService = (JobExecutorService<TimerJob>) executorContext.getBean("timerJobExecutorService");
-        //ExecutorService executor = Executors.newSingleThreadExecutor();
-        //executor.execute(timerJobExecutorService);
+        JobExecutorService timerJobExecutorService = (JobExecutorService) executorContext.getBean("jobExecutorService");
         new Thread(timerJobExecutorService, "executor").start();
         Thread.sleep(1000); // executor doesn't guarantee you it'll run immediately
         Assert.assertTrue(timerJobExecutorService.isRunning());
@@ -361,18 +371,19 @@
         }
         
         public void triggerTimerJob() throws HornetQException{
-            TimerJob timerJob = new TimerJob();
+            SpringKnowledgeSessionLoaderConfiguration conf = new SpringKnowledgeSessionLoaderConfiguration();
+            conf.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
+            conf.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
+            conf.setEnvironmentBeanName(getEnvironmentBeanName());
+            conf.setKnowledgeBaseBeanName(getKnowledgeBaseBeanName());
+
+            TimerJob timerJob = new TimerJob(SessionConfiguratorType.SPRING, conf);
             timerJob.setProcessId(getProcessId());
             timerJob.setSessionId(getSessionId());
             
             timerJob.setTimerId(getTimerId());
             timerJob.setPeriod(getPeriod());
             
-            timerJob.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
-            timerJob.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
-            timerJob.setEnvironmentBeanName(getEnvironmentBeanName());
-            timerJob.setKnowledgeBaseBeanName(getKnowledgeBaseBeanName());
-            
             getProducer().send(getTranslator().writeMessage(timerJob));
         }
 

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,23 @@
+package org.drools.executor.message;
+
+import java.io.Serializable;
+
+public abstract class ExecutionJob implements Serializable {
+    
+    private static final long serialVersionUID = 1L;
+    private SessionConfiguratorType configuratorType;
+    private Object configuratorData;
+    
+    public ExecutionJob(SessionConfiguratorType configuratorType, Object configuratorData) {
+        this.configuratorType = configuratorType;
+        this.configuratorData = configuratorData;
+    }
+
+    public SessionConfiguratorType getSessionConfiguratorType() {
+        return configuratorType;
+    }
+
+    public Object getSessionConfiguratiorData() {
+        return configuratorData;
+    }
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/ExecutionJob.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,6 @@
+package org.drools.executor.message;
+
+public enum SessionConfiguratorType {
+
+    SPRING;
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/SessionConfiguratorType.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,46 @@
+package org.drools.executor.message.spring;
+
+import java.io.Serializable;
+
+public class SpringKnowledgeSessionLoaderConfiguration implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+    
+    private String runtimeSessionConfiguratorBeanName;
+    private String knowledgeStoreServiceBeanName;
+    private String knowledgeBaseBeanName;
+    private String environmentBeanName;
+
+    public String getRuntimeSessionConfiguratorBeanName() {
+        return runtimeSessionConfiguratorBeanName;
+    }
+
+    public void setRuntimeSessionConfiguratorBeanName(String runtimeSessionConfiguratorBeanName) {
+        this.runtimeSessionConfiguratorBeanName = runtimeSessionConfiguratorBeanName;
+    }
+
+    public String getKnowledgeStoreServiceBeanName() {
+        return knowledgeStoreServiceBeanName;
+    }
+
+    public void setKnowledgeStoreServiceBeanName(String knowledgeStoreServiceBeanName) {
+        this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
+    }
+
+    public String getKnowledgeBaseBeanName() {
+        return knowledgeBaseBeanName;
+    }
+
+    public void setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
+        this.knowledgeBaseBeanName = knowledgeBaseBeanName;
+    }
+
+    public String getEnvironmentBeanName() {
+        return environmentBeanName;
+    }
+
+    public void setEnvironmentBeanName(String environmentBeanName) {
+        this.environmentBeanName = environmentBeanName;
+    }
+
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/spring/SpringKnowledgeSessionLoaderConfiguration.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java	                        (rev 0)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -0,0 +1,51 @@
+package org.drools.executor.message.timer;
+
+import org.drools.executor.message.ExecutionJob;
+import org.drools.executor.message.SessionConfiguratorType;
+
+public class TimerJob extends ExecutionJob {
+
+    private static final long serialVersionUID = 1L;
+    private long processId;
+    private int  sessionId;
+    private long timerId;
+    private long period;
+
+    public TimerJob(SessionConfiguratorType configuratorType,
+                    Object configuratorData) {
+        super( configuratorType,
+               configuratorData );
+    }
+
+    public long getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(long processId) {
+        this.processId = processId;
+    }
+
+    public int getSessionId() {
+        return sessionId;
+    }
+
+    public void setSessionId(int sessionId) {
+        this.sessionId = sessionId;
+    }
+
+    public long getTimerId() {
+        return timerId;
+    }
+
+    public void setTimerId(long timerId) {
+        this.timerId = timerId;
+    }
+
+    public long getPeriod() {
+        return period;
+    }
+
+    public void setPeriod(long period) {
+        this.period = period;
+    }
+}


Property changes on: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/executor/message/timer/TimerJob.java
___________________________________________________________________
Name: svn:eol-style
   + native

Deleted: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-messages/src/main/java/org/drools/timer/message/TimerJob.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -1,79 +0,0 @@
-package org.drools.timer.message;
-
-import java.io.Serializable;
-
-public class TimerJob implements Serializable{
-    
-    private long processId;
-    private String runtimeSessionConfiguratorBeanName;
-    private String knowledgeStoreServiceBeanName;
-    private String knowledgeBaseBeanName;
-    private String environmentBeanName;
-    private int sessionId;
-    private long timerId;
-    private long period;
-
-    public void setProcessId(long processId) {
-        this.processId = processId;
-    }
-
-    public long getProcessId() {
-        return processId;
-    }
-
-    public void setRuntimeSessionConfiguratorBeanName(String sessionConfiguratorBeanName) {
-        this.runtimeSessionConfiguratorBeanName = sessionConfiguratorBeanName;
-    }
-
-    public String getRuntimeSessionConfiguratorBeanName() {
-        return runtimeSessionConfiguratorBeanName;
-    }
-
-    public void setKnowledgeStoreServiceBeanName(String knowledgeStoreServiceBeanName) {
-        this.knowledgeStoreServiceBeanName = knowledgeStoreServiceBeanName;
-    }
-
-    public String getKnowledgeStoreServiceBeanName() {
-        return knowledgeStoreServiceBeanName;
-    }
-
-    public void setSessionId(int id) {
-        this.sessionId = id;
-    }
-
-    public int getSessionId() {
-        return sessionId;
-    }
-
-    public void setTimerId(long timerId) {
-        this.timerId = timerId;
-    }
-
-    public void setPeriod(long period) {
-        this.period = period;
-    }
-
-    public long getTimerId() {
-        return timerId;
-    }
-
-    public long getPeriod() {
-        return period;
-    }
-
-    public String getKnowledgeBaseBeanName() {
-        return knowledgeBaseBeanName;
-    }
-
-    public void setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
-        this.knowledgeBaseBeanName = knowledgeBaseBeanName;
-    }
-
-    public String getEnvironmentBeanName() {
-        return environmentBeanName;
-    }
-
-    public void setEnvironmentBeanName(String environmentBeanName) {
-        this.environmentBeanName = environmentBeanName;
-    }
-}

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/job/TimerExecutorJob.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -5,7 +5,9 @@
 import java.io.ObjectOutputStream;
 import java.util.Date;
 
-import org.drools.timer.message.TimerJob;
+import org.drools.executor.message.SessionConfiguratorType;
+import org.drools.executor.message.spring.SpringKnowledgeSessionLoaderConfiguration;
+import org.drools.executor.message.timer.TimerJob;
 import org.drools.timer.persistence.TimerPersistence;
 import org.hornetq.api.core.HornetQException;
 import org.hornetq.api.core.client.ClientMessage;
@@ -69,17 +71,20 @@
 		ObjectOutputStream oout;
 		try {
 			oout = new ObjectOutputStream(baos);
-			
-			TimerJob timerJob = new TimerJob();
-			timerJob.setProcessId(processInstanceId);
-			timerJob.setSessionId(sessionId);
-			timerJob.setEnvironmentBeanName(environmentBeanName);
-			timerJob.setKnowledgeBaseBeanName(knowledgeBaseBeanName);
-			timerJob.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
-			timerJob.setRuntimeSessionConfiguratorBeanName(runtimeSessionConfiguratorBeanName);
-			timerJob.setPeriod(period);
-			timerJob.setTimerId(timerId);
-			
+
+            SpringKnowledgeSessionLoaderConfiguration conf = new SpringKnowledgeSessionLoaderConfiguration();
+            conf.setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName);
+            conf.setRuntimeSessionConfiguratorBeanName(runtimeSessionConfiguratorBeanName);
+            conf.setEnvironmentBeanName(environmentBeanName);
+            conf.setKnowledgeBaseBeanName(knowledgeBaseBeanName);
+
+            TimerJob timerJob = new TimerJob(SessionConfiguratorType.SPRING, conf);
+            timerJob.setProcessId(processInstanceId);
+            timerJob.setSessionId(sessionId);
+            
+            timerJob.setTimerId(timerId);
+            timerJob.setPeriod(period);
+
 			oout.writeObject(timerJob);
 			ClientMessage message = session.createMessage(true);
 			message.getBodyBuffer().writeBytes(baos.toByteArray());

Modified: labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java
===================================================================
--- labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java	2010-09-14 14:33:27 UTC (rev 35139)
+++ labs/jbossrules/branches/diega_esteban_jpm_integration_r34940/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerServiceTest.java	2010-09-14 15:37:45 UTC (rev 35140)
@@ -6,7 +6,7 @@
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 
-import org.drools.timer.message.TimerJob;
+import org.drools.executor.message.timer.TimerJob;
 import org.drools.timer.message.impl.InsertScheduledTimerMessage;
 import org.drools.timer.persistence.model.TimerState;
 import org.drools.timer.scheduler.utils.HornetQMessageTranslator;



More information about the jboss-svn-commits mailing list