[jboss-svn-commits] JBL Code SVN: r34525 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process: drools-persistent-timer and 17 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 4 18:11:24 EDT 2010


Author: lucazamador
Date: 2010-08-04 18:11:23 -0400 (Wed, 04 Aug 2010)
New Revision: 34525

Added:
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/pom.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageClient.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageServer.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQServer.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/resources/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/resources/log4j.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/communication/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/communication/TimerCommunicationTest.java
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/context.xml
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml
Log:
initial structure. server implementation with hornetq


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication
___________________________________________________________________
Name: svn:ignore
   + .settings
target
.classpath
.project


Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/pom.xml	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/pom.xml	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,77 @@
+<?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</artifactId>
+    <groupId>org.drools</groupId>
+    <version>5.1.0</version>
+  </parent>
+  <artifactId>drools-timer-communication</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Timers :: Communication</name>
+  
+  <dependencies>
+  	<!-- 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>3.1.5.GA</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>
+  
+  <properties>
+	 <hornetq.version>2.0.0.GA</hornetq.version>
+	 <spring.version>3.0.2.RELEASE</spring.version>
+  </properties>
+
+</project>


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/pom.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageClient.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageClient.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageClient.java	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,11 @@
+package org.drools.timer.communication;
+
+public abstract class TimerMessageClient {
+
+	public abstract void connect();
+	public abstract void connect(String address, int port);
+	public abstract void disconnect() throws Exception;
+
+	public abstract void write(Object message);
+
+}


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

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageServer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageServer.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/TimerMessageServer.java	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,8 @@
+package org.drools.timer.communication;
+
+public abstract class TimerMessageServer {
+
+	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-communication/src/main/java/org/drools/timer/communication/TimerMessageServer.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQServer.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQServer.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQServer.java	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,84 @@
+package org.drools.timer.communication.impl;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+
+import org.drools.timer.communication.TimerMessageServer;
+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 TimerMessageHornetQServer extends TimerMessageServer {
+
+	private static final Logger logger = LoggerFactory.getLogger(TimerMessageHornetQServer.class);
+
+	private ClientConsumer consumer;
+	private boolean running;
+
+	public void start() {
+		running = true;
+		Thread t_consumer = new Thread(new MessageConsumer());
+		t_consumer.start();
+		logger.info("TimerServer started");
+	}
+
+	public void stop() {
+		running = false;
+		logger.info("TimerServer stopped");
+	}
+
+	private class MessageConsumer implements Runnable {
+		public void run() {
+			running = true;
+			try {
+				while (running) {
+					ClientMessage clientMessage = getConsumer().receive();
+					if (clientMessage!=null) {
+						Object object = readMessage(clientMessage);
+						System.out.println("message received: " + object);
+					}
+				}
+			}
+			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;
+	}
+
+}


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQServer.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/resources/log4j.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/resources/log4j.xml	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/main/resources/log4j.xml	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<!-- ===================================================================== -->
+<!--                                                                       -->
+<!--  Log4j Configuration                                                  -->
+<!--                                                                       -->
+<!-- ===================================================================== -->
+<!-- $Id: log4j.xml,v 1.8 2006/04/26 17:29:10 gavin Exp $ -->
+<!--
+   | For more configuration infromation and examples see the Jakarta Log4j
+   | owebsite: http://jakarta.apache.org/log4j
+ -->
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+		<param name="Target" value="System.out"/>
+		<layout class="org.apache.log4j.PatternLayout">
+			<param name="ConversionPattern" value="%-5p %d{dd-MM HH:mm:ss,SSS} (%F:%M:%L) \t %m%n"/>
+		</layout>
+	</appender>
+	<logger name="org.drools">
+		<level value="DEBUG"/>
+	</logger>
+	<root>
+		<priority value="ERROR"/>
+		<appender-ref ref="CONSOLE"/>
+	</root>
+</log4j:configuration>


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

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/communication/TimerCommunicationTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/communication/TimerCommunicationTest.java	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/java/org/drools/timer/communication/TimerCommunicationTest.java	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,15 @@
+package org.drools.timer.communication;
+
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class TimerCommunicationTest {
+	
+	@Test
+	public void simple() throws InterruptedException {
+		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("context.xml");
+		context.start();
+		Thread.sleep(10000);
+	}
+
+}


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

Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/context.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/context.xml	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/context.xml	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,81 @@
+<?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="timerMessageHornetQServer" class="org.drools.timer.communication.impl.TimerMessageHornetQServer" init-method="start" destroy-method="stop">
+  	<property name="consumer" ref="timerServiceConsumer"/>
+  </bean>
+    
+  <!-- HornetQ session for queue messageBoardQueue -->
+  <bean id="timerServiceConsumer" 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"/>
+
+  <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-communication/src/test/resources/context.xml
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml	2010-08-04 22:11:23 UTC (rev 34525)
@@ -0,0 +1,20 @@
+<?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</artifactId>
+    <groupId>org.drools</groupId>
+    <version>5.1.0</version>
+  </parent>
+
+  <artifactId>drools-persistent-timer</artifactId>
+  <packaging>pom</packaging>
+  <name>Drools :: Persistent Timer</name>
+
+  <modules>
+    <module>drools-timer-communication</module>
+    <!--module>drools-timer-scheduler</module-->
+    <!--module>drools-timer-executor</module-->
+  </modules>
+
+</project>


Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/pom.xml
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the jboss-svn-commits mailing list