[jboss-svn-commits] JBL Code SVN: r24668 - in labs/jbossrules/trunk/drools-pipeline: drools-messenger-jms and 21 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 13 04:58:03 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-13 04:58:03 -0500 (Tue, 13 Jan 2009)
New Revision: 24668

Added:
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd
   labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
Modified:
   labs/jbossrules/trunk/drools-pipeline/pom.xml
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders\n-added JMS Service

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry kind="src" path="src/test/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/activemq/activeio-core/3.1.0/activeio-core-3.1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/activemq/activemq-core/5.2.0/activemq-core-5.2.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/2.1/backport-util-concurrent-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/camel/camel-core/1.5.0/camel-core-1.5.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+	<classpathentry kind="src" path="/drools-api"/>
+	<classpathentry kind="src" path="/drools-compiler"/>
+	<classpathentry kind="src" path="/drools-core"/>
+	<classpathentry kind="src" path="/drools-transformer-jaxb"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.1.1/geronimo-jms_1.1_spec-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.0.3/jaxb-impl-2.0.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.0.3/jaxb-xjc-2.0.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+	<classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.5/mvel2-2.0.5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/simple-jndi/simple-jndi/0.11.4/simple-jndi-0.11.4.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.project	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,18 @@
+<projectDescription>
+  <name>drools-messenger-jms</name>
+  <comment>A rule production system</comment>
+  <projects>
+    <project>drools-api</project>
+    <project>drools-compiler</project>
+    <project>drools-core</project>
+    <project>drools-transformer-jaxb</project>
+  </projects>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/pom.xml	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,63 @@
+<?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.0.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-messenger-jms</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: Pipeline :: Messenger :: JMS</name>
+  
+      <dependencies>
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-core</artifactId>
+            <version>${project.version}</version>  
+         </dependency>                     
+
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-compiler</artifactId>
+            <version>${project.version}</version>  
+            <scope>test</scope>
+         </dependency> 
+         
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-transformer-jaxb</artifactId>
+            <version>${project.version}</version>  
+            <scope>test</scope>
+         </dependency>                     
+           
+
+        <dependency>
+          <groupId>org.apache.activemq</groupId>
+          <artifactId>activemq-core</artifactId>
+          <version>5.2.0</version>
+        </dependency>   
+
+        <dependency>
+          <groupId>simple-jndi</groupId>
+          <artifactId>simple-jndi</artifactId>
+          <version>0.11.4</version>
+        </dependency>    
+        
+    </dependencies>     
+
+    <repositories>
+        <repository>
+            <id>dist.codehaus.org</id>
+            <url>http://dist.codehaus.org</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+            <releases>
+               <enabled>true</enabled>
+            </releases>
+        </repository>
+    </repositories>    
+</project>

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessenger.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,150 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.naming.InitialContext;
+
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Service;
+import org.drools.runtime.pipeline.impl.BaseService;
+
+public class JmsMessenger extends BaseService
+    implements
+    Service {
+    private ConnectionFactory    connectionFactory;
+    private Destination          destination;
+    private MessageConsumer      consumer;
+    private Connection           connection;
+    private Session              session;
+
+    private ResultHandlerFactory resultHandlerFactory;
+    private Pipeline             pipeline;
+
+    private Thread               thread;
+
+    private JmsMessengerRunner   jmsFeederRunner;
+
+    public JmsMessenger(Pipeline pipeline,
+                        Properties properties,
+                        String destinationName,
+                        ResultHandlerFactory resultHandlerFactory) {
+        super();
+        this.pipeline = pipeline;
+        this.resultHandlerFactory = resultHandlerFactory;
+        
+        try {
+            InitialContext jndiContext = new InitialContext( properties );
+            this.connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+            this.destination = (Destination) jndiContext.lookup( destinationName );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to instantiate JmsFeeder",
+                                        e );
+        }
+    }
+
+    public void start() {
+        try {
+            this.connection = this.connectionFactory.createConnection();
+            this.session = this.connection.createSession( false,
+                                                          Session.AUTO_ACKNOWLEDGE );
+            this.consumer = this.session.createConsumer( destination );
+
+            this.connection.start();
+        } catch ( Exception e ) {
+            handleException( this,
+                             null,
+                             e );
+        }
+        this.jmsFeederRunner = new JmsMessengerRunner( this,
+                                                       this.consumer,
+                                                       this.pipeline,
+                                                       this.resultHandlerFactory );
+        this.jmsFeederRunner.setRun( true );
+        this.thread = new Thread( this.jmsFeederRunner );
+        this.thread.start();
+    }
+
+    public void stop() {
+        try {
+            this.jmsFeederRunner.setRun( false );
+            // this will interrupt the receive()
+            this.consumer.close();
+            this.connection.stop();
+        } catch ( JMSException e ) {
+            handleException( this,
+                             null,
+                             e );
+        }
+    }
+
+    //    public void run() {
+    //        while ( this.run ) {
+    //            Message msg = null;
+    //            try {
+    //                msg = this.consumer.receive();
+    //                System.out.println( "msg received : " + msg );
+    //                //                emit( msg,
+    //                //                      new EntryPointPipelineContext( this.entryPoint ) );
+    //            } catch ( JMSException e ) {
+    //                handleException( this,
+    //                                 msg,
+    //                                 e );
+    //            }
+    //        }
+    //    }
+
+    public static class JmsMessengerRunner
+        implements
+        Runnable {
+        private JmsMessenger         feeder;
+        private MessageConsumer      consumer;
+        private Pipeline             pipeline;
+        private ResultHandlerFactory resultHandlerFactory;
+        private volatile boolean     run;
+
+        public JmsMessengerRunner(JmsMessenger feeder,
+                                  MessageConsumer consumer,
+                                  Pipeline pipeline,
+                                  ResultHandlerFactory resultHandlerFactory) {
+            super();
+            this.feeder = feeder;
+            this.consumer = consumer;
+            this.pipeline = pipeline;
+            this.resultHandlerFactory = resultHandlerFactory;
+        }
+
+        public void run() {
+            while ( this.run ) {
+                Message msg = null;
+                try {
+                    msg = this.consumer.receive();
+                    if ( this.resultHandlerFactory != null ) {
+                        pipeline.insert( msg,
+                                         this.resultHandlerFactory.newResultHandler() );
+                    } else {
+                        pipeline.insert( msg,
+                                         null );
+                    }
+                    System.out.println( "msg received : " + msg );
+                } catch ( JMSException e ) {
+                    this.feeder.handleException( this.feeder,
+                                                 msg,
+                                                 e );
+                }
+            }
+        }
+
+        public void setRun(boolean run) {
+            this.run = run;
+        }
+
+    }
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsMessengerProviderImpl.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,26 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import org.drools.runtime.pipeline.JmsMessengerProvider;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Service;
+
+public class JmsMessengerProviderImpl
+    implements
+    JmsMessengerProvider {
+    public Service newJmsMessenger(Pipeline pipeline,
+                                   Properties properties,
+                                   String destinationName,
+                                   ResultHandlerFactory resultHandlerFactory) {
+        return new JmsMessenger( pipeline,
+                                 properties,
+                                 destinationName,
+                                 resultHandlerFactory );
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapMessageObject.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,24 @@
+package org.drools.runtime.pipeline.impl;
+
+import javax.jms.JMSException;
+import javax.jms.ObjectMessage;
+import javax.jms.TextMessage;
+
+import org.drools.runtime.pipeline.Emitter;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+
+public class JmsUnwrapMessageObject extends BaseEmitter implements Receiver, Emitter {
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        try {
+            Object result = ((ObjectMessage)object).getObject();
+            emit( result, context );
+        } catch ( JMSException e ) {
+            handleException( this, object, e );
+        }
+    }
+
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/main/java/org/drools/runtime/pipeline/impl/JmsUnwrapText.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,23 @@
+package org.drools.runtime.pipeline.impl;
+
+import javax.jms.JMSException;
+import javax.jms.TextMessage;
+
+import org.drools.runtime.pipeline.Emitter;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+
+public class JmsUnwrapText  extends BaseEmitter implements Receiver, Emitter {
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        try {
+            String string = ((TextMessage)object).getText();
+            emit( string, context );
+        } catch ( JMSException e ) {
+            handleException( this, object, e );
+        }
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/JaxbSimpleJmsMessengerTest.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,195 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.broker.BrokerService;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.ExecuteResultHandler;
+import org.drools.runtime.pipeline.impl.JmsMessenger;
+import org.drools.runtime.pipeline.impl.JmsUnwrapMessageObject;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineImpl;
+import org.drools.runtime.pipeline.impl.JaxbFactTest.ResultHandlerImpl;
+import org.drools.runtime.rule.FactHandle;
+import org.drools.util.StringUtils;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+public class JaxbSimpleJmsMessengerTest extends TestCase {
+
+    private SimpleProducer simpleProducer;
+    private BrokerService  broker;
+    private String         destinationName = "dynamicQueues/FOO.BAR";
+    private String         url             = "vm://localhost:61616";
+
+    private Properties     props;
+
+    protected void setUp() {
+        try {
+            this.broker = new BrokerService();
+            // configure the broker
+            this.broker.setBrokerName( "consumer" );
+            this.broker.addConnector( url );
+            this.broker.start();
+
+            props = new Properties();
+            props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+                               "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+            props.setProperty( Context.PROVIDER_URL,
+                               this.url );
+
+            this.simpleProducer = new SimpleProducer( props,
+                                                      this.destinationName );
+            this.simpleProducer.start();
+        } catch ( Exception e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void test1() throws Exception {
+        Options xjcOpts = new Options();
+        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        String[] classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource( "order.xsd",
+                                                                                                        getClass() ),
+                                                                  kbuilder,
+                                                                  xjcOpts,
+                                                                  "xsd" );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_Jaxb.drl",
+                                                            getClass() ),
+                      ResourceType.DRL );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        
+        ExecuteResultHandler resultHandlerStage = new ExecuteResultHandler();
+        
+        StatefulKnowledgeSessionInsertStage insertStage = new StatefulKnowledgeSessionInsertStage();
+        insertStage.setReceiver( resultHandlerStage );
+        
+        JAXBContext jaxbCtx = KnowledgeBuilderHelper.newJAXBContext( classNames,
+                                                                     kbase );
+        Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
+        Transformer transformer = PipelineFactory.newJaxbFromXmlTransformer( unmarshaller );
+        transformer.setReceiver( insertStage );
+        
+        JmsUnwrapMessageObject unwrapObjectStage = new JmsUnwrapMessageObject();        
+        unwrapObjectStage.setReceiver( transformer );
+        
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( unwrapObjectStage );
+        
+
+        ResultHandleFactoryImpl factory = new ResultHandleFactoryImpl();
+        JmsMessenger feeder = new JmsMessenger( pipeline,
+                                            props,
+                                            this.destinationName,
+                                            factory );
+        feeder.start();                
+        
+        String xml = StringUtils.readFileAsString( new InputStreamReader( getClass().getResourceAsStream( "order.xml" ) ) );
+        
+        this.simpleProducer.sendObject( xml );
+
+        
+        for ( int i = 0; i < 5; i++ ) {
+            // iterate and sleep 5 times, to give these messages time to complete.
+            if ( factory.list.size() == 1 ) {
+                break;
+            }
+            Thread.sleep( 500 );
+        }        
+
+        FactHandle factHandle = (FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 0 )).getObject()).keySet().iterator().next();
+        assertNotNull( factHandle );
+        
+        assertEquals( 1, factory.list.size() );
+
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+
+        //transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+        Marshaller marshaller = jaxbCtx.createMarshaller();
+        transformer = PipelineFactory.newJaxbToXmlTransformer( marshaller );
+        transformer.setReceiver( assignAsResult );
+
+        KnowledgeRuntimeCommand getObject = PipelineFactory.newStatefulKnowledgeSessionGetObject();
+        getObject.setReceiver( transformer );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( getObject );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( factHandle,
+                         resultHandler );
+
+        assertEqualsIgnoreWhitespace( xml,
+                                      (String) resultHandler.getObject() );        
+        
+    }
+    
+    public static class ResultHandleFactoryImpl implements ResultHandlerFactory {
+        List list = new ArrayList();
+
+        public ResultHandler newResultHandler() {
+            ResultHandler handler = new ResultHandlerImpl();
+            list.add( handler );
+            return handler;
+        }
+        
+    }
+    
+    public static class ResultHandlerImpl implements ResultHandler {
+        Object object;
+        public void handleResult(Object object) {
+           this.object = object;             
+        }
+        public Object getObject() {
+            return this.object;
+        }       
+    }    
+    
+    private static void assertEqualsIgnoreWhitespace(final String expected,
+                                                     final String actual) {
+        final String cleanExpected = expected.replaceAll( "\\s+",
+                                                          "" );
+        final String cleanActual = actual.replaceAll( "\\s+",
+                                                      "" );
+        assertEquals( cleanExpected,
+                      cleanActual );
+    }
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleConsumer.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,96 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.activemq.broker.BrokerService;
+
+public class SimpleConsumer {
+
+    public SimpleConsumer() {
+        super();
+    }
+
+    public static void main(String[] args) throws Exception {
+        BrokerService broker = new BrokerService();
+        // configure the broker
+        broker.setBrokerName("consumer");
+        broker.addConnector("tcp://localhost:61616");
+        broker.start();
+        
+        Context jndiContext = null;
+        ConnectionFactory connectionFactory = null;
+        Connection connection = null;
+        Session session = null;
+        Destination destination = null;
+        MessageConsumer consumer = null;
+        TextMessage message = null;
+        String destinationName = "dynamicQueues/FOO.BAR";
+        final int NUM_MSGS = 50;
+
+        try {
+            Properties props = new Properties();
+            props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+                               "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+            props.setProperty( Context.PROVIDER_URL,
+                               "tcp://localhost:61616" );
+            jndiContext = new InitialContext( props );
+        }
+
+        catch ( NamingException e ) {
+            System.out.println( "Could not create JNDI API context: " + e.toString() );
+            System.exit( 1 );
+        }
+
+        try {
+            connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+            destination = (Destination) jndiContext.lookup( destinationName );
+        }
+
+        catch ( NamingException e ) {
+            e.printStackTrace();
+            System.out.println( "JNDI API lookup failed: " + e );
+            System.exit( 1 );
+        }
+
+        try {
+            connection = connectionFactory.createConnection();
+            session = connection.createSession( false,
+                                                Session.AUTO_ACKNOWLEDGE );
+
+            //producer = session.createProducer(destination);
+            consumer = session.createConsumer( destination );
+            connection.start();
+            //message = session.createTextMessage();
+
+            for ( int i = 0; i < NUM_MSGS; i++ ) {
+                Message msg = consumer.receive();
+                System.out.println( "received : " + msg );
+                if ( msg instanceof TextMessage ) {
+                    message = (TextMessage) msg;
+                    System.out.println( message.getText() );
+                }
+            }
+        } catch ( JMSException e ) {
+            System.out.println( "Exception occurred: " + e );
+        } finally {
+            if ( connection != null ) {
+                try {
+                    connection.close();
+                } catch ( JMSException e ) {
+                }
+            }
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleJmsMessengerTest.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,124 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.Context;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.broker.BrokerService;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.ResultHandlerFactory;
+import org.drools.runtime.pipeline.impl.ExecuteResultHandler;
+import org.drools.runtime.pipeline.impl.JmsMessenger;
+import org.drools.runtime.pipeline.impl.JmsUnwrapMessageObject;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionPipelineImpl;
+import org.drools.runtime.rule.FactHandle;
+
+public class SimpleJmsMessengerTest extends TestCase {
+
+    private SimpleProducer simpleProducer;
+    private BrokerService  broker;
+    private String         destinationName = "dynamicQueues/FOO.BAR";
+    private String         url             = "vm://localhost:61616";
+
+    private Properties     props;
+
+    protected void setUp() {
+        try {
+            this.broker = new BrokerService();
+            // configure the broker
+            this.broker.setBrokerName( "consumer" );
+            this.broker.addConnector( url );
+            this.broker.start();
+
+            props = new Properties();
+            props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+                               "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+            props.setProperty( Context.PROVIDER_URL,
+                               this.url );
+
+            this.simpleProducer = new SimpleProducer( props,
+                                                      this.destinationName );
+            this.simpleProducer.start();
+        } catch ( Exception e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void test1() throws Exception {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        StatefulKnowledgeSessionPipelineImpl pipeline = new StatefulKnowledgeSessionPipelineImpl( ksession );
+        
+        JmsUnwrapMessageObject unwrapObjectStage = new JmsUnwrapMessageObject();        
+        StatefulKnowledgeSessionInsertStage insertStage = new StatefulKnowledgeSessionInsertStage();
+        unwrapObjectStage.setReceiver( insertStage );
+        ExecuteResultHandler resultHandlerStage = new ExecuteResultHandler();
+        insertStage.setReceiver( resultHandlerStage );
+        pipeline.setReceiver( unwrapObjectStage );
+
+        ResultHandleFactoryImpl factory = new ResultHandleFactoryImpl();
+        JmsMessenger feeder = new JmsMessenger( pipeline,
+                                            props,
+                                            this.destinationName,
+                                            factory );
+        feeder.start();
+        this.simpleProducer.sendObject( "hello" );
+        this.simpleProducer.sendObject( "hello1" );
+        this.simpleProducer.sendObject( "hello2" );
+        this.simpleProducer.sendObject( "hello3" );
+        
+        for ( int i = 0; i < 5; i++ ) {
+            // iterate and sleep 5 times, to give these messages time to complete.
+            if ( factory.list.size() == 4 ) {
+                break;
+            }
+            Thread.sleep( 500 );
+        }
+        
+        assertEquals( 4, factory.list.size() );
+        
+        FactHandle factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 0 )).getObject()).keySet().iterator().next();
+        assertEquals( "hello", ksession.getObject( factHandle  ) );
+        
+        factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 1 )).getObject()).keySet().iterator().next();
+        assertEquals( "hello1", ksession.getObject( factHandle  ) );
+        
+        factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 2 )).getObject()).keySet().iterator().next();
+        assertEquals( "hello2", ksession.getObject( factHandle  ) );
+        
+        factHandle = ( FactHandle) ((Map)((ResultHandlerImpl)factory.list.get( 3 )).getObject()).keySet().iterator().next();
+        assertEquals( "hello3", ksession.getObject( factHandle  ) );
+        
+    }
+    
+    public static class ResultHandleFactoryImpl implements ResultHandlerFactory {
+        List list = new ArrayList();
+
+        public ResultHandler newResultHandler() {
+            ResultHandler handler = new ResultHandlerImpl();
+            list.add( handler );
+            return handler;
+        }
+        
+    }
+    
+    public static class ResultHandlerImpl implements ResultHandler {
+        Object object;
+        public void handleResult(Object object) {
+           this.object = object;             
+        }
+        public Object getObject() {
+            return this.object;
+        }       
+    }    
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/java/org/drools/runtime/pipeline/impl/SimpleProducer.java	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,157 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.Serializable;
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.activemq.command.ActiveMQObjectMessage;
+import org.apache.activemq.command.ActiveMQTextMessage;
+
+public class SimpleProducer {
+
+    private ConnectionFactory connectionFactory;
+    private Destination       destination;
+    private MessageProducer   producer;
+    private Connection        connection;
+    private Session           session;
+
+    public SimpleProducer(Properties properties,
+                          String destinationName) {
+        try {
+            InitialContext jndiContext = new InitialContext( properties );
+            this.connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+            this.destination = (Destination) jndiContext.lookup( destinationName );
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to instantiate JmsFeeder",
+                                        e );
+        }
+    }
+
+    public void start() {
+        try {
+            this.connection = this.connectionFactory.createConnection();
+            this.session = this.connection.createSession( false,
+                                                          Session.AUTO_ACKNOWLEDGE );
+            this.producer = this.session.createProducer( destination );
+            this.connection.start();
+        } catch ( Exception e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void setText(String text) {
+        ActiveMQTextMessage textMessage = new ActiveMQTextMessage();
+        try {
+            textMessage.setText( text );
+            this.producer.send( textMessage );
+        } catch ( JMSException e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void sendObject(Serializable object) {
+        ActiveMQObjectMessage objectMessage = new ActiveMQObjectMessage();
+        try {
+            objectMessage.setObject( object );
+            this.producer.send( objectMessage );
+        } catch ( JMSException e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void stop() {
+        try {
+            //            this.run = false;
+            // this will interrupt the receive()
+            this.producer.close();
+            this.connection.stop();
+        } catch ( JMSException e ) {
+            throw new RuntimeException( e );
+        }
+    }
+
+    public void simpleProducer2() {
+        Context jndiContext = null;
+        ConnectionFactory connectionFactory = null;
+        Connection connection = null;
+        Session session = null;
+        Destination destination = null;
+        MessageProducer producer = null;
+        String destinationName = "dynamicQueues/FOO.BAR";
+        final int numMsgs = 50;
+
+        System.out.println( "Destination name is " + destinationName );
+        /*
+         * Create a JNDI API InitialContext object
+         */
+        try {
+            Properties props = new Properties();
+            props.setProperty( Context.INITIAL_CONTEXT_FACTORY,
+                               "org.apache.activemq.jndi.ActiveMQInitialContextFactory" );
+            props.setProperty( Context.PROVIDER_URL,
+                               "vm://localhost:61616" );
+            jndiContext = new InitialContext( props );
+        } catch ( NamingException e ) {
+            e.printStackTrace();
+            System.out.println( "Could not create JNDI API context: " + e.toString() );
+            System.exit( 1 );
+        }
+
+        /*
+         * Look up connection factory and destination.
+         */
+        try {
+            connectionFactory = (ConnectionFactory) jndiContext.lookup( "ConnectionFactory" );
+            destination = (Destination) jndiContext.lookup( destinationName );
+        } catch ( NamingException e ) {
+            e.printStackTrace();
+            //LOG.info("JNDI API lookup failed: " + e);
+            System.exit( 1 );
+        }
+
+        /*
+         * Create connection. Create session from connection; false means
+         * session is not transacted. Create sender and text message. Send
+         * messages, varying text slightly. Send end-of-messages message.
+         * Finally, close connection.
+         */
+        try {
+            connection = connectionFactory.createConnection();
+            session = connection.createSession( false,
+                                                Session.AUTO_ACKNOWLEDGE );
+            //session.createTopic( "" )
+            producer = session.createProducer( destination );
+            TextMessage message = session.createTextMessage();
+            for ( int i = 0; i < numMsgs; i++ ) {
+                message.setText( "This is message " + (i + 1) );
+                System.out.println( "Sending message: " + message.getText() );
+                producer.send( message );
+            }
+
+            /*
+             * Send a non-text control message indicating end of messages.
+             */
+            producer.send( session.createMessage() );
+        } catch ( JMSException e ) {
+            e.printStackTrace();
+            System.out.println( "Exception occurred: " + e );
+        } finally {
+            if ( connection != null ) {
+                try {
+                    connection.close();
+                } catch ( JMSException e ) {
+                }
+            }
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xml	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<order xmlns="http://drools.org/model/order" >
+    <order-item>
+        <product-id>111</product-id>
+        <quantity>2</quantity>
+        <price>8.90</price>
+    </order-item>
+    <order-item>
+        <product-id>222</product-id>
+        <quantity>7</quantity>
+        <price>5.20</price>
+    </order-item>
+</order>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/order.xsd	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,43 @@
+<xsd:schema xmlns:order="http://drools.org/model/order" 
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	        targetNamespace="http://drools.org/model/order"
+	        elementFormDefault="qualified" >
+	        
+        
+	<xsd:element name="order">
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element name="order-item" minOccurs="0" maxOccurs="unbounded">
+					<xsd:complexType>
+						<xsd:sequence>
+							<xsd:element name="product-id" type="xsd:long" />
+							<xsd:element name="quantity" type="xsd:integer" />
+							<xsd:element name="price" type="xsd:decimal" />
+						</xsd:sequence>	
+					</xsd:complexType>
+				</xsd:element>
+			</xsd:sequence>
+		</xsd:complexType>		
+	</xsd:element>
+
+<!--
+	
+	<xsd:element name="order" type="order:OrderType" />
+	
+	<xsd:complexType name="OrderType">
+		<xsd:sequence>
+			<xsd:element name="orderItem" type="order:orderItemType" minOccurs="0" maxOccurs="unbounded" />
+		</xsd:sequence>
+	</xsd:complexType>	
+	
+	        
+	<xsd:complexType name="orderItem">	
+		<xsd:sequence>
+			<xsd:element name="product-id" type="xsd:long" />
+			<xsd:element name="quantity" type="xsd:integer" />
+			<xsd:element name="price" type="xsd:decimal" />
+		</xsd:sequence>
+	</xsd:complexType>	
+-->
+
+</xsd:schema>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/src/test/resources/org/drools/runtime/pipeline/impl/test_Jaxb.drl	2009-01-13 09:58:03 UTC (rev 24668)
@@ -0,0 +1,31 @@
+package org.drools.xxx
+
+import org.drools.model.order.Order
+import org.drools.model.order.Order.OrderItem
+
+global java.util.List list1;
+global java.util.List list2;
+
+global org.drools.model.order.Order order
+
+
+rule orderRule
+when
+    $i : Order()
+then
+    list1.add( $i );
+end
+
+rule orderItemRule1
+when
+    $i : OrderItem( price > 6)
+then
+    list1.add( $i );
+end
+
+rule orderItemRule2
+when
+    $i : OrderItem( price < 6)
+then
+    list2.add( $i );
+end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-pipeline/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/pom.xml	2009-01-13 09:39:09 UTC (rev 24667)
+++ labs/jbossrules/trunk/drools-pipeline/pom.xml	2009-01-13 09:58:03 UTC (rev 24668)
@@ -17,6 +17,7 @@
       <module>drools-transformer-jaxb</module>
       <module>drools-transformer-xstream</module>
       <module>drools-transformer-jxls</module>
+      <module>drools-messenger-jms</module>
   </modules>
   
 </project>




More information about the jboss-svn-commits mailing list