[jboss-svn-commits] JBL Code SVN: r34683 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer: drools-timer-core/src/main/java/org/drools/timer/core and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 12 15:38:24 EDT 2010


Author: diegoll
Date: 2010-08-12 15:38:20 -0400 (Thu, 12 Aug 2010)
New Revision: 34683

Added:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
Modified:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java
Log:
[JBRULES-2616] tunning scheduler to be ready in integration

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml	2010-08-12 19:38:20 UTC (rev 34683)
@@ -80,6 +80,16 @@
     </dependency>
     <dependency>
       <groupId>org.drools</groupId>
+      <artifactId>drools-spring</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-persistence-jpa</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.drools</groupId>
       <artifactId>drools-timer-executor</artifactId>
       <scope>test</scope>
     </dependency>
@@ -88,6 +98,36 @@
       <artifactId>drools-timer-scheduler</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-orm</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-jdbc</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.h2database</groupId>
+      <artifactId>h2</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <!-- weird dependencies -->
+    <dependency>
+      <groupId>org.opensymphony.quartz</groupId>
+      <artifactId>quartz</artifactId>
+      <version>1.6.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context-support</artifactId>
+      <version>${springframework-version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    
   </dependencies>
 
 </project>

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -5,25 +5,14 @@
 import org.drools.time.impl.IntervalTrigger;
 import org.drools.time.impl.ProcessJobHandle;
 import org.drools.timer.core.connector.SchedulerConnector;
-import org.drools.timer.persistence.JPATimerPersistence;
 import org.drools.timer.persistence.TimerPersistence;
 import org.drools.timer.persistence.model.TimerState;
 
 public class ProcessTimerQuartzPersistenceStrategy implements ProcessTimerPersistenceStrategy {
 
-	private final SchedulerConnector connector;
-	private final TimerPersistence timerPersistence;
+	private SchedulerConnector connector;
+	private TimerPersistence timerPersistence;
 
-	public ProcessTimerQuartzPersistenceStrategy(SchedulerConnector connector) throws Exception {
-		this(connector, new JPATimerPersistence());
-	}
-
-	public ProcessTimerQuartzPersistenceStrategy(SchedulerConnector connector, TimerPersistence timerPersistence) throws Exception {
-		this.connector = connector;
-		this.connector.connect();
-		this.timerPersistence = timerPersistence;
-	}
-
 	public void save(ProcessJobContext processContext, IntervalTrigger intervalTrigger) {
 		connector.save(processContext);
 		TimerState timerState = new TimerState();
@@ -37,4 +26,12 @@
 		return false;
 	}
 
+    public void setConnector(SchedulerConnector connector) {
+        this.connector = connector;
+    }
+
+    public void setTimerPersistence(TimerPersistence timerPersistence) {
+        this.timerPersistence = timerPersistence;
+    }
+
 }

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -5,8 +5,6 @@
 
 public interface SchedulerConnector {
 
-	public void connect() throws Exception;
-	public void disconnect() throws Exception;
 	public void save(ProcessJobContext processContext);
 	public boolean remove(ProcessJobHandle jobHandle);
 

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -3,89 +3,21 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
 import org.drools.time.impl.ProcessJobHandle;
 import org.drools.timer.core.connector.SchedulerConnector;
 import org.drools.timer.message.impl.InsertScheduledTimerMessage;
 import org.hornetq.api.core.HornetQException;
-import org.hornetq.api.core.TransportConfiguration;
 import org.hornetq.api.core.client.ClientMessage;
 import org.hornetq.api.core.client.ClientProducer;
 import org.hornetq.api.core.client.ClientSession;
-import org.hornetq.api.core.client.ClientSessionFactory;
-import org.hornetq.api.core.client.HornetQClient;
-import org.hornetq.integration.transports.netty.NettyConnectorFactory;
-import org.hornetq.integration.transports.netty.TransportConstants;
 
 public class HornetQSchedulerConnector implements SchedulerConnector {
 
-	private String DEFAULT_TIMER_MESSAGES_QUEUE = "timerServiceMessages";
-
 	private ClientSession session;
 	private ClientProducer producer;
-	private Integer port;
-	private String address;
-	private boolean connected;
 
-	/**
-	 * Create a HornetQ connector with the Timer Scheduler
-	 * @param address Timer Scheduler address
-	 * @param port Timer Scheduler port
-	 */
-	public HornetQSchedulerConnector(String address, Integer port) {
-		if (address==null) {
-			throw new IllegalArgumentException("address is a required argument");
-		}
-		if (port==null) {
-			throw new IllegalArgumentException("port is a required argument");
-		}
-		this.address = address;
-		this.port = port;
-	}
-	
-	/**
-	 * Create a HornetQ connector to the Timer Scheduler
-	 * @param address Timer Scheduler address
-	 * @param port Timer Scheduler port
-	 * @param timersMessageQueue Must be configured if was changed in the Timer Scheduler configuration.
-	 * 							 Default value: timerServiceMessages
-	 */
-	public HornetQSchedulerConnector(String address, Integer port, String timersMessageQueue) {
-		this(address, port);
-		if (timersMessageQueue==null) {
-			throw new IllegalArgumentException("TimersMessageQueue is a required argument");
-		}
-		this.DEFAULT_TIMER_MESSAGES_QUEUE = timersMessageQueue;
-	}
-
-	/**
-	 * Create the connection with the Timer Scheduler.
-	 */
-	public void connect() throws HornetQException {
-		if (connected) {
-			return;
-		}
-		Map<String, Object> connectionParams = new HashMap<String, Object>();
-		connectionParams.put(TransportConstants.PORT_PROP_NAME, port);
-		connectionParams.put(TransportConstants.HOST_PROP_NAME, address);
-		TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getCanonicalName(), connectionParams);
-		ClientSessionFactory factory = HornetQClient.createClientSessionFactory(transportConfiguration);
-		session = factory.createSession();
-		producer = session.createProducer(DEFAULT_TIMER_MESSAGES_QUEUE);
-		session.start();
-		connected = true;
-	}
-
-	public void disconnect() throws Exception {
-		if (session!= null && !session.isClosed()) {
-			session.close();
-			producer.close();
-		}
-	}
-
 	public void save(ProcessJobContext processContext) {
 		ByteArrayOutputStream baos = new ByteArrayOutputStream();
 		ObjectOutputStream oout;
@@ -111,4 +43,11 @@
 		return true;
 	}
 
+    public void setSession(ClientSession session) {
+        this.session = session;
+    }
+
+    public void setProducer(ClientProducer producer) {
+        this.producer = producer;
+    }
 }

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1,7 @@
+package org.drools.timer.test;
+
+import java.io.Serializable;
+
+public class Buddy implements Serializable{
+
+}


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -12,20 +12,42 @@
 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;
+import org.junit.AfterClass;
 import org.junit.Assert;
-import org.junit.Ignore;
+import org.junit.BeforeClass;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.AbstractApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 public class PersistentTimerProcessTest {
+    
+    private static final String H2_DB_NAME = "persistentTimersTest"; 
+    private static final Logger logger = LoggerFactory.getLogger(PersistentTimerProcessTest.class);
+    private static Server h2Server;
+    
+    @BeforeClass
+    public static void startH2Database() throws Exception {
+        DeleteDbFiles.execute("", H2_DB_NAME, true);
+        h2Server = Server.createTcpServer(new String[0]);
+        h2Server.start();
+    }
 
+    @AfterClass
+    public static void stopH2Database() throws Exception {
+        logger.info( "stoping database" );
+        h2Server.stop();
+        DeleteDbFiles.execute( "", H2_DB_NAME, true );
+    }
+
     @Test
-    @Ignore
     public void scheduleAndTriggerPersistentTimer() throws InterruptedException{
-        String sessionContextLocation = "classpath:/completedProcessSession.xml";
+        String sessionContextLocation = "classpath:/timerProcessSession.xml";
 
         AbstractApplicationContext mainApplicationContext = createMainApplicationContext(sessionContextLocation);
         AbstractApplicationContext executorApplicationContext = createExecutorApplicationContext(sessionContextLocation);

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf	2010-08-12 19:38:20 UTC (rev 34683)
@@ -6,7 +6,7 @@
 
   <header>
     <imports>
-      <import name="org.drools.job.executor.timer.Buddy" />
+      <import name="org.drools.timer.test.Buddy" />
     </imports>
   </header>
 

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml	2010-08-12 19:38:20 UTC (rev 34683)
@@ -57,11 +57,51 @@
           <key>
             <util:constant static-field="org.drools.runtime.EnvironmentName.PROCESS_TIMER_STRATEGY"/>
           </key>
-          <bean class="org.drools.job.executor.timer.MockProcessTimerPersistenceStrategy" />
+          <ref bean="quartzPersistenceStrategy"/>
         </entry>
       </map>
     </property>
   </bean>
+  
+  <!-- persistence strategy configuration -->
+  <bean id="quartzPersistenceStrategy" class="org.drools.timer.core.ProcessTimerQuartzPersistenceStrategy">
+    <property name="connector">
+      <bean class="org.drools.timer.core.connector.impl.HornetQSchedulerConnector">
+        <property name="session" ref="clientSession" />
+        <property name="producer">
+          <bean factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+            <constructor-arg value="timerServiceMessages" />
+          </bean>
+        </property>
+      </bean>
+    </property>
+    <property name="timerPersistence">
+      <bean class="org.drools.timer.persistence.JPATimerPersistence">
+        <property name="entityManagerFactory" ref="entityManagerFactory" />
+      </bean>
+    </property>
+  </bean>
+  
+  <!-- HornetQ configuration -->
+  <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>
+          <value>org.hornetq.integration.transports.netty.NettyConnectorFactory</value>
+        </constructor-arg>
+        <constructor-arg>
+          <map>
+            <entry>
+              <key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME"/></key>
+              <value>5446</value>
+            </entry>
+          </map>
+        </constructor-arg>
+      </bean>
+    </constructor-arg>  
+  </bean>
+  <bean id="hornetQServer" class="java.lang.Object"/>
 
   <!-- persistence configuration -->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -1,59 +1,49 @@
 package org.drools.timer.persistence;
 
 import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import javax.persistence.EntityManagerFactory;
 
 import org.drools.timer.persistence.model.TimerState;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.TransactionCallback;
-import org.springframework.transaction.support.TransactionTemplate;
 
 public class JPATimerPersistence implements TimerPersistence {
 
-	@PersistenceContext
-	private EntityManager em;
-	private PlatformTransactionManager transactionManager;
+	private EntityManagerFactory entityManagerFactory;
 
 	public void save(final TimerState object) {
-		TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
-		txTemplate.execute(new TransactionCallback() {
-			public Object doInTransaction(TransactionStatus status) {
-				em.persist(object);
-				return object;
-			}
-		});
+	    getEntityManager().persist(object);
 	}
 
 	public boolean isExecutable(final long processInstanceId) {
-		TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
-		txTemplate.execute(new TransactionCallback() {
-			public Object doInTransaction(TransactionStatus status) {
-				TimerState timerState = (TimerState) em.createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
-				.setParameter("processInstanceId", processInstanceId).getSingleResult();
-				return timerState.isExecuted();
-			}
-		});
-		return false;
+        TimerState timerState = (TimerState) getEntityManager()
+            .createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+            .setParameter("processInstanceId", processInstanceId)
+            .getSingleResult();
+        return timerState.isExecuted();
 	}
 
 	public TimerState load(long processInstanceId) {
-		TimerState timerState = (TimerState) em.createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
-		.setParameter("processInstanceId", processInstanceId).getSingleResult();
+		TimerState timerState = (TimerState) getEntityManager()
+		    .createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+		    .setParameter("processInstanceId", processInstanceId)
+		    .getSingleResult();
 		return timerState;
 	}
 
 	public void remove(long processInstanceId) {
-		em.createQuery("DELETE t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+	    getEntityManager().createQuery("DELETE t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
 		.setParameter("processInstanceId", processInstanceId).executeUpdate();
 	}
 
-	public void setTransactionManager(PlatformTransactionManager transactionManager) {
-		this.transactionManager = transactionManager;
-	}
+    private EntityManager getEntityManager(){
+        return getEntityManagerFactory().createEntityManager();
+    }
 
-	public PlatformTransactionManager getTransactionManager() {
-		return transactionManager;
-	}
+    public EntityManagerFactory getEntityManagerFactory() {
+        return entityManagerFactory;
+    }
 
+    public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
+        this.entityManagerFactory = entityManagerFactory;
+    }
+
 }

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml	2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence       http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd    http://java.sun.com/xml/ns/persistence/orm     http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
+  <persistence-unit name="org.drools.timer.persistence.jpa" transaction-type="JTA">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <jta-data-source>jdbc/timersDS</jta-data-source>        
+    <class>org.drools.timer.persistence.model.TimerState</class>
+    <properties>
+      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>          
+    <property name="hibernate.max_fetch_depth" value="3"/>
+    <property name="hibernate.hbm2ddl.auto" value="update" />
+      <property name="hibernate.show_sql" value="true" /> 
+      <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
+  </properties>        
+  </persistence-unit>
+</persistence>
\ No newline at end of file


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties	2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1 @@
+java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
\ No newline at end of file


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml	2010-08-12 19:38:20 UTC (rev 34683)
@@ -8,24 +8,24 @@
                       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="schedulerService" class="org.drools.timer.scheduler.TimerSchedulerHornetQService">
     <property name="consumer" ref="timerMessageConsumer"/>
     <property name="timerScheduler"  ref="timerScheduler"/>
   </bean>
-
+  
   <bean id="timerMessageConsumer" factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
     <constructor-arg value="timerServiceMessages"/>
   </bean>
-
-  <bean id="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler" >
+  
+  <bean id="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler">
     <property name="scheduler" ref="scheduler" />
+    <property name="timerPersistence" ref="jpaTimerPersistence" />
+    <property name="session" ref="clientSession" />
+    <property name="timerExecutorConnector" ref="timerMessageProducer" />
   </bean>
 
   <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
-    <!-- Create a  datasource and remove the quartz datasource properties -->
-    <!-- <property name="dataSource">-->
-    <!--   <ref bean="DBDataSource"/>-->
-    <!-- </property>-->
     <property name="autoStartup"><value>true</value></property>
     <property name="applicationContextSchedulerContextKey"><value>applicationContext</value></property> 
     <property name="waitForJobsToCompleteOnShutdown"><value>true</value></property> 
@@ -35,21 +35,6 @@
         <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
         <prop key="org.quartz.threadPool.threadCount">5</prop>
         <prop key="org.quartz.threadPool.threadPriority">5</prop>
-        <!-- Job store -->
-        <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
-        <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
-        <prop key="org.quartz.jobStore.driverDelegateClass">${jdbc.quartz.delegateClassName}</prop>
-        <prop key="org.quartz.jobStore.useProperties">false</prop>
-        <prop key="org.quartz.jobStore.isClustered">true</prop>
-        <prop key="org.quartz.jobStore.clusterCheckinInterval">10000</prop>
-        <prop key="org.quartz.jobStore.dataSource">quartzDS</prop> 
-        <!-- DataSource -->
-        <prop key="org.quartz.dataSource.quartzDS.driver">${jdbc.driverClassName}</prop>
-        <prop key="org.quartz.dataSource.quartzDS.URL">${jdbc.url}</prop>
-        <prop key="org.quartz.dataSource.quartzDS.user">${jdbc.username}</prop>
-        <prop key="org.quartz.dataSource.quartzDS.password">${jdbc.password}</prop>
-        <prop key="org.quartz.dataSource.quartzDS.maxConnections">5</prop>
-        <!-- <prop key="org.quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?</prop>-->
         <!-- Plugins -->
         <prop key="org.quartz.plugin.shutdownhook.class">org.quartz.plugins.management.ShutdownHookPlugin</prop>
         <prop key="org.quartz.plugin.shutdownhook.cleanShutdown">true</prop>
@@ -59,44 +44,59 @@
       </props>
     </property>
   </bean>
-
-
-  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-    <property name="locations">
-      <value>classpath:jdbc.properties</value>
-    </property>
+  
+  <bean id="jpaTimerPersistence" class="org.drools.timer.persistence.JPATimerPersistence" >
+    <property name="entityManagerFactory" ref="entityManagerFactory" />
   </bean>
+  
+  <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start"/>
 
   <bean id="dataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init" destroy-method="close">
-    <property name="className" value="" />
+    <property name="className" value="org.h2.jdbcx.JdbcDataSource" />
     <property name="uniqueName" value="jdbc/timersDS" />
     <property name="minPoolSize" value="0" />
     <property name="maxPoolSize" value="3" />
     <property name="allowLocalTransactions" value="true" />
     <property name="driverProperties">
 	  <props>
-	    <prop key="user"></prop>
-        <prop key="password"></prop>
-        <prop key="URL"></prop>
+	    <prop key="user">sa</prop>
+        <prop key="password">sasa</prop>
+        <prop key="URL">jdbc:h2:mem:mydb</prop>
 	  </props>
     </property>
   </bean>
 
-  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+  <!-- Bitronix Transaction Manager embedded configuration -->
+  <bean id="btmConfig" factory-method="getConfiguration" class="bitronix.tm.TransactionManagerServices">
+    <property name="serverId" value="spring-btm" />
+  </bean>
 
-  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" depends-on="dataSource"/>
+  <!-- create BTM transaction manager -->
+  <bean id="bitronixTransactionManager" factory-method="getTransactionManager" class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig, dataSource" destroy-method="shutdown" />
 
-  <bean class="org.springframework.orm.jpa.JpaTransactionManager">
-    <property name="entityManagerFactory" ref="entityManagerFactory" />
+  <!-- Spring JtaTransactionManager -->
+  <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
+    <property name="transactionManager" ref="bitronixTransactionManager" />
+    <property name="userTransaction" ref="bitronixTransactionManager" />
   </bean>
 
+  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" depends-on="transactionManager">
+    <property name="persistenceUnitName" value="org.drools.timer.persistence.jpa"/>
+  </bean>
+
+  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+
   <bean id="timerSchedulerHornetQServer" class="org.drools.timer.scheduler.TimerSchedulerHornetQServer" init-method="start" destroy-method="stop">
     <property name="consumer" ref="timerMessageConsumer"/>
     <property name="timerScheduler"  ref="timerScheduler"/>
   </bean>
-    
+
+  <bean id="timerMessageProducer" factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+    <constructor-arg value="executeTimerMessages" />
+  </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" >
     <constructor-arg>
       <bean class="org.hornetq.api.core.TransportConfiguration">
@@ -106,10 +106,6 @@
         <constructor-arg>
           <map>
             <entry>
-              <key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.HOST_PROP_NAME"/></key>
-              <value>localhost</value>
-            </entry>
-            <entry>
               <key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME"/></key>
               <value>5446</value>
             </entry>
@@ -119,5 +115,14 @@
     </constructor-arg>  
   </bean>
 
+  <!-- HornetQ server starting queue named messageBoardQueue -->
   <bean id="hornetQServer" class="java.lang.Object"/>
+
+  <!--
+  <bean id="timerMessageHornetQClient" class="org.drools.timer.scheduler.TimerMessageHornetQClient">
+    <property name="session" ref="clientSession" />
+    <property name="producer" ref="timerMessageProducer" />
+  </bean>
+  -->
+  
 </beans>
\ No newline at end of file

Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java	2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java	2010-08-12 19:38:20 UTC (rev 34683)
@@ -16,8 +16,6 @@
 import org.drools.runtime.EnvironmentName;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.core.ProcessTimerQuartzPersistenceStrategy;
-import org.drools.timer.core.connector.impl.HornetQSchedulerConnector;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 import bitronix.tm.TransactionManagerServices;
@@ -36,7 +34,7 @@
 		Environment env = KnowledgeBaseFactory.newEnvironment();
 		env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
 		env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
-		env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new ProcessTimerQuartzPersistenceStrategy(new HornetQSchedulerConnector("127.0.0.1", 5446)));
+		//env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new ProcessTimerQuartzPersistenceStrategy(new HornetQSchedulerConnector("127.0.0.1", 5446)));
 		env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());
 
 		StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );



More information about the jboss-svn-commits mailing list