[jboss-svn-commits] JBL Code SVN: r34621 - in labs/jbossrules/branches/5_1_20100802_esteban_diega: drools-process/drools-persistent-timer and 28 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 10 10:29:28 EDT 2010
Author: lucazamador
Date: 2010-08-10 10:29:27 -0400 (Tue, 10 Aug 2010)
New Revision: 34621
Added:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/
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/TimerPersistence.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/META-INF/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/META-INF/persistence.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jndi.properties
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/IntegrationTest.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
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/QuartzDBStructureInit.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/TimerMessageHornetQClient.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/META-INF/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/META-INF/persistence.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/TimerProcess.rf
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/contextTest.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jdbc.properties
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jndi.properties
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/tables_h2.sql
Removed:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/tables_mysql_innodb.sql
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jdbc.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/impl/HornetQSchedulerConnector.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/context.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml
Log:
JBRULES-2616: Process persistent timers
- Timers JPA persistence. Quartz jobs persistence. Initial tests created.
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-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -22,7 +22,11 @@
<groupId>org.drools</groupId>
<artifactId>drools-timer-messages</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-persistence</artifactId>
+ </dependency>
+
<!-- HornetQ dependencies -->
<dependency>
<groupId>org.hornetq</groupId>
@@ -39,7 +43,7 @@
<artifactId>netty</artifactId>
<version>${netty.version}</version>
</dependency>
-
+
<!-- Spring Dependencies -->
<dependency>
<groupId>org.springframework</groupId>
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-10 12:03:17 UTC (rev 34620)
+++ 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-10 14:29:27 UTC (rev 34621)
@@ -5,23 +5,36 @@
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;
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);
- // Create record in DB
+ TimerState timerState = new TimerState();
+ timerState.setProcessInstanceId(processContext.getProcessInstanceId());
+ timerPersistence.save(timerState);
}
public boolean remove(ProcessJobHandle jobHandle) {
connector.remove(jobHandle);
+ timerPersistence.remove(jobHandle.getProcessId());
return false;
}
+
}
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-10 12:03:17 UTC (rev 34620)
+++ 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-10 14:29:27 UTC (rev 34621)
@@ -47,7 +47,7 @@
}
/**
- * Create a HornetQ connector with the Timer Scheduler
+ * 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.
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence
___________________________________________________________________
Name: svn:ignore
+ .settings
target
.classpath
.project
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/pom.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools-persistent-timer</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0</version>
+ </parent>
+ <artifactId>drools-timer-persistence</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Timers :: Persistence</name>
+
+ <dependencies>
+
+ <!-- Hibernate -->
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-commons-annotations</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+
+ <!-- HSQLDB -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.btm</groupId>
+ <artifactId>btm</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- SL4J dependencies -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.5.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.2</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/pom.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/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 (rev 0)
+++ 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-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,59 @@
+package org.drools.timer.persistence;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+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;
+
+ 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;
+ }
+ });
+ }
+
+ 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;
+ }
+
+ public TimerState load(long processInstanceId) {
+ TimerState timerState = (TimerState) em.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")
+ .setParameter("processInstanceId", processInstanceId).executeUpdate();
+ }
+
+ public void setTransactionManager(PlatformTransactionManager transactionManager) {
+ this.transactionManager = transactionManager;
+ }
+
+ public PlatformTransactionManager getTransactionManager() {
+ return transactionManager;
+ }
+
+}
Property changes on: 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
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,15 @@
+package org.drools.timer.persistence;
+
+import org.drools.timer.persistence.model.TimerState;
+
+public interface TimerPersistence {
+
+ public void save(TimerState object);
+
+ public TimerState load(long processInstanceId);
+
+ public boolean isExecutable(long processInstanceId);
+
+ public void remove(long processInstanceId);
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/TimerPersistence.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,35 @@
+package org.drools.timer.persistence.model;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+ at Entity
+public class TimerState {
+
+ private Integer id;
+ private Long processInstanceId;
+ private boolean executed;
+
+ @Id
+ @GeneratedValue
+ public Integer getId() {
+ return id;
+ }
+ public void setId(Integer id) {
+ this.id = id;
+ }
+ public Long getProcessInstanceId() {
+ return processInstanceId;
+ }
+ public void setProcessInstanceId(Long processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ }
+ public boolean isExecuted() {
+ return executed;
+ }
+ public void setExecuted(boolean executed) {
+ this.executed = executed;
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/model/TimerState.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/pom.xml 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -17,6 +17,11 @@
<artifactId>drools-timer-messages</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-persistence</artifactId>
+ </dependency>
+
<!-- HornetQ dependencies -->
<dependency>
<groupId>org.hornetq</groupId>
@@ -57,8 +62,32 @@
<artifactId>spring-tx</artifactId>
<version>${springframework-version}</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </dependency>
+ <!-- HSQLDB -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Bixtronix -->
<dependency>
+ <groupId>org.codehaus.btm</groupId>
+ <artifactId>btm</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Quartz -->
+ <dependency>
<groupId>org.opensymphony.quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.6.1</version>
@@ -75,12 +104,6 @@
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
-
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.13</version>
- </dependency>
<!-- SL4J dependencies -->
<dependency>
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerScheduler.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -3,6 +3,8 @@
import org.drools.timer.message.TimerMessage;
import org.drools.timer.message.impl.InsertScheduledTimerMessage;
import org.drools.timer.message.impl.RemoveScheduledTimerMessage;
+import org.drools.timer.persistence.TimerPersistence;
+import org.drools.timer.persistence.model.TimerState;
import org.drools.timer.scheduler.job.TimerExecutorJob;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
@@ -15,24 +17,37 @@
private static final Logger logger = LoggerFactory.getLogger(TimerScheduler.class);
+ private TimerPersistence timerPersistence;
private Scheduler scheduler;
private void process(InsertScheduledTimerMessage message) {
JobDetail job = new JobDetail(message.getProcessInstanceId().toString(), Scheduler.DEFAULT_GROUP, TimerExecutorJob.class);
job.getJobDataMap().put(TimerExecutorJob.PROCESS_INSTANCE_ID, message.getProcessInstanceId());
- SimpleTrigger trigger = new SimpleTrigger("trigger" + message.getProcessInstanceId().toString(), Scheduler.DEFAULT_GROUP, message.getActivationTime());
+ SimpleTrigger trigger = new SimpleTrigger(createUniqueTimerJobId(message), Scheduler.DEFAULT_GROUP, message.getActivationTime());
try {
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
logger.error("Error scheduling timer " + message.getProcessInstanceId(), e);
}
logger.info("new timer scheduled");
+ TimerState timerState = new TimerState();
+ timerState.setProcessInstanceId(message.getProcessInstanceId());
+ timerPersistence.save(timerState);
+ timerPersistence.isExecutable(message.getProcessInstanceId());
}
private void process(RemoveScheduledTimerMessage message) {
- System.out.println("process RemoveScheduledTimerMessage");
+ try {
+ scheduler.deleteJob(createUniqueTimerJobId(message), Scheduler.DEFAULT_GROUP);
+ } catch (SchedulerException e) {
+ logger.error("Error deleting scheduled timer " + message.getProcessInstanceId(), e);
+ }
}
+ private String createUniqueTimerJobId(TimerMessage message) {
+ return "trigger" + message.getProcessInstanceId().toString();
+ }
+
public void process(TimerMessage message) {
if (message instanceof InsertScheduledTimerMessage) {
process((InsertScheduledTimerMessage)message);
@@ -45,6 +60,14 @@
}
}
+ public void setTimerPersistence(TimerPersistence timerPersistence) {
+ this.timerPersistence = timerPersistence;
+ }
+
+ public TimerPersistence getTimerPersistence() {
+ return timerPersistence;
+ }
+
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/context.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/context.xml 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/context.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -14,6 +14,29 @@
</property>
</bean>
+ <bean id="dataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init" destroy-method="close">
+ <property name="className" value="" />
+ <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>
+ </props>
+ </property>
+ </bean>
+
+ <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+
+ <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" depends-on="dataSource"/>
+
+ <bean class="org.springframework.orm.jpa.JpaTransactionManager">
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+
<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"/>
Deleted: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/tables_mysql_innodb.sql
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/tables_mysql_innodb.sql 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/tables_mysql_innodb.sql 2010-08-10 14:29:27 UTC (rev 34621)
@@ -1,154 +0,0 @@
-#
-# In your Quartz properties file, you'll need to set
-# org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-#
-#
-# By: Ron Cordell - roncordell
-# I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM.
-
-DROP TABLE IF EXISTS QRTZ_JOB_LISTENERS;
-DROP TABLE IF EXISTS QRTZ_TRIGGER_LISTENERS;
-DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
-DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
-DROP TABLE IF EXISTS QRTZ_LOCKS;
-DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
-DROP TABLE IF EXISTS QRTZ_CALENDARS;
-CREATE TABLE QRTZ_JOB_DETAILS(
-JOB_NAME VARCHAR(200) NOT NULL,
-JOB_GROUP VARCHAR(200) NOT NULL,
-DESCRIPTION VARCHAR(250) NULL,
-JOB_CLASS_NAME VARCHAR(250) NOT NULL,
-IS_DURABLE VARCHAR(1) NOT NULL,
-IS_VOLATILE VARCHAR(1) NOT NULL,
-IS_STATEFUL VARCHAR(1) NOT NULL,
-REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
-JOB_DATA BLOB NULL,
-PRIMARY KEY (JOB_NAME,JOB_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_JOB_LISTENERS (
-JOB_NAME VARCHAR(200) NOT NULL,
-JOB_GROUP VARCHAR(200) NOT NULL,
-JOB_LISTENER VARCHAR(200) NOT NULL,
-PRIMARY KEY (JOB_NAME,JOB_GROUP,JOB_LISTENER),
-INDEX (JOB_NAME, JOB_GROUP),
-FOREIGN KEY (JOB_NAME,JOB_GROUP)
-REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_TRIGGERS (
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-JOB_NAME VARCHAR(200) NOT NULL,
-JOB_GROUP VARCHAR(200) NOT NULL,
-IS_VOLATILE VARCHAR(1) NOT NULL,
-DESCRIPTION VARCHAR(250) NULL,
-NEXT_FIRE_TIME BIGINT(13) NULL,
-PREV_FIRE_TIME BIGINT(13) NULL,
-PRIORITY INTEGER NULL,
-TRIGGER_STATE VARCHAR(16) NOT NULL,
-TRIGGER_TYPE VARCHAR(8) NOT NULL,
-START_TIME BIGINT(13) NOT NULL,
-END_TIME BIGINT(13) NULL,
-CALENDAR_NAME VARCHAR(200) NULL,
-MISFIRE_INSTR SMALLINT(2) NULL,
-JOB_DATA BLOB NULL,
-PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
-INDEX (JOB_NAME, JOB_GROUP),
-FOREIGN KEY (JOB_NAME,JOB_GROUP)
-REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-REPEAT_COUNT BIGINT(7) NOT NULL,
-REPEAT_INTERVAL BIGINT(12) NOT NULL,
-TIMES_TRIGGERED BIGINT(10) NOT NULL,
-PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
-INDEX (TRIGGER_NAME, TRIGGER_GROUP),
-FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
-REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_CRON_TRIGGERS (
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-CRON_EXPRESSION VARCHAR(120) NOT NULL,
-TIME_ZONE_ID VARCHAR(80),
-PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
-INDEX (TRIGGER_NAME, TRIGGER_GROUP),
-FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
-REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_BLOB_TRIGGERS (
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-BLOB_DATA BLOB NULL,
-PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
-INDEX (TRIGGER_NAME, TRIGGER_GROUP),
-FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
-REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_TRIGGER_LISTENERS (
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-TRIGGER_LISTENER VARCHAR(200) NOT NULL,
-PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_LISTENER),
-INDEX (TRIGGER_NAME, TRIGGER_GROUP),
-FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
-REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_CALENDARS (
-CALENDAR_NAME VARCHAR(200) NOT NULL,
-CALENDAR BLOB NOT NULL,
-PRIMARY KEY (CALENDAR_NAME))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-PRIMARY KEY (TRIGGER_GROUP))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_FIRED_TRIGGERS (
-ENTRY_ID VARCHAR(95) NOT NULL,
-TRIGGER_NAME VARCHAR(200) NOT NULL,
-TRIGGER_GROUP VARCHAR(200) NOT NULL,
-IS_VOLATILE VARCHAR(1) NOT NULL,
-INSTANCE_NAME VARCHAR(200) NOT NULL,
-FIRED_TIME BIGINT(13) NOT NULL,
-PRIORITY INTEGER NOT NULL,
-STATE VARCHAR(16) NOT NULL,
-JOB_NAME VARCHAR(200) NULL,
-JOB_GROUP VARCHAR(200) NULL,
-IS_STATEFUL VARCHAR(1) NULL,
-REQUESTS_RECOVERY VARCHAR(1) NULL,
-PRIMARY KEY (ENTRY_ID))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_SCHEDULER_STATE (
-INSTANCE_NAME VARCHAR(200) NOT NULL,
-LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
-CHECKIN_INTERVAL BIGINT(13) NOT NULL,
-PRIMARY KEY (INSTANCE_NAME))
-ENGINE=InnoDB;
-
-CREATE TABLE QRTZ_LOCKS (
-LOCK_NAME VARCHAR(40) NOT NULL,
-PRIMARY KEY (LOCK_NAME))
-ENGINE=InnoDB;
-
-INSERT INTO QRTZ_LOCKS values('TRIGGER_ACCESS');
-INSERT INTO QRTZ_LOCKS values('JOB_ACCESS');
-INSERT INTO QRTZ_LOCKS values('CALENDAR_ACCESS');
-INSERT INTO QRTZ_LOCKS values('STATE_ACCESS');
-INSERT INTO QRTZ_LOCKS values('MISFIRE_ACCESS');
-commit;
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/META-INF/persistence.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -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-scheduler/src/test/resources/META-INF/persistence.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -8,26 +8,57 @@
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 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <value>classpath:jdbc.properties</value>
+ <bean id="dataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init" destroy-method="close">
+ <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">sa</prop>
+ <prop key="password">sasa</prop>
+ <prop key="URL">jdbc:h2:mem:mydb</prop>
+ </props>
</property>
</bean>
+ <!-- Bitronix Transaction Manager embedded configuration -->
+ <bean id="btmConfig" factory-method="getConfiguration" class="bitronix.tm.TransactionManagerServices">
+ <property name="serverId" value="spring-btm" />
+ </bean>
+
+ <!-- create BTM transaction manager -->
+ <bean id="bitronixTransactionManager" factory-method="getTransactionManager" class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig, dataSource" destroy-method="shutdown" />
+
+ <!-- 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="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler" >
<property name="scheduler" ref="scheduler" />
+ <property name="timerPersistence" ref="jpaTimerPersistence" />
</bean>
+ <bean id="jpaTimerPersistence" class="org.drools.timer.persistence.JPATimerPersistence" >
+ <property name="transactionManager" ref="transactionManager" />
+ </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>
@@ -37,21 +68,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>
Deleted: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jdbc.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jdbc.properties 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jdbc.properties 2010-08-10 14:29:27 UTC (rev 34621)
@@ -1,5 +0,0 @@
-jdbc.quartz.delegateClassName=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-jdbc.driverClassName=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://localhost:3306/persistent_timers
-jdbc.username=quartz
-jdbc.password=quartz
\ No newline at end of file
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jndi.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jndi.properties (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/jndi.properties 2010-08-10 14:29:27 UTC (rev 34621)
@@ -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-scheduler/src/test/resources/jndi.properties
___________________________________________________________________
Name: svn:eol-style
+ native
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests
___________________________________________________________________
Name: svn:ignore
+ .settings
.classpath
.project
target
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/pom.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools-persistent-timer</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.1.0</version>
+ </parent>
+
+ <artifactId>drools-timer-tests</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Timers :: Tests</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</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-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-persistence</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-messages</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-scheduler</artifactId>
+ </dependency>
+
+ <!-- HornetQ/Quartz/Spring dependencies that should be resolved automatically by maven -->
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-core</artifactId>
+ <version>${hornetq.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-transports</artifactId>
+ <version>${hornetq.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <version>${netty.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${springframework-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </dependency>
+
+ <!-- Quartz -->
+ <dependency>
+ <groupId>org.opensymphony.quartz</groupId>
+ <artifactId>quartz</artifactId>
+ <version>1.6.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+
+ <!-- HSQLDB -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Bixtronix -->
+ <dependency>
+ <groupId>org.codehaus.btm</groupId>
+ <artifactId>btm</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- SL4J dependencies -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.5.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.4.2</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/pom.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/IntegrationTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/IntegrationTest.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/IntegrationTest.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,34 @@
+package org.drools.timer.test;
+
+import java.util.Calendar;
+
+import junit.framework.Assert;
+
+import org.drools.timer.message.impl.InsertScheduledTimerMessage;
+import org.drools.timer.scheduler.TimerSchedulerHornetQServer;
+import org.drools.timer.test.helper.TimerMessageHornetQClient;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class IntegrationTest {
+
+ @Test
+ public void simple() throws InterruptedException {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("contextTest.xml");
+ TimerSchedulerHornetQServer timerMessageServer = (TimerSchedulerHornetQServer) context.getBean("timerSchedulerHornetQServer");
+ Assert.assertNotNull(timerMessageServer);
+
+ TimerMessageHornetQClient client = (TimerMessageHornetQClient) context.getBean("timerMessageHornetQClient");
+ Assert.assertNotNull(client);
+
+ InsertScheduledTimerMessage message = new InsertScheduledTimerMessage();
+ message.setProcessInstanceId(12L);
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.SECOND, 5);
+ message.setActivationTime(calendar.getTime());
+ client.write(message);
+
+ Thread.sleep(10000);
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/IntegrationTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ 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-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,59 @@
+package org.drools.timer.test;
+
+import javax.persistence.EntityManagerFactory;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.base.MapGlobalResolver;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.impl.ClassPathResource;
+import org.drools.persistence.jpa.JPAKnowledgeService;
+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.core.ProcessTimerQuartzPersistenceStrategy;
+import org.drools.timer.core.connector.impl.HornetQSchedulerConnector;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import bitronix.tm.TransactionManagerServices;
+
+public class JPAPersistentTimerTest extends TestCase {
+
+ public void testPersistenceTimer() throws Exception {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("contextTest.xml");
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add(new ClassPathResource("TimerProcess.rf"), ResourceType.DRF);
+ KnowledgeBase kbase = kbuilder.newKnowledgeBase();
+
+ EntityManagerFactory emf = (EntityManagerFactory) context.getBean("entityManagerFactory");
+
+ 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.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());
+
+ StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+ int id = ksession.getId();
+ ksession.dispose();
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+ ksession.dispose();
+
+// assertNotNull(TestWorkItemHandler.getInstance().getWorkItem());
+
+ Thread.sleep(5000);
+
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( id, kbase, null, env );
+ processInstance = ksession.getProcessInstance( processInstance.getId() );
+ assertNull( processInstance );
+ }
+
+}
Property changes on: 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
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/QuartzDBStructureInit.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/QuartzDBStructureInit.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/QuartzDBStructureInit.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,90 @@
+package org.drools.timer.test.helper;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class QuartzDBStructureInit {
+
+ private static final Logger logger = LoggerFactory.getLogger(QuartzDBStructureInit.class);
+
+ private Connection connection;
+ private String dataSource;
+ private String sqlFile;
+
+ public void connect() throws SQLException, NamingException, IOException {
+ logger.info("Initializing initial Quartz Database Structure");
+ Context ctx = new InitialContext();
+ DataSource ds = (DataSource) ctx.lookup(dataSource);
+ connection = ds.getConnection();
+ Statement statement = connection.createStatement();
+ statement.execute(readSQLStatementsFile());
+ statement.close();
+ logger.info("Quartz Database Structure created.");
+ }
+
+ private String readSQLStatementsFile() throws IOException {
+ InputStream inputStream = QuartzDBStructureInit.class.getResourceAsStream(sqlFile);
+ StringBuilder sqlStatement = new StringBuilder();
+ BufferedInputStream bis = new BufferedInputStream(inputStream);
+ BufferedReader br = new BufferedReader(new InputStreamReader(bis));
+ String line;
+ while ((line = br.readLine()) != null) {
+ sqlStatement.append(line);
+ sqlStatement.append(System.getProperty("line.separator"));
+ }
+ br.close();
+ inputStream.close();
+ return sqlStatement.toString();
+ }
+
+ public void disconnect() throws SQLException {
+ connection.close();
+ }
+
+ public void setDataSource(String dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ public String getDataSource() {
+ return dataSource;
+ }
+
+ public void setSqlFile(String sqlFile) {
+ this.sqlFile = sqlFile;
+ }
+
+ public String getSqlFile() {
+ return sqlFile;
+ }
+
+ public static void main(String[] args) throws IOException {
+ InputStream inputStream = QuartzDBStructureInit.class.getResourceAsStream("/tables_h2.sql");
+ StringBuilder contents = new StringBuilder();
+ BufferedInputStream bis = new BufferedInputStream(inputStream);
+ BufferedReader br = new BufferedReader(new InputStreamReader(bis));
+ String line;
+ while ((line = br.readLine()) != null) {
+ contents.append(line);
+ contents.append(System.getProperty("line.separator"));
+ }
+ //Close the input stream
+ br.close();
+ inputStream.close();
+ System.out.println(contents);
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/QuartzDBStructureInit.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/TimerMessageHornetQClient.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/TimerMessageHornetQClient.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/TimerMessageHornetQClient.java 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,49 @@
+package org.drools.timer.test.helper;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import org.hornetq.api.core.HornetQException;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.hornetq.api.core.client.ClientSession;
+
+public class TimerMessageHornetQClient {
+
+ private ClientSession session;
+ private ClientProducer producer;
+
+ public void write(Object message) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oout;
+ try {
+ oout = new ObjectOutputStream(baos);
+ oout.writeObject(message);
+ ClientMessage clientMessage = session.createMessage(true);
+ clientMessage.getBodyBuffer().writeBytes(baos.toByteArray());
+ producer.send(clientMessage);
+ } catch (IOException e) {
+ throw new RuntimeException("Error creating message", e);
+ } catch (HornetQException e) {
+ throw new RuntimeException("Error writing message", e);
+ }
+ }
+
+ public void setSession(ClientSession session) {
+ this.session = session;
+ }
+
+ public ClientSession getSession() {
+ return session;
+ }
+
+ public void setProducer(ClientProducer producer) {
+ this.producer = producer;
+ }
+
+ public ClientProducer getProducer() {
+ return producer;
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/helper/TimerMessageHornetQClient.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/META-INF/persistence.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,23 @@
+<?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.persistence.jpa" transaction-type="JTA">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <jta-data-source>jdbc/timersDS</jta-data-source>
+ <class>org.drools.persistence.session.SessionInfo</class>
+ <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
+ <class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>
+ <class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>
+ <class>org.drools.persistence.processinstance.variabletypes.SerializablePersistedVariable</class>
+ <class>org.drools.persistence.processinstance.WorkItemInfo</class>
+ <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-tests/src/test/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-tests/src/test/resources/TimerProcess.rf
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/TimerProcess.rf (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/TimerProcess.rf 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://drools.org/drools-5.0/process"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
+ type="RuleFlow" name="ruleflow" id="org.drools.test.TestProcess" package-name="org.drools.test" >
+
+ <header>
+ </header>
+
+ <nodes>
+ <start id="1" name="Start" />
+ <humanTask id="2" name="User Task" >
+ <work name="Human Task" >
+ </work>
+ <timers>
+ <timer id="1" delay="1000" >
+ <action type="expression" dialect="java" >System.out.println("Timer triggered");
+((org.drools.process.instance.ProcessInstance) kcontext.getProcessInstance()).setState(org.drools.runtime.process.ProcessInstance.STATE_ABORTED);</action>
+ </timer>
+ </timers>
+ </humanTask>
+ <end id="3" name="End" />
+ </nodes>
+
+ <connections>
+ <connection from="1" to="2" />
+ <connection from="2" to="3" />
+ </connections>
+
+</process>
\ No newline at end of file
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/TimerProcess.rf
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/contextTest.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/contextTest.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/contextTest.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,175 @@
+<?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"
+ 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="dataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init" destroy-method="close">
+ <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">sa</prop>
+ <prop key="password">sasa</prop>
+ <prop key="URL">jdbc:h2:mem:mydb</prop>
+ </props>
+ </property>
+ </bean>
+
+ <!-- Bitronix Transaction Manager embedded configuration -->
+ <bean id="btmConfig" factory-method="getConfiguration" class="bitronix.tm.TransactionManagerServices">
+ <property name="serverId" value="spring-btm" />
+ </bean>
+
+ <!-- create BTM transaction manager -->
+ <bean id="bitronixTransactionManager" factory-method="getTransactionManager" class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig, dataSource" destroy-method="shutdown" />
+
+ <!-- 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.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="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler" >
+ <property name="scheduler" ref="scheduler" />
+ <property name="timerPersistence" ref="jpaTimerPersistence" />
+ </bean>
+
+ <bean id="jpaTimerPersistence" class="org.drools.timer.persistence.JPATimerPersistence" >
+ <property name="transactionManager" ref="transactionManager" />
+ </bean>
+
+ <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" depends-on="quartzDBStructureInit" >
+ <!-- Quartz Persistence -->
+ <property name="dataSource">
+ <ref bean="dataSource"/>
+ </property>
+ <property name="autoStartup"><value>true</value></property>
+ <property name="applicationContextSchedulerContextKey"><value>applicationContext</value></property>
+ <property name="waitForJobsToCompleteOnShutdown"><value>true</value></property>
+ <property name="quartzProperties">
+ <props>
+ <!-- ThreadPool -->
+ <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.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.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>
+ <prop key="org.quartz.plugin.triggHistory.class">org.quartz.plugins.history.LoggingTriggerHistoryPlugin</prop>
+ <prop key="org.quartz.plugin.triggHistory.triggerFiredMessage">Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}</prop>
+ <prop key="org.quartz.plugin.triggHistory.triggerCompleteMessage">Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9}</prop>
+ </props>
+ </property>
+ </bean>
+
+ <bean id="quartzDBStructureInit" class="org.drools.timer.test.helper.QuartzDBStructureInit" init-method="connect" destroy-method="disconnect">
+ <property name="dataSource" value="jdbc/timersDS" />
+ <property name="sqlFile" value="/tables_h2.sql" />
+ </bean>
+
+ <!-- Test Bean -->
+ <bean id="timerMessageHornetQClient" class="org.drools.timer.test.helper.TimerMessageHornetQClient">
+ <property name="session" ref="clientSession" />
+ <property name="producer" ref="timerMessageProducer" />
+ </bean>
+
+ <!-- Test Bean -->
+ <bean id="timerMessageProducer" factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+ <constructor-arg value="timerServiceMessages" />
+ </bean>
+
+ <!-- HornetQ session for queue messageBoardQueue -->
+ <bean id="timerMessageConsumer" factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
+ <constructor-arg value="timerServiceMessages"/>
+ </bean>
+
+ <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start"/>
+
+ <!-- client connection with the HornetQ server -->
+ <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>
+
+ <!-- HornetQ server starting queue named messageBoardQueue -->
+ <bean id="hornetQServer" class="org.hornetq.core.server.HornetQServers" factory-method="newHornetQServer" init-method="start" destroy-method="stop">
+ <constructor-arg>
+ <bean class="org.hornetq.core.config.impl.ConfigurationImpl">
+ <property name="persistenceEnabled" value="false"/>
+ <property name="securityEnabled" value="false"/>
+ <property name="clustered" value="false"/>
+ <property name="queueConfigurations">
+ <list>
+ <bean class="org.hornetq.core.server.cluster.QueueConfiguration">
+ <constructor-arg name="address" value="timerServiceMessages"/>
+ <constructor-arg name="name" value="timerServiceMessages"/>
+ <constructor-arg name="filterString"><null/></constructor-arg>
+ <constructor-arg name="durable" value="true"/>
+ </bean>
+ </list>
+ </property>
+ <property name="acceptorConfigurations">
+ <set>
+ <bean class="org.hornetq.api.core.TransportConfiguration">
+ <constructor-arg>
+ <value>org.hornetq.integration.transports.netty.NettyAcceptorFactory</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>
+ </set>
+ </property>
+ </bean>
+ </constructor-arg>
+ </bean>
+
+</beans>
\ No newline at end of file
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/contextTest.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jdbc.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jdbc.properties (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jdbc.properties 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,5 @@
+jdbc.quartz.delegateClassName=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+jdbc.driverClassName=com.mysql.jdbc.Driver
+jdbc.url=jdbc:mysql://localhost:3306/persistent_timers
+jdbc.username=quartz
+jdbc.password=quartz
\ No newline at end of file
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jdbc.properties
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jndi.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jndi.properties (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/jndi.properties 2010-08-10 14:29:27 UTC (rev 34621)
@@ -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-tests/src/test/resources/jndi.properties
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/tables_h2.sql
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/tables_h2.sql (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/tables_h2.sql 2010-08-10 14:29:27 UTC (rev 34621)
@@ -0,0 +1,238 @@
+-- Thanks to Amir Kibbar and Peter Rietzler for contributing the schema for H2 database,
+-- and verifying that it works with Quartz's StdJDBCDelegate
+--
+-- Note, Quartz depends on row-level locking which means you must use the MVCC=TRUE
+-- setting on your H2 database, or you will experience dead-locks
+--
+--
+-- In your Quartz properties file, you'll need to set
+-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+
+CREATE TABLE QRTZ_CALENDARS (
+ CALENDAR_NAME VARCHAR (200) NOT NULL ,
+ CALENDAR IMAGE NOT NULL
+);
+
+CREATE TABLE QRTZ_CRON_TRIGGERS (
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ CRON_EXPRESSION VARCHAR (120) NOT NULL ,
+ TIME_ZONE_ID VARCHAR (80)
+);
+
+CREATE TABLE QRTZ_FIRED_TRIGGERS (
+ ENTRY_ID VARCHAR (95) NOT NULL ,
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ IS_VOLATILE BOOLEAN NOT NULL ,
+ INSTANCE_NAME VARCHAR (200) NOT NULL ,
+ FIRED_TIME BIGINT NOT NULL ,
+ PRIORITY INTEGER NOT NULL ,
+ STATE VARCHAR (16) NOT NULL,
+ JOB_NAME VARCHAR (200) NULL ,
+ JOB_GROUP VARCHAR (200) NULL ,
+ IS_STATEFUL BOOLEAN NULL ,
+ REQUESTS_RECOVERY BOOLEAN NULL
+);
+
+CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
+ TRIGGER_GROUP VARCHAR (200) NOT NULL
+);
+
+CREATE TABLE QRTZ_SCHEDULER_STATE (
+ INSTANCE_NAME VARCHAR (200) NOT NULL ,
+ LAST_CHECKIN_TIME BIGINT NOT NULL ,
+ CHECKIN_INTERVAL BIGINT NOT NULL
+);
+
+CREATE TABLE QRTZ_LOCKS (
+ LOCK_NAME VARCHAR (40) NOT NULL
+);
+
+CREATE TABLE QRTZ_JOB_DETAILS (
+ JOB_NAME VARCHAR (200) NOT NULL ,
+ JOB_GROUP VARCHAR (200) NOT NULL ,
+ DESCRIPTION VARCHAR (250) NULL ,
+ JOB_CLASS_NAME VARCHAR (250) NOT NULL ,
+ IS_DURABLE BOOLEAN NOT NULL ,
+ IS_VOLATILE BOOLEAN NOT NULL ,
+ IS_STATEFUL BOOLEAN NOT NULL ,
+ REQUESTS_RECOVERY BOOLEAN NOT NULL ,
+ JOB_DATA IMAGE NULL
+);
+
+CREATE TABLE QRTZ_JOB_LISTENERS (
+ JOB_NAME VARCHAR (200) NOT NULL ,
+ JOB_GROUP VARCHAR (200) NOT NULL ,
+ JOB_LISTENER VARCHAR (200) NOT NULL
+);
+
+CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ REPEAT_COUNT BIGINT NOT NULL ,
+ REPEAT_INTERVAL BIGINT NOT NULL ,
+ TIMES_TRIGGERED BIGINT NOT NULL
+);
+
+CREATE TABLE QRTZ_BLOB_TRIGGERS (
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ BLOB_DATA IMAGE NULL
+);
+
+CREATE TABLE QRTZ_TRIGGER_LISTENERS (
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ TRIGGER_LISTENER VARCHAR (200) NOT NULL
+);
+
+CREATE TABLE QRTZ_TRIGGERS (
+ TRIGGER_NAME VARCHAR (200) NOT NULL ,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL ,
+ JOB_NAME VARCHAR (200) NOT NULL ,
+ JOB_GROUP VARCHAR (200) NOT NULL ,
+ IS_VOLATILE BOOLEAN NOT NULL ,
+ DESCRIPTION VARCHAR (250) NULL ,
+ NEXT_FIRE_TIME BIGINT NULL ,
+ PREV_FIRE_TIME BIGINT NULL ,
+ PRIORITY INTEGER NULL ,
+ TRIGGER_STATE VARCHAR (16) NOT NULL ,
+ TRIGGER_TYPE VARCHAR (8) NOT NULL ,
+ START_TIME BIGINT NOT NULL ,
+ END_TIME BIGINT NULL ,
+ CALENDAR_NAME VARCHAR (200) NULL ,
+ MISFIRE_INSTR SMALLINT NULL ,
+ JOB_DATA IMAGE NULL
+);
+
+ALTER TABLE QRTZ_CALENDARS ADD
+ CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY
+ (
+ CALENDAR_NAME
+ );
+
+ALTER TABLE QRTZ_CRON_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_CRON_TRIGGERS PRIMARY KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_FIRED_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY
+ (
+ ENTRY_ID
+ );
+
+ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS ADD
+ CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY
+ (
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_SCHEDULER_STATE ADD
+ CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY
+ (
+ INSTANCE_NAME
+ );
+
+ALTER TABLE QRTZ_LOCKS ADD
+ CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY
+ (
+ LOCK_NAME
+ );
+
+ALTER TABLE QRTZ_JOB_DETAILS ADD
+ CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY
+ (
+ JOB_NAME,
+ JOB_GROUP
+ );
+
+ALTER TABLE QRTZ_JOB_LISTENERS ADD
+ CONSTRAINT PK_QRTZ_JOB_LISTENERS PRIMARY KEY
+ (
+ JOB_NAME,
+ JOB_GROUP,
+ JOB_LISTENER
+ );
+
+ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_TRIGGER_LISTENERS ADD
+ CONSTRAINT PK_QRTZ_TRIGGER_LISTENERS PRIMARY KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP,
+ TRIGGER_LISTENER
+ );
+
+ALTER TABLE QRTZ_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_CRON_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+ALTER TABLE QRTZ_JOB_LISTENERS ADD
+ CONSTRAINT FK_QRTZ_JOB_LISTENERS_QRTZ_JOB_DETAILS FOREIGN KEY
+ (
+ JOB_NAME,
+ JOB_GROUP
+ ) REFERENCES QRTZ_JOB_DETAILS (
+ JOB_NAME,
+ JOB_GROUP
+ ) ON DELETE CASCADE;
+
+ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+ALTER TABLE QRTZ_TRIGGER_LISTENERS ADD
+ CONSTRAINT FK_QRTZ_TRIGGER_LISTENERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+ALTER TABLE QRTZ_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS FOREIGN KEY
+ (
+ JOB_NAME,
+ JOB_GROUP
+ ) REFERENCES QRTZ_JOB_DETAILS (
+ JOB_NAME,
+ JOB_GROUP
+ );
+
+INSERT INTO QRTZ_LOCKS VALUES('TRIGGER_ACCESS');
+INSERT INTO QRTZ_LOCKS VALUES('JOB_ACCESS');
+INSERT INTO QRTZ_LOCKS VALUES('CALENDAR_ACCESS');
+INSERT INTO QRTZ_LOCKS VALUES('STATE_ACCESS');
+INSERT INTO QRTZ_LOCKS VALUES('MISFIRE_ACCESS');
+COMMIT;
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/resources/tables_h2.sql
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -13,9 +13,11 @@
<modules>
<module>drools-timer-core</module>
+ <module>drools-timer-persistence</module>
<module>drools-timer-messages</module>
<module>drools-timer-scheduler</module>
<module>drools-timer-executor</module>
+ <module>drools-timer-tests</module>
</modules>
<properties>
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml 2010-08-10 12:03:17 UTC (rev 34620)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml 2010-08-10 14:29:27 UTC (rev 34621)
@@ -1035,6 +1035,11 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
+ <artifactId>drools-timer-persistence</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
<artifactId>drools-timer-messages</artifactId>
<version>${project.version}</version>
</dependency>
More information about the jboss-svn-commits
mailing list