[jboss-svn-commits] JBL Code SVN: r34647 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src: test/java/org/drools/job/executor/timer and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 11 14:41:44 EDT 2010


Author: diegoll
Date: 2010-08-11 14:41:44 -0400 (Wed, 11 Aug 2010)
New Revision: 34647

Modified:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/completedProcessSession.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml
Log:
[JBRULES-2616] parameterizing all bean names

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-08-11 18:40:16 UTC (rev 34646)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/main/java/org/drools/job/executor/timer/TimerJobExecutor.java	2010-08-11 18:41:44 UTC (rev 34647)
@@ -1,8 +1,6 @@
 package org.drools.job.executor.timer;
 
 import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.base.MapGlobalResolver;
 import org.drools.command.impl.CommandBasedStatefulKnowledgeSession;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
@@ -11,7 +9,6 @@
 import org.drools.process.instance.event.SignalManager;
 import org.drools.process.instance.timer.TimerInstance;
 import org.drools.runtime.Environment;
-import org.drools.runtime.EnvironmentName;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 import org.drools.timer.message.TimerJob;
@@ -19,7 +16,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.transaction.PlatformTransactionManager;
 
 public class TimerJobExecutor implements JobExecutor<TimerJob> {
 
@@ -29,9 +25,15 @@
 	
 	public void execute(TimerJob job) {
 	    long processInstanceId = job.getProcessId();
-	    logger.info("executing timer");
+	    logger.info("executing timer job");
 	    logger.debug("Process instance to signal: " + processInstanceId);
-	    StatefulKnowledgeSession ksession = loadSession(job.getSessionId(), job.getKnowledgeStoreServiceBeanName(), getSessionContext());
+	    StatefulKnowledgeSession ksession = loadSession(
+	            job.getSessionId(), 
+	            job.getEnvironmentBeanName(),
+	            job.getKnowledgeBaseBeanName(),
+	            job.getKnowledgeStoreServiceBeanName(), 
+	            getSessionContext());
+	    
 	    ProcessInstance processInstance = ksession.getProcessInstance(processInstanceId);
 	    if(null == processInstance){
 	        throw new IllegalArgumentException("unexistent process instance with ID: " + processInstanceId);
@@ -59,17 +61,11 @@
         return sessionContext;
     }
     
-    private StatefulKnowledgeSession loadSession(int sessionId, String kstoreName, ApplicationContext sessionContext) {
-        PlatformTransactionManager txManager = (PlatformTransactionManager) sessionContext.getBean( "transactionManager" );
-        Environment env = KnowledgeBaseFactory.newEnvironment();
-        env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, sessionContext.getBean( "entityManagerFactory" ));
-        env.set( EnvironmentName.TRANSACTION_MANAGER, txManager);
-        env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
-        env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new MockProcessTimerPersistenceStrategy());
+    private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, ApplicationContext sessionContext) {
+        Environment env = (Environment) sessionContext.getBean(envName);
         KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
-        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
+        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
         StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
         return ksession;
     }
-
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-08-11 18:40:16 UTC (rev 34646)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/java/org/drools/job/executor/timer/TimerExecutorServiceTest.java	2010-08-11 18:41:44 UTC (rev 34647)
@@ -5,15 +5,12 @@
 import java.util.concurrent.Executors;
 
 import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.base.MapGlobalResolver;
 import org.drools.core.util.KnowledgeSessionRuntimeConfigurator;
 import org.drools.job.executor.HornetQMessageTranslator;
 import org.drools.job.executor.JobExecutorService;
 import org.drools.job.executor.utils.SerializedMessageTranslator;
 import org.drools.persistence.jpa.KnowledgeStoreService;
 import org.drools.runtime.Environment;
-import org.drools.runtime.EnvironmentName;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 import org.drools.timer.message.TimerJob;
@@ -62,6 +59,8 @@
 	    String sessionContextLocation = "classpath:/completedProcessSession.xml";
 	    String sessionConfiguratorBeanName = "sessionConfigurator";
         String knowledgeStoreServiceBeanName = "kstore";
+        String knowledgeBaseBeanName = "kbase";
+        String environmentBeanName = "env";
 
 	    //start the executor
 	    AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
@@ -69,7 +68,7 @@
 
         //start process
         AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
-	    final StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
+	    final StatefulKnowledgeSession ksession = createSession(environmentBeanName, knowledgeBaseBeanName, knowledgeStoreServiceBeanName, sessionContext);
 	    int sessionId = ksession.getId();
         KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
 	    sessionConfigurator.configure(ksession);
@@ -85,11 +84,14 @@
         });
 	    
 	    ClientProducer producer = (ClientProducer)executorContext.getBean("timerMessageProducer");
+        @SuppressWarnings("unchecked")
         HornetQMessageTranslator<TimerJob> timerJobMessageTranslator = (HornetQMessageTranslator<TimerJob>) executorContext.getBean("messageTranslator");
         TimerSchedulerSimulator scheduler = 
             new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
                 .setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
                 .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+                .setKnowledgeBaseBeanName(knowledgeBaseBeanName)
+                .setEnvironmentBeanName(environmentBeanName)
                 .setSessionId(sessionId)
                 .setProcessId(processId)
                 .setTimerId(1)
@@ -120,20 +122,22 @@
      * @throws InterruptedException
      * @throws HornetQException
      */
-
 	@Test
     public void checkTriggerTimer() throws InterruptedException, HornetQException{
         String sessionContextLocation = "classpath:/timerProcessSession.xml";
         String sessionConfiguratorBeanName = "sessionConfigurator";
         String knowledgeStoreServiceBeanName = "kstore";
+        String knowledgeBaseBeanName = "kbase";
+        String environmentBeanName = "env";
 
+
         //start the executor
         AbstractApplicationContext executorContext = createExecutorContext(sessionContextLocation);
         JobExecutorService<TimerJob> timerJobExecutorService = startJobExecutor(executorContext);
 
         //start process
         AbstractApplicationContext sessionContext = new ClassPathXmlApplicationContext(sessionContextLocation);
-        StatefulKnowledgeSession ksession = createSession(knowledgeStoreServiceBeanName, sessionContext);
+        StatefulKnowledgeSession ksession = createSession(environmentBeanName, knowledgeBaseBeanName, knowledgeStoreServiceBeanName, sessionContext);
         int sessionId = ksession.getId();
         KnowledgeSessionRuntimeConfigurator sessionConfigurator = (KnowledgeSessionRuntimeConfigurator) sessionContext.getBean(sessionConfiguratorBeanName);
         sessionConfigurator.configure(ksession);
@@ -149,6 +153,8 @@
             new TimerSchedulerSimulator(timerJobMessageTranslator, producer)
                 .setKnowledgeSessionRuntimeConfiguratorBeanName(sessionConfiguratorBeanName)
                 .setKnowledgeStoreServiceBeanName(knowledgeStoreServiceBeanName)
+                .setKnowledgeBaseBeanName(knowledgeBaseBeanName)
+                .setEnvironmentBeanName(environmentBeanName)
                 .setSessionId(sessionId)
                 .setProcessId(processId)
                 .setTimerId(1)
@@ -157,7 +163,7 @@
         scheduler.triggerTimerJob();
         Thread.sleep(1000);
 
-        ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);  
+        ksession = loadSession(sessionId, environmentBeanName, knowledgeBaseBeanName, knowledgeStoreServiceBeanName, sessionContext);  
         ProcessInstance processInstance = ksession.getProcessInstance(processId);
         Assert.assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
         ksession.dispose();
@@ -168,7 +174,7 @@
         scheduler.triggerTimerJob();
         Thread.sleep(4000);
         
-        ksession = loadSession(sessionId, knowledgeStoreServiceBeanName, sessionContext);  
+        ksession = loadSession(sessionId, environmentBeanName, knowledgeBaseBeanName, knowledgeStoreServiceBeanName, sessionContext);  
         processInstance = ksession.getProcessInstance(processId);
         Assert.assertNull(processInstance); // this mean the process was completed elsewhere
         
@@ -206,32 +212,22 @@
         return context;
     }
 
-    private StatefulKnowledgeSession createSession(String kstoreName, ApplicationContext sessionContext) {
-        Environment env = getEnvironment(sessionContext);
+    private StatefulKnowledgeSession createSession(String envName, String kbaseName, String kstoreName, ApplicationContext sessionContext) {
+        Environment env = (Environment) sessionContext.getBean(envName);
 	    KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
-	    KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
+	    KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
 	    StatefulKnowledgeSession ksession = kstore.newStatefulKnowledgeSession(kbase, null, env);
         return ksession;
     }
     
-    private StatefulKnowledgeSession loadSession(int sessionId, String kstoreName, ApplicationContext sessionContext) {
-        Environment env = getEnvironment(sessionContext);
+    private StatefulKnowledgeSession loadSession(int sessionId, String envName, String kbaseName, String kstoreName, ApplicationContext sessionContext) {
+        Environment env = (Environment) sessionContext.getBean(envName);
         KnowledgeStoreService kstore = (KnowledgeStoreService) sessionContext.getBean(kstoreName);
-        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean("kbase");
+        KnowledgeBase kbase = (KnowledgeBase) sessionContext.getBean(kbaseName);
         StatefulKnowledgeSession ksession = kstore.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
         return ksession;
     }
     
-    private Environment getEnvironment(ApplicationContext sessionContext) {
-        Environment env = KnowledgeBaseFactory.newEnvironment();
-        env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, sessionContext.getBean( "entityManagerFactory" ));
-        env.set( EnvironmentName.TRANSACTION_MANAGER, (PlatformTransactionManager) sessionContext.getBean( "transactionManager" ));
-        env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
-        env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new MockProcessTimerPersistenceStrategy());
-        return env;
-    }
-
-    
     private static class TimerSchedulerSimulator {
         
         private HornetQMessageTranslator<TimerJob> translator;
@@ -245,6 +241,8 @@
         
         private String knowledgeStoreServiceBeanName;
         private String knowledgeSessionRuntimeConfiguratorBeanName;
+        private String knowledgeBaseBeanName;
+        private String environmentBeanName;
 
         public TimerSchedulerSimulator(HornetQMessageTranslator<TimerJob> translator, ClientProducer producer){
             this.translator = translator;
@@ -261,6 +259,8 @@
             
             timerJob.setKnowledgeStoreServiceBeanName(getKnowledgeStoreServiceBeanName());
             timerJob.setRuntimeSessionConfiguratorBeanName(getKnowledgeSessionRuntimeConfiguratorBeanName());
+            timerJob.setEnvironmentBeanName(getEnvironmentBeanName());
+            timerJob.setKnowledgeBaseBeanName(getKnowledgeBaseBeanName());
             
             getProducer().send(getTranslator().writeMessage(timerJob));
         }
@@ -321,10 +321,28 @@
             return this;
         }
 
+        public String getKnowledgeBaseBeanName() {
+            return knowledgeBaseBeanName;
+        }
+
+        public TimerSchedulerSimulator setKnowledgeBaseBeanName(String knowledgeBaseBeanName) {
+            this.knowledgeBaseBeanName = knowledgeBaseBeanName;
+            return this;
+        }
+
+        public String getEnvironmentBeanName() {
+            return environmentBeanName;
+        }
+
+        public TimerSchedulerSimulator setEnvironmentBeanName(String environmentBeanName) {
+            this.environmentBeanName = environmentBeanName;
+            return this;
+        }
+
         public HornetQMessageTranslator<TimerJob> getTranslator() {
             return translator;
         }
-
+        
         public ClientProducer getProducer() {
             return producer;
         }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/completedProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/completedProcessSession.xml	2010-08-11 18:40:16 UTC (rev 34646)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/completedProcessSession.xml	2010-08-11 18:41:44 UTC (rev 34647)
@@ -4,8 +4,9 @@
   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"
   xmlns:drools="http://drools.org/schema/drools-spring"
-  xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
-                      http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd">
+  xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+                      http://www.springframework.org/schema/util     http://www.springframework.org/schema/util/spring-util-3.0.xsd
+                      http://drools.org/schema/drools-spring         http://drools.org/schema/drools-spring.xsd">
 
 
   <!-- drools configuration -->
@@ -31,6 +32,37 @@
     </drools:resources>
   </drools:kbase>
 
+  <bean id="env" class="org.drools.container.spring.beans.EnvironmentFactoryBean">
+    <property name="environment">
+      <map>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.ENTITY_MANAGER_FACTORY"/>
+          </key>
+          <ref bean="entityManagerFactory"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.TRANSACTION_MANAGER"/>
+          </key>
+          <ref bean="transactionManager"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.GLOBALS"/>
+          </key>
+          <bean class="org.drools.base.MapGlobalResolver"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.PROCESS_TIMER_STRATEGY"/>
+          </key>
+          <bean class="org.drools.job.executor.timer.MockProcessTimerPersistenceStrategy" />
+        </entry>
+      </map>
+    </property>
+  </bean>
+  
   <!-- persistence configuration -->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     <property name="driverClassName" value="org.h2.Driver" />

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml	2010-08-11 18:40:16 UTC (rev 34646)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-executor/src/test/resources/timerProcessSession.xml	2010-08-11 18:41:44 UTC (rev 34647)
@@ -4,8 +4,9 @@
   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"
   xmlns:drools="http://drools.org/schema/drools-spring"
-  xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
-                      http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring.xsd">
+  xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+                      http://www.springframework.org/schema/util     http://www.springframework.org/schema/util/spring-util-3.0.xsd
+                      http://drools.org/schema/drools-spring         http://drools.org/schema/drools-spring.xsd">
 
 
   <!-- drools configuration -->
@@ -31,6 +32,37 @@
     </drools:resources>
   </drools:kbase>
 
+  <bean id="env" class="org.drools.container.spring.beans.EnvironmentFactoryBean">
+    <property name="environment">
+      <map>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.ENTITY_MANAGER_FACTORY"/>
+          </key>
+          <ref bean="entityManagerFactory"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.TRANSACTION_MANAGER"/>
+          </key>
+          <ref bean="transactionManager"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.GLOBALS"/>
+          </key>
+          <bean class="org.drools.base.MapGlobalResolver"/>
+        </entry>
+        <entry>
+          <key>
+            <util:constant static-field="org.drools.runtime.EnvironmentName.PROCESS_TIMER_STRATEGY"/>
+          </key>
+          <bean class="org.drools.job.executor.timer.MockProcessTimerPersistenceStrategy" />
+        </entry>
+      </map>
+    </property>
+  </bean>
+
   <!-- persistence configuration -->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     <property name="driverClassName" value="org.h2.Driver" />



More information about the jboss-svn-commits mailing list