[jboss-svn-commits] JBL Code SVN: r34548 - in labs/jbossrules/branches/5_1_20100802_esteban_diega: drools-process/drools-persistent-timer and 21 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 5 10:30:09 EDT 2010
Author: lucazamador
Date: 2010-08-05 10:30:08 -0400 (Thu, 05 Aug 2010)
New Revision: 34548
Added:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/
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/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/
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/
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/
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/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/main/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/test/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/test/java/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-messages/src/test/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerServer.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerMessageHornetQClient.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerTest.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml
Removed:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerMessageProcessor.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerCommunicationTest.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-process-task/src/main/java/org/drools/time/
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/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/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml
Log:
communications removed. timer-core added. process-task cleaned. scheduler small impl
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core
___________________________________________________________________
Name: svn:ignore
+ target
.settings
.classpath
.project
Added: 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 (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,83 @@
+<?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-core</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Timers :: Core</name>
+
+ <dependencies>
+
+ <!-- Drools dependencies -->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-timer-messages</artifactId>
+ </dependency>
+
+ <!-- HornetQ dependencies -->
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-core</artifactId>
+ <version>${hornetq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-transports</artifactId>
+ <version>${hornetq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <version>${netty.version}</version>
+ </dependency>
+
+ <!-- Spring Dependencies -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring.version}</version>
+ </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-core/pom.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ 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-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,26 @@
+package org.drools.timer.core;
+
+import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
+import org.drools.time.ProcessTimerPersistenceStrategy;
+import org.drools.time.impl.IntervalTrigger;
+import org.drools.time.impl.ProcessJobHandle;
+import org.drools.timer.core.connector.SchedulerConnector;
+
+public class ProcessTimerQuartzPersistenceStrategy implements ProcessTimerPersistenceStrategy {
+
+ private final SchedulerConnector connector;
+
+ public ProcessTimerQuartzPersistenceStrategy(SchedulerConnector connector) throws Exception {
+ this.connector = connector;
+ this.connector.connect();
+ }
+
+ public void save(ProcessJobContext processContext, IntervalTrigger intervalTrigger) {
+ connector.send(processContext);
+ // Create record in DB
+ }
+
+ public boolean remove(ProcessJobHandle jobHandle) {
+ return false;
+ }
+}
Property changes on: 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
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ 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-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,11 @@
+package org.drools.timer.core.connector;
+
+import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
+
+public interface SchedulerConnector {
+
+ public void connect() throws Exception;
+ public void disconnect() throws Exception;
+ public void send(ProcessJobContext processContext);
+
+}
Property changes on: 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
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ 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-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,107 @@
+package org.drools.timer.core.connector.impl;
+
+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.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 with 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 send(ProcessJobContext processContext) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oout;
+ try {
+ oout = new ObjectOutputStream(baos);
+ InsertScheduledTimerMessage insertTimerMessage = new InsertScheduledTimerMessage();
+ insertTimerMessage.setProcessInstanceId(processContext.getProcessInstanceId());
+ insertTimerMessage.setActivationTime(processContext.getTimer().getActivated());
+ oout.writeObject(insertTimerMessage);
+ ClientMessage message = session.createMessage(true);
+ message.getBodyBuffer().writeBytes(baos.toByteArray());
+ producer.send(message);
+ } catch (IOException e) {
+ throw new RuntimeException("Error creating message", e);
+ } catch (HornetQException e) {
+ throw new RuntimeException("Error writing message", e);
+ }
+ }
+
+}
Property changes on: 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
___________________________________________________________________
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-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/pom.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -16,10 +16,23 @@
<groupId>org.drools</groupId>
<artifactId>drools-timer-messages</artifactId>
</dependency>
+
+ <!-- HornetQ dependencies -->
<dependency>
- <groupId>org.drools</groupId>
- <artifactId>drools-timer-communication</artifactId>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-core</artifactId>
+ <version>${hornetq.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.hornetq</groupId>
+ <artifactId>hornetq-transports</artifactId>
+ <version>${hornetq.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <version>${netty.version}</version>
+ </dependency>
<!-- Spring Dependencies -->
<dependency>
Deleted: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerMessageProcessor.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerMessageProcessor.java 2010-08-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerMessageProcessor.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -1,16 +0,0 @@
-package org.drools.timer.scheduler;
-
-import org.drools.timer.message.impl.InsertScheduledTimerMessage;
-import org.drools.timer.message.impl.RemoveScheduledTimerMessage;
-
-public class TimerMessageProcessor {
-
- public void process(InsertScheduledTimerMessage message) {
- System.out.println("process InsertScheduledTimerMessage");
- }
-
- public void process(RemoveScheduledTimerMessage message) {
- System.out.println("process RemoveScheduledTimerMessage");
- }
-
-}
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-05 13:50:14 UTC (rev 34547)
+++ 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-05 14:30:08 UTC (rev 34548)
@@ -1,5 +1,30 @@
package org.drools.timer.scheduler;
+import org.drools.timer.message.TimerMessage;
+import org.drools.timer.message.impl.InsertScheduledTimerMessage;
+import org.drools.timer.message.impl.RemoveScheduledTimerMessage;
+
public class TimerScheduler {
+ private void process(InsertScheduledTimerMessage message) {
+ System.out.println("process InsertScheduledTimerMessage");
+ }
+
+ private void process(RemoveScheduledTimerMessage message) {
+ System.out.println("process RemoveScheduledTimerMessage");
+ }
+
+ public void process(TimerMessage message) {
+ if (message instanceof InsertScheduledTimerMessage) {
+ process((InsertScheduledTimerMessage)message);
+ }
+ else if (message instanceof RemoveScheduledTimerMessage) {
+ process((RemoveScheduledTimerMessage)message);
+ }
+ else {
+ throw new UnsupportedOperationException("Timer Message not implemented yet");
+ }
+ }
+
+
}
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,90 @@
+package org.drools.timer.scheduler;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+
+import org.drools.timer.message.TimerMessage;
+import org.hornetq.api.core.HornetQException;
+import org.hornetq.api.core.client.ClientConsumer;
+import org.hornetq.api.core.client.ClientMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TimerSchedulerHornetQServer extends TimerSchedulerServer {
+
+ private static final Logger logger = LoggerFactory.getLogger(TimerSchedulerHornetQServer.class);
+
+ private ClientConsumer consumer;
+ private TimerScheduler timerScheduler;
+ private boolean running;
+
+ public void start() {
+ running = true;
+ logger.info("Timer Scheduler Server started");
+ new Thread(this).start();
+ }
+
+ public void stop() {
+ running = false;
+ logger.info("Timer Scheduler Server stopped");
+ }
+
+ public void run() {
+ running = true;
+ try {
+ while (running) {
+ ClientMessage clientMessage = getConsumer().receive();
+ if (clientMessage!=null) {
+ TimerMessage message = (TimerMessage) readMessage(clientMessage);
+ timerScheduler.process(message);
+ }
+ }
+ }
+ catch (HornetQException e) {
+ switch (e.getCode()) {
+ case HornetQException.OBJECT_CLOSED:
+ logger.info(e.getMessage(), e);
+ break;
+ default:
+ logger.error(e.getMessage(), e);
+ break;
+ }
+ }
+ catch (Exception e) {
+ throw new RuntimeException("Server Exception with class " + getClass());
+ }
+ }
+
+ private Object readMessage(ClientMessage msgReceived) throws IOException {
+ int bodySize = msgReceived.getBodySize();
+ byte[] message = new byte[bodySize];
+ msgReceived.getBodyBuffer().readBytes(message);
+ ByteArrayInputStream bais = new ByteArrayInputStream(message);
+ try {
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ return ois.readObject();
+ } catch (IOException e) {
+ throw new IOException("Error reading message");
+ } catch (ClassNotFoundException e) {
+ throw new IOException("Error creating message");
+ }
+ }
+
+ public void setConsumer(ClientConsumer consumer) {
+ this.consumer = consumer;
+ }
+
+ public ClientConsumer getConsumer() {
+ return consumer;
+ }
+
+ public void setTimerScheduler(TimerScheduler timerScheduler) {
+ this.timerScheduler = timerScheduler;
+ }
+
+ public TimerScheduler getTimerScheduler() {
+ return timerScheduler;
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerHornetQServer.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerServer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerServer.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerServer.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,8 @@
+package org.drools.timer.scheduler;
+
+public abstract class TimerSchedulerServer implements Runnable {
+
+ public abstract void start();
+ public abstract void stop();
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/java/org/drools/timer/scheduler/TimerSchedulerServer.java
___________________________________________________________________
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/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-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/context.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -8,12 +8,12 @@
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="timerMessageHornetQServer" class="org.drools.timer.communication.impl.TimerMessageHornetQServer" init-method="start" destroy-method="stop">
+ <bean id="timerSchedulerHornetQServer" class="org.drools.timer.scheduler.TimerSchedulerHornetQServer" init-method="start" destroy-method="stop">
<property name="consumer" ref="timerMessageConsumer"/>
+ <property name="timerMessageProcessor" ref="timerMessageProcessor"/>
</bean>
+
+ <bean id="timerMessageProcessor" class="org.drools.timer.scheduler.processor.TimerMessageProcessor" />
<!-- HornetQ session for queue messageBoardQueue -->
<bean id="timerMessageConsumer" factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
Deleted: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerCommunicationTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerCommunicationTest.java 2010-08-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerCommunicationTest.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -1,17 +0,0 @@
-package org.drools.timer.scheduler;
-
-import org.drools.timer.communication.impl.TimerMessageHornetQServer;
-import org.junit.Test;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.util.Assert;
-
-public class TimerCommunicationTest {
-
- @Test
- public void simple() throws InterruptedException {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
- TimerMessageHornetQServer timerMessageServer = (TimerMessageHornetQServer) context.getBean("timerMessageHornetQServer");
- Assert.notNull(timerMessageServer);
- }
-
-}
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerMessageHornetQClient.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerMessageHornetQClient.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerMessageHornetQClient.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,49 @@
+package org.drools.timer.scheduler;
+
+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-scheduler/src/test/java/org/drools/timer/scheduler/TimerMessageHornetQClient.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerTest.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerTest.java 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,24 @@
+package org.drools.timer.scheduler;
+
+import junit.framework.Assert;
+
+import org.drools.timer.message.impl.InsertScheduledTimerMessage;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class TimerSchedulerTest {
+
+ @Test
+ public void simple() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("contextTest.xml");
+ TimerSchedulerHornetQServer timerMessageServer = (TimerSchedulerHornetQServer) context.getBean("timerSchedulerHornetQServer");
+ Assert.assertNotNull(timerMessageServer);
+
+ TimerMessageHornetQClient client = (TimerMessageHornetQClient) context.getBean("timerMessageHornetQClient");
+ Assert.assertNotNull(client);
+
+ client.write(new InsertScheduledTimerMessage());
+
+ }
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/java/org/drools/timer/scheduler/TimerSchedulerTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: 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 (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/test/resources/contextTest.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -0,0 +1,93 @@
+<?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="timerMessageHornetQClient" class="org.drools.timer.scheduler.TimerMessageHornetQClient">
+ <property name="session" ref="clientSession" />
+ <property name="producer" ref="timerMessageProducer" />
+ </bean>
+
+ <bean id="timerMessageProducer" factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+ <constructor-arg value="timerServiceMessages" />
+ </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"/>
+ </bean>
+
+ <bean id="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler" />
+
+ <!-- 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-scheduler/src/test/resources/contextTest.xml
___________________________________________________________________
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-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -12,13 +12,15 @@
<name>Drools :: Persistent Timer</name>
<modules>
+ <module>drools-timer-core</module>
<module>drools-timer-messages</module>
- <module>drools-timer-communication</module>
<module>drools-timer-scheduler</module>
<!--module>drools-timer-executor</module-->
</modules>
-
+
<properties>
+ <hornetq.version>2.0.0.GA</hornetq.version>
+ <netty.version>3.1.5.GA</netty.version>
<spring.version>3.0.2.RELEASE</spring.version>
</properties>
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml 2010-08-05 13:50:14 UTC (rev 34547)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/pom.xml 2010-08-05 14:30:08 UTC (rev 34548)
@@ -1030,12 +1030,12 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-timer-messages</artifactId>
+ <artifactId>drools-timer-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
- <artifactId>drools-timer-communication</artifactId>
+ <artifactId>drools-timer-messages</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
More information about the jboss-svn-commits
mailing list