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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 4 18:52:04 EDT 2010


Author: lucazamador
Date: 2010-08-04 18:52:04 -0400 (Wed, 04 Aug 2010)
New Revision: 34526

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/TimerMessageHornetQClient.java
Modified:
   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/TimerMessageHornetQServer.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
   labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-communication/src/test/resources/context.xml
Log:
TimerMessageClient implemented with hornetq/spring

Modified: 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	2010-08-04 22:11:23 UTC (rev 34525)
+++ 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:52:04 UTC (rev 34526)
@@ -2,10 +2,6 @@
 
 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);
 
 }

Modified: 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	2010-08-04 22:11:23 UTC (rev 34525)
+++ 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:52:04 UTC (rev 34526)
@@ -1,6 +1,6 @@
 package org.drools.timer.communication;
 
-public abstract class TimerMessageServer {
+public abstract class TimerMessageServer implements Runnable {
 
 	public abstract void start();
 	public abstract void stop();

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/TimerMessageHornetQClient.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/TimerMessageHornetQClient.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/TimerMessageHornetQClient.java	2010-08-04 22:52:04 UTC (rev 34526)
@@ -0,0 +1,50 @@
+package org.drools.timer.communication.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+
+import org.drools.timer.communication.TimerMessageClient;
+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 extends TimerMessageClient {
+
+	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-communication/src/main/java/org/drools/timer/communication/impl/TimerMessageHornetQClient.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: 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	2010-08-04 22:11:23 UTC (rev 34525)
+++ 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:52:04 UTC (rev 34526)
@@ -20,42 +20,39 @@
 
 	public void start() {
 		running = true;
-		Thread t_consumer = new Thread(new MessageConsumer());
-		t_consumer.start();
 		logger.info("TimerServer started");
+		new Thread(this).start();
 	}
 
 	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);
-					}
+	
+	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 (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());
-			}
 		}
+		catch (Exception e) {
+			throw new RuntimeException("Server Exception with class " + getClass());
+		}
 	}
 
 	private Object readMessage(ClientMessage msgReceived) throws IOException {

Modified: 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	2010-08-04 22:11:23 UTC (rev 34525)
+++ 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:52:04 UTC (rev 34526)
@@ -1,15 +1,21 @@
 package org.drools.timer.communication;
 
+import org.drools.timer.communication.impl.TimerMessageHornetQClient;
+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");
-		context.start();
-		Thread.sleep(10000);
+		TimerMessageHornetQServer timerMessageServer = (TimerMessageHornetQServer) context.getBean("timerMessageHornetQServer");
+		Assert.notNull(timerMessageServer);
+		TimerMessageHornetQClient timerMessageClient = (TimerMessageHornetQClient) context.getBean("timerMessageHornetQClient");
+		Assert.notNull(timerMessageClient);
+		timerMessageClient.write(new String("hello world"));
 	}
 
 }

Modified: 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	2010-08-04 22:11:23 UTC (rev 34525)
+++ 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:52:04 UTC (rev 34526)
@@ -7,19 +7,28 @@
   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.communication.impl.TimerMessageHornetQClient">
+	<property name="session" ref="clientSession" />
+	<property name="producer" ref="timerMessageProducer" />
+  </bean>
+  
   <bean id="timerMessageHornetQServer" class="org.drools.timer.communication.impl.TimerMessageHornetQServer" init-method="start" destroy-method="stop">
-  	<property name="consumer" ref="timerServiceConsumer"/>
+    <property name="consumer" ref="timerMessageConsumer"/>
   </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="timerServiceConsumer" factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
+  <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">



More information about the jboss-svn-commits mailing list