[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