[jboss-svn-commits] JBL Code SVN: r24657 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/runtime/pipeline/impl and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 13 00:26:48 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-13 00:26:47 -0500 (Tue, 13 Jan 2009)
New Revision: 24657

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksToSourceTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformerProviderImpl.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatefulSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmooksGlobalTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamToXmlTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformerProviderImpl.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatefulSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java
Removed:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformer.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/SmooksTransformerProvider.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksDirectRoot.drl
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksNestedIterable.drl
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders 
-added to/from capabilities for xstream and smooks transformers

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -19,6 +19,8 @@
     KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetGlobal();
 
     KnowledgeRuntimeCommand newStatefulKnowledgeSessionSetGlobal();
+    
+    KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetObject(); 
 
     KnowledgeRuntimeCommand newStatefulKnowledgeSessionSetGlobal(String identifier);
 

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -55,7 +55,11 @@
         return getCorePipelineProvider().newStatefulKnowledgeSessionSetGlobal();
     }
 
-    KnowledgeRuntimeCommand newStatefulKnowledgeSessionSetGlobal(String identifier) {
+    public static KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetObject() {
+        return getCorePipelineProvider().newStatefulKnowledgeSessionGetObject();
+    }
+
+    public static KnowledgeRuntimeCommand newStatefulKnowledgeSessionSetGlobal(String identifier) {
         return getCorePipelineProvider().newStatefulKnowledgeSessionSetGlobal( identifier );
     }
 
@@ -72,18 +76,18 @@
     public static KnowledgeRuntimeCommand newStatefulKnowledgeSessionStartProcess(String eventType) {
         return getCorePipelineProvider().newStatefulKnowledgeSessionStartProcess( eventType );
     }
-    
+
     public static Action newAssignObjectAsResult() {
         return getCorePipelineProvider().newAssignObjectAsResult();
     }
-    
+
     public static Action newExecuteResultHandler() {
         return getCorePipelineProvider().newExecuteResultHandler();
     }
-    
+
     public static Action newMvelAction(String action) {
         return getCorePipelineProvider().newMvelAction( action );
-    }    
+    }
 
     public static Expression newMvelExpression(String expression) {
         return getCorePipelineProvider().newMvelExpression( expression );
@@ -91,26 +95,34 @@
 
     public static Splitter newIterateSplitter() {
         return getCorePipelineProvider().newIterateSplitter();
-    }    
-    
+    }
+
     public static Join newListCollectJoin() {
         return getCorePipelineProvider().newListCollectJoin();
     }
 
-    public static Transformer newSmooksTransformer(Smooks smooks,
-                                                   String rootId) {
-        return getSmooksPipelineProvider().newSmooksTransformer( smooks,
-                                                                 rootId );
+    public static Transformer newSmooksFromSourceTransformer(Smooks smooks,
+                                                             String rootId) {
+        return getSmooksPipelineProvider().newSmooksFromSourceTransformer( smooks,
+                                                                           rootId );
     }
 
+    public static Transformer newSmooksToSourceTransformer(Smooks smooks) {
+        return getSmooksPipelineProvider().newSmooksToSourceTransformer( smooks );
+    }
+
     public static Transformer newJaxbTransformer(Unmarshaller unmarshaller) {
         return getJaxbPipelineProvider().newJaxbTransformer( unmarshaller );
     }
 
-    public static Transformer newXStreamTransformer(XStream xstream) {
-        return getXStreamTransformerProvider().newXStreamTransformer( xstream );
+    public static Transformer newXStreamFromXmlTransformer(XStream xstream) {
+        return getXStreamTransformerProvider().newXStreamFromXmlTransformer( xstream );
     }
 
+    public static Transformer newXStreamToXmlTransformer(XStream xstream) {
+        return getXStreamTransformerProvider().newXStreamToXmlTransformer( xstream );
+    }
+
     public static Transformer newJxlsTransformer(XLSReader xlsReader,
                                                  String text) {
         return getJxlsTransformerProvider().newJxlsTransformer( xlsReader,
@@ -172,10 +184,10 @@
 
     private static void loadSmooksTransformerProvider() {
         try {
-            Class<SmooksTransformerProvider> cls = (Class<SmooksTransformerProvider>) Class.forName( "org.drools.runtime.pipeline.impl.SmooksTransformer$SmooksTransformerProviderImpl" );
+            Class<SmooksTransformerProvider> cls = (Class<SmooksTransformerProvider>) Class.forName( "org.drools.runtime.pipeline.impl.SmooksTransformerProviderImpl" );
             setSmooksTransformerProvider( cls.newInstance() );
         } catch ( Exception e2 ) {
-            throw new ProviderInitializationException( "Provider org.drools.runtime.pipeline.impl.SmooksTransformer$SmooksTransformerProviderImpl could not be set.",
+            throw new ProviderInitializationException( "Provider org.drools.runtime.pipeline.impl.SmooksTransformerProviderImpl could not be set.",
                                                        e2 );
         }
     }
@@ -193,10 +205,10 @@
 
     private static void loadXStreamTransformerProvider() {
         try {
-            Class<XStreamTransformerProvider> cls = (Class<XStreamTransformerProvider>) Class.forName( "org.drools.runtime.pipeline.impl.XStreamTransformer$XStreamTransformerProviderImpl" );
+            Class<XStreamTransformerProvider> cls = (Class<XStreamTransformerProvider>) Class.forName( "org.drools.runtime.pipeline.impl.XStreamTransformerProviderImpl" );
             setXStreamTransformerProvider( cls.newInstance() );
         } catch ( Exception e2 ) {
-            throw new ProviderInitializationException( "Provider org.drools.runtime.pipeline.impl.XStreamTransformer$XStreamTransformerProviderImpl could not be set.",
+            throw new ProviderInitializationException( "Provider org.drools.runtime.pipeline.impl.XStreamTransformerProviderImpl could not be set.",
                                                        e2 );
         }
     }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/SmooksTransformerProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/SmooksTransformerProvider.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/SmooksTransformerProvider.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -3,6 +3,8 @@
 import org.milyn.Smooks;
 
 public interface SmooksTransformerProvider {
-    Transformer newSmooksTransformer(Smooks smooks,
-                                     String rootId);
+    Transformer newSmooksFromSourceTransformer(Smooks smooks,
+                                               String rootId);
+
+    Transformer newSmooksToSourceTransformer(Smooks smooks);
 }

Deleted: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,7 +0,0 @@
-package org.drools.runtime.pipeline;
-
-import com.thoughtworks.xstream.XStream;
-
-public interface XStreamTransformerProvider {
-    Transformer newXStreamTransformer(XStream xstream);
-}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/XStreamTransformerProvider.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,8 @@
+package org.drools.runtime.pipeline;
+
+import com.thoughtworks.xstream.XStream;
+
+public interface XStreamTransformerProvider {
+    Transformer newXStreamFromXmlTransformer(XStream xstream);
+    Transformer newXStreamToXmlTransformer(XStream xstream);
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -51,6 +51,10 @@
     public KnowledgeRuntimeCommand newStatefulKnowledgeSessionSetGlobal(String identifier) {
         return new StatefulKnowledgeSessionSetGlobalStage( identifier );
     }
+    
+    public KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetObject() {
+        return new StatefulKnowledgeSessionGetObjectStage(  );
+    }    
 
     public KnowledgeRuntimeCommand newStatefulKnowledgeSessionSignalEvent(String eventType) {
         return new StatefulKnowledgeSessionSignalEventStage( eventType );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetGlobalStage.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -22,8 +22,6 @@
         StatefulKnowledgeSession ksession = kContext.getStatefulKnowledgeSession();
         Object result = ksession.getGlobal( (String) object );
         
-        context.setResult( result );
-        
         emit( result,
               kContext );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionGetObjectStage.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -4,6 +4,7 @@
 import java.util.Map.Entry;
 
 import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
 import org.drools.runtime.pipeline.PipelineContext;
 import org.drools.runtime.pipeline.Receiver;
 import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
@@ -11,7 +12,7 @@
 
 public class StatefulKnowledgeSessionGetObjectStage extends BaseEmitter
     implements
-    Receiver {
+    KnowledgeRuntimeCommand {
 
     public StatefulKnowledgeSessionGetObjectStage() {
     }

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java (from rev 24646, labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformer.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,68 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStream;
+import java.io.Reader;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import org.milyn.Smooks;
+import org.milyn.container.ExecutionContext;
+import org.milyn.payload.JavaResult;
+import org.milyn.payload.StringSource;
+
+public class SmooksFromSourceTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private Smooks                    smooks;
+    private DroolsSmooksConfiguration configuration;
+
+    public SmooksFromSourceTransformer(Smooks smooks,
+                             DroolsSmooksConfiguration configuration) {
+        this.smooks = smooks;
+        this.configuration = configuration;
+
+    }
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        this.smooks.setClassLoader( context.getClassLoader() );
+        Object result = null;
+        try {
+            JavaResult javaResult = new JavaResult();
+            ExecutionContext executionContext = this.smooks.createExecutionContext();
+
+            Source source = null;
+            if ( object instanceof Source ) {
+                source = ( Source ) object;
+            } else if ( object instanceof InputStream ) {                
+                source =  new StreamSource( ( InputStream ) object );
+            } else if ( object instanceof Reader ) {                
+                source =  new StreamSource( ( Reader ) object );
+            } else if ( object instanceof Resource ) {                
+                source =  new StreamSource( ( ( Resource ) object).getReader() );
+            } else if ( object instanceof String ) {                 
+                source =  new StringSource( (String) object);
+            } else {
+                throw new IllegalArgumentException( "signal object must be instance of Source, InputStream, Reader or Resource" );
+            }
+            
+            this.smooks.filter( source,
+                                javaResult,
+                                executionContext );            
+            
+            result = javaResult.getBean( this.configuration.getRootId() );
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        emit( result,
+              context );
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksFromSourceTransformer.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksToSourceTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksToSourceTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksToSourceTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,62 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStream;
+import java.io.Reader;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.SmooksTransformerProvider;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import org.milyn.Smooks;
+import org.milyn.container.ExecutionContext;
+import org.milyn.payload.JavaResult;
+import org.milyn.payload.JavaSource;
+import org.milyn.payload.StringResult;
+
+public class SmooksToSourceTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private Smooks smooks;
+
+    public SmooksToSourceTransformer(Smooks smooks) {
+        this.smooks = smooks;
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        this.smooks.setClassLoader( context.getClassLoader() );
+        Object result = null;
+        try {
+            StringResult stringResult = new StringResult();
+            ExecutionContext executionContext = this.smooks.createExecutionContext();
+
+            this.smooks.filter( new JavaSource( object ),
+                                stringResult,
+                                executionContext );
+
+            result = stringResult.getResult();
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        emit( result,
+              context );
+    }
+
+//    public static class SmooksTransformerProviderImpl
+//        implements
+//        SmooksTransformerProvider {
+//        public Transformer newSmooksTransformer(Smooks smooks,
+//                                                String rootId) {
+//            DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( rootId );
+//            return new SmooksToSourceTransformer( smooks,
+//                                                  conf );
+//        }
+//    }
+
+}

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformer.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,75 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.InputStream;
-import java.io.Reader;
-
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-
-import org.drools.io.Resource;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.SmooksTransformerProvider;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-import org.milyn.Smooks;
-import org.milyn.container.ExecutionContext;
-import org.milyn.payload.JavaResult;
-
-public class SmooksTransformer extends BaseEmitter
-    implements
-    Transformer {
-    private Smooks                    smooks;
-    private DroolsSmooksConfiguration configuration;
-
-    public SmooksTransformer(Smooks smooks,
-                             DroolsSmooksConfiguration configuration) {
-        this.smooks = smooks;
-        this.configuration = configuration;
-
-    }
-
-    public void receive(Object object,
-                       PipelineContext context) {
-        this.smooks.setClassLoader( context.getClassLoader() );
-        Object result = null;
-        try {
-            JavaResult javaResult = new JavaResult();
-            ExecutionContext executionContext = this.smooks.createExecutionContext();
-
-            Source source = null;
-            if ( object instanceof Source ) {
-                source = ( Source ) object;
-            } else if ( object instanceof InputStream ) {                
-                source =  new StreamSource( ( InputStream ) object );
-            } else if ( object instanceof Reader ) {                
-                source =  new StreamSource( ( Reader ) object );
-            } else if ( object instanceof Resource ) {                
-                source =  new StreamSource( ( ( Resource ) object).getReader() );
-            }    else {
-                throw new IllegalArgumentException( "signal object must be instance of Source, InputStream, Reader or Resource" );
-            }
-            
-            this.smooks.filter( source,
-                                javaResult,
-                                executionContext );
-            
-            result = javaResult.getBean( this.configuration.getRootId() );
-        } catch ( Exception e ) {
-            handleException( this,
-                             object,
-                             e );
-        }
-        emit( result,
-              context );
-    }
-    
-    public static class SmooksTransformerProviderImpl implements SmooksTransformerProvider {
-        public Transformer newSmooksTransformer(Smooks smooks,
-                                                String rootId) {
-            DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( rootId );
-            return new SmooksTransformer( smooks,
-                                          conf );
-        }
-    }
-
-}

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformerProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformerProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/main/java/org/drools/runtime/pipeline/impl/SmooksTransformerProviderImpl.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,21 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.pipeline.SmooksTransformerProvider;
+import org.drools.runtime.pipeline.Transformer;
+import org.milyn.Smooks;
+
+public class SmooksTransformerProviderImpl implements SmooksTransformerProvider {
+    public Transformer newSmooksFromSourceTransformer(Smooks smooks,
+                                                      String rootId) {
+        DroolsSmooksConfiguration conf = new DroolsSmooksConfiguration( rootId );
+        return new SmooksFromSourceTransformer( smooks,
+                                      conf );
+    }
+    
+    public Transformer newSmooksToSourceTransformer(Smooks smooks) {
+        return new SmooksToSourceTransformer( smooks );
+    }    
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,163 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.transform.stream.StreamSource;
-
-import junit.framework.TestCase;
-
-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.io.ResourceFactory;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.pipeline.Action;
-import org.drools.runtime.pipeline.Expression;
-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.Splitter;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.rule.FactHandle;
-import org.milyn.Smooks;
-import org.milyn.io.StreamUtils;
-
-public class DroolsSmookStatefulSessionTest extends TestCase {
-
-    public void testDirectRoot() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksDirectRoot.drl",
-                                                            DroolsSmookStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-
-        // Instantiate Smooks with the config...
-        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
-
-        Transformer transformer = PipelineFactory.newSmooksTransformer( smooks,
-                                                                        "orderItem" );
-        transformer.setReceiver( insertStage );
-
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml" ) ),
-                         resultHandler );
-        ksession.fireAllRules();
-
-        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
-
-        assertEquals( 1,
-                      handles.size() );
-        assertEquals( 1,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-    }
-
-    public void testNestedIterable() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksNestedIterable.drl",
-                                                            DroolsSmookStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-
-        Splitter splitter = PipelineFactory.newIterateSplitter();
-        splitter.setReceiver( insertStage );
-
-        Expression expression = PipelineFactory.newMvelExpression( "children" );
-        expression.setReceiver( splitter );
-
-        // Instantiate Smooks with the config...
-        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
-
-        Transformer transformer = PipelineFactory.newSmooksTransformer( smooks,
-                                                                        "root" );
-        transformer.setReceiver( expression );
-
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ),
-                         resultHandler );
-
-        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
-        ksession.fireAllRules();
-
-        assertEquals( 2,
-                      handles.size() );
-        assertEquals( 2,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-        assertEquals( "example.OrderItem",
-                      list.get( 1 ).getClass().getName() );
-
-        assertNotSame( list.get( 0 ),
-                       list.get( 1 ) );
-    }
-
-    private static byte[] readInputMessage(InputStream stream) {
-        try {
-            return StreamUtils.readStream( stream );
-        } catch ( IOException e ) {
-            e.printStackTrace();
-            return "<no-message/>".getBytes();
-        }
-    }
-
-    public static class ResultHandlerImpl
-        implements
-        ResultHandler {
-        Object object;
-
-        public void handleResult(Object object) {
-            this.object = object;
-        }
-
-        public Object getObject() {
-            return this.object;
-        }
-    }
-}

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,134 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.transform.stream.StreamSource;
-
-import junit.framework.TestCase;
-
-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.io.ResourceFactory;
-import org.drools.runtime.StatelessKnowledgeSession;
-import org.drools.runtime.pipeline.Action;
-import org.drools.runtime.pipeline.Expression;
-import org.drools.runtime.pipeline.Join;
-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.Splitter;
-import org.drools.runtime.pipeline.Transformer;
-import org.milyn.Smooks;
-import org.milyn.io.StreamUtils;
-
-public class DroolsSmookStatelessSessionTest extends TestCase {
-
-    public void testSmooksDirectRoot() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksDirectRoot.drl",
-                                                            DroolsSmookStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
-
-        // Instantiate Smooks with the config...
-        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
-
-        Transformer transformer = PipelineFactory.newSmooksTransformer( smooks,
-                                                                        "orderItem" );
-        transformer.setReceiver( execute );
-
-        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml" ) ),
-                         resultHandler );
-
-        assertEquals( 1,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-    }
-
-    public void testSmooksNestedIterable() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksNestedIterable.drl",
-                                                            DroolsSmookStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
-
-        Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this.children  )" );
-        mvelAction.setReceiver( execute );
-
-        // Instantiate Smooks with the config...
-        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
-
-        Transformer transformer = PipelineFactory.newSmooksTransformer( smooks,
-                                                                        "root" );
-        transformer.setReceiver( mvelAction );
-
-        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ),
-                         resultHandler );
-
-        assertEquals( 2,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-        assertEquals( "example.OrderItem",
-                      list.get( 1 ).getClass().getName() );
-
-        assertNotSame( list.get( 0 ),
-                       list.get( 1 ) );
-    }
-
-    public static class ResultHandlerImpl
-        implements
-        ResultHandler {
-        Object object;
-
-        public void handleResult(Object object) {
-            this.object = object;
-        }
-
-        public Object getObject() {
-            return this.object;
-        }
-    }
-}

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatefulSessionTest.java (from rev 24647, labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatefulSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatefulSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,163 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+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.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Expression;
+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.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.rule.FactHandle;
+import org.milyn.Smooks;
+import org.milyn.io.StreamUtils;
+
+public class SmookStatefulSessionTest extends TestCase {
+
+    public void testDirectRoot() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksDirectRoot.drl",
+                                                            SmookStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+
+        // Instantiate Smooks with the config...
+        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+        Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+                                                                                  "orderItem" );
+        transformer.setReceiver( insertStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( getClass().getResourceAsStream( "SmooksDirectRoot.xml" ),
+                         resultHandler );
+        ksession.fireAllRules();
+
+        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
+
+        assertEquals( 1,
+                      handles.size() );
+        assertEquals( 1,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+    }
+
+    public void testNestedIterable() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksNestedIterable.drl",
+                                                            SmookStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+
+        Splitter splitter = PipelineFactory.newIterateSplitter();
+        splitter.setReceiver( insertStage );
+
+        Expression expression = PipelineFactory.newMvelExpression( "children" );
+        expression.setReceiver( splitter );
+
+        // Instantiate Smooks with the config...
+        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+        Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+                                                                                  "root" );
+        transformer.setReceiver( expression );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ),
+                         resultHandler );
+
+        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
+        ksession.fireAllRules();
+
+        assertEquals( 2,
+                      handles.size() );
+        assertEquals( 2,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+        assertEquals( "example.OrderItem",
+                      list.get( 1 ).getClass().getName() );
+
+        assertNotSame( list.get( 0 ),
+                       list.get( 1 ) );
+    }
+
+    private static byte[] readInputMessage(InputStream stream) {
+        try {
+            return StreamUtils.readStream( stream );
+        } catch ( IOException e ) {
+            e.printStackTrace();
+            return "<no-message/>".getBytes();
+        }
+    }
+
+    public static class ResultHandlerImpl
+        implements
+        ResultHandler {
+        Object object;
+
+        public void handleResult(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return this.object;
+        }
+    }
+}

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java (from rev 24647, labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,134 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+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.io.ResourceFactory;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.Join;
+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.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+import org.milyn.Smooks;
+import org.milyn.io.StreamUtils;
+
+public class SmookStatelessSessionTest extends TestCase {
+
+    public void testSmooksDirectRoot() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksDirectRoot.drl",
+                                                            SmookStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+
+        // Instantiate Smooks with the config...
+        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+        Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+                                                                                  "orderItem" );
+        transformer.setReceiver( execute );
+
+        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml" ) ),
+                         resultHandler );
+
+        assertEquals( 1,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+    }
+
+    public void testSmooksNestedIterable() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksNestedIterable.drl",
+                                                            SmookStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+
+        Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this.children  )" );
+        mvelAction.setReceiver( execute );
+
+        // Instantiate Smooks with the config...
+        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+        Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+                                                                                  "root" );
+        transformer.setReceiver( mvelAction );
+
+        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ),
+                         resultHandler );
+
+        assertEquals( 2,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+        assertEquals( "example.OrderItem",
+                      list.get( 1 ).getClass().getName() );
+
+        assertNotSame( list.get( 0 ),
+                       list.get( 1 ) );
+    }
+
+    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-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmooksGlobalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmooksGlobalTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmooksGlobalTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,107 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+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.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.Transformer;
+import org.drools.runtime.rule.FactHandle;
+import org.milyn.Smooks;
+
+import com.thoughtworks.xstream.XStream;
+
+import junit.framework.TestCase;
+
+public class SmooksGlobalTest extends TestCase {
+    public void testGlobal() throws Exception {
+        String xml = "<org.drools.runtime.pipeline.impl.Root><children><example.OrderItem><price>8.9</price><productId>111</productId><quantity>2</quantity></example.OrderItem><example.OrderItem><price>5.2</price><productId>222</productId><quantity>7</quantity></example.OrderItem></children></org.drools.runtime.pipeline.impl.Root>";
+
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_SmooksNestedIterable.drl",
+                                                            SmooksGlobalTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        KnowledgeRuntimeCommand setGlobalStage = PipelineFactory.newStatefulKnowledgeSessionSetGlobal( "root" );
+
+        Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
+
+        Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
+                                                                                  "root" );
+        transformer.setReceiver( setGlobalStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ),
+                         resultHandler );
+
+        // now round trip that global
+
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+
+        transformer = PipelineFactory.newSmooksToSourceTransformer( smooks );
+        transformer.setReceiver( assignAsResult );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        resultHandler = new ResultHandlerImpl();
+        pipeline.insert( ksession.getGlobal( "root" ),
+                         resultHandler );
+
+        assertEquals( xml,
+                      resultHandler.getObject() );
+    }
+
+    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 );
+    }
+
+    public static class ResultHandlerImpl
+        implements
+        ResultHandler {
+        Object object;
+
+        public void handleResult(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return this.object;
+        }
+    }
+}

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksDirectRoot.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksDirectRoot.drl	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksDirectRoot.drl	2009-01-13 05:26:47 UTC (rev 24657)
@@ -2,6 +2,8 @@
 
 global java.util.List list;
 
+global org.drools.runtime.pipeline.impl.Root root
+
 declare OrderItem
     productId : long
     quantity : Integer

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksNestedIterable.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksNestedIterable.drl	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/resources/org/drools/runtime/pipeline/impl/test_SmooksNestedIterable.drl	2009-01-13 05:26:47 UTC (rev 24657)
@@ -2,6 +2,8 @@
 
 global java.util.List list;
 
+global org.drools.runtime.pipeline.impl.Root root
+
 declare OrderItem
     productId : long
     quantity : Integer

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java (from rev 24646, labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformer.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,50 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStream;
+import java.io.Reader;
+
+import javax.xml.transform.Source;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.SmooksTransformerProvider;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.XStreamTransformerProvider;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import com.thoughtworks.xstream.XStream;;
+
+public class XStreamFromXmlTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private XStream                    xstream;   
+
+    public XStreamFromXmlTransformer(XStream xstream) {
+        this.xstream = xstream;
+
+    }
+
+    public void receive(Object object,
+                       PipelineContext context) {
+        this.xstream.setClassLoader( context.getClassLoader() );
+        Object result = null;
+        try {
+        	if ( object instanceof String ) {
+        	    result = this.xstream.fromXML( ( String ) object );
+        	} else  if ( object instanceof Reader ) {
+        		result = this.xstream.fromXML( ( Reader ) object );
+        	} else if ( object instanceof InputStream ) {
+        		result = this.xstream.fromXML( ( InputStream ) object );
+        	} else if ( object instanceof Resource ) {
+                result = this.xstream.fromXML( (( Resource ) object).getReader() );
+            } else {
+                throw new IllegalArgumentException( "signal object must be instance of InputStream or Resource" );
+            }
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        emit( result,
+              context );
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamToXmlTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamToXmlTransformer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamToXmlTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,35 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Transformer;
+
+import com.thoughtworks.xstream.XStream;
+
+;
+
+public class XStreamToXmlTransformer extends BaseEmitter
+    implements
+    Transformer {
+    private XStream xstream;
+
+    public XStreamToXmlTransformer(XStream xstream) {
+        this.xstream = xstream;
+
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        this.xstream.setClassLoader( context.getClassLoader() );
+        Object result = null;
+        try {
+            result = this.xstream.toXML( object );
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        emit( result,
+              context );
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformer.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformer.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,55 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.InputStream;
-import java.io.Reader;
-
-import javax.xml.transform.Source;
-
-import org.drools.io.Resource;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.SmooksTransformerProvider;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.XStreamTransformerProvider;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-import com.thoughtworks.xstream.XStream;;
-
-public class XStreamTransformer extends BaseEmitter
-    implements
-    Transformer {
-    private XStream                    xstream;   
-
-    public XStreamTransformer(XStream xstream) {
-        this.xstream = xstream;
-
-    }
-
-    public void receive(Object object,
-                       PipelineContext context) {
-        this.xstream.setClassLoader( context.getClassLoader() );
-        Object result = null;
-        try {
-        	if ( object instanceof Reader ) {
-        		result = this.xstream.fromXML( ( Reader ) object );
-        	} else if ( object instanceof InputStream ) {
-        		result = this.xstream.fromXML( ( InputStream ) object );
-        	} else if ( object instanceof Resource ) {
-                result = this.xstream.fromXML( (( Resource ) object).getReader() );
-            } else {
-                throw new IllegalArgumentException( "signal object must be instance of InputStream or Resource" );
-            }
-        } catch ( Exception e ) {
-            handleException( this,
-                             object,
-                             e );
-        }
-        emit( result,
-              context );
-    }
-    
-    public static class XStreamTransformerProviderImpl implements XStreamTransformerProvider {
-        public Transformer newXStreamTransformer(XStream xstream) {
-            return new XStreamTransformer( xstream );
-        }
-    }
-
-}

Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformerProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformerProviderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamTransformerProviderImpl.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,19 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.XStreamTransformerProvider;
+
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamTransformerProviderImpl implements XStreamTransformerProvider {
+    public Transformer newXStreamFromXmlTransformer(XStream xstream) {
+        return new XStreamFromXmlTransformer( xstream );
+    }
+    
+    public Transformer newXStreamToXmlTransformer(XStream xstream) {
+        return new XStreamToXmlTransformer( xstream );
+    }        
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,144 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.transform.stream.StreamSource;
-
-import junit.framework.TestCase;
-
-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.io.ResourceFactory;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.pipeline.Action;
-import org.drools.runtime.pipeline.Expression;
-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.Splitter;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.rule.FactHandle;
-
-import com.thoughtworks.xstream.XStream;
-
-public class DroolsXStreamStatefulSessionTest extends TestCase {
-
-    public void testDirectRoot() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
-                                                            DroolsXStreamStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-
-        XStream xstream = new XStream();
-        Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.setReceiver( insertStage );
-
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ),
-                         resultHandler );
-        ksession.fireAllRules();
-
-        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
-
-        assertEquals( 1,
-                      handles.size() );
-        assertEquals( 1,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-    }
-
-    public void testNestedIterable() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
-                                                            DroolsXStreamStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
-        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
-        insertStage.setReceiver( executeResultHandler );
-
-        Splitter splitter = PipelineFactory.newIterateSplitter();
-        splitter.setReceiver( insertStage );
-
-        XStream xstream = new XStream();
-        Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.setReceiver( splitter );
-
-        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ),
-                         resultHandler );
-
-        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
-        ksession.fireAllRules();
-
-        assertEquals( 2,
-                      handles.size() );
-        assertEquals( 2,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-        assertEquals( "example.OrderItem",
-                      list.get( 1 ).getClass().getName() );
-
-        assertNotSame( list.get( 0 ),
-                       list.get( 1 ) );
-    }
-
-    public static class ResultHandlerImpl
-        implements
-        ResultHandler {
-        Object object;
-
-        public void handleResult(Object object) {
-            this.object = object;
-        }
-
-        public Object getObject() {
-            return this.object;
-        }
-    }
-
-}

Deleted: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java	2009-01-13 04:05:49 UTC (rev 24656)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -1,118 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-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.io.ResourceFactory;
-import org.drools.runtime.StatelessKnowledgeSession;
-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.Transformer;
-
-import com.thoughtworks.xstream.XStream;
-
-public class DroolsXStreamStatelessSessionTest extends TestCase {
-
-    public void testXstreamDirectRoot() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
-                                                            DroolsXStreamStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
-
-        XStream xstream = new XStream();
-        Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.setReceiver( execute );
-
-        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ),
-                         resultHandler );
-
-        assertEquals( 1,
-                      list.size() );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-    }
-
-    public void testXstreamNestedIterable() throws Exception {
-        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-
-        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
-                                                            DroolsXStreamStatefulSessionTest.class ),
-                      ResourceType.DRL );
-
-        assertFalse( kbuilder.hasErrors() );
-
-        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-
-        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-        List list = new ArrayList();
-        ksession.setGlobal( "list",
-                            list );
-
-        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
-
-        Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this  )" );
-        mvelAction.setReceiver( execute );
-
-        XStream xstream = new XStream();
-        Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.setReceiver( mvelAction );
-
-        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-        pipeline.setReceiver( transformer );
-
-        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-        pipeline.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ),
-                         resultHandler );
-
-        assertEquals( "example.OrderItem",
-                      list.get( 0 ).getClass().getName() );
-        assertEquals( "example.OrderItem",
-                      list.get( 1 ).getClass().getName() );
-
-        assertNotSame( list.get( 0 ),
-                       list.get( 1 ) );
-    }
-
-    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-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamFactTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,102 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+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.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.Transformer;
+import org.drools.runtime.pipeline.impl.XStreamStatefulSessionTest.ResultHandlerImpl;
+import org.drools.runtime.rule.FactHandle;
+
+import com.thoughtworks.xstream.XStream;
+
+import junit.framework.TestCase;
+
+public class XStreamFactTest extends TestCase {
+    public void testFact() throws Exception {
+        String xml = "";
+        xml += "<list>";
+        xml += "<example.OrderItem>";
+        xml += "    <price>8.9</price>";        
+        xml += "    <productId>111</productId>";
+        xml += "    <quantity>2</quantity>";        
+        xml += "</example.OrderItem>";
+        xml += "</list>";
+
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+        
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( insertStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( xml,
+                         resultHandler );
+        
+        FactHandle factHandle = ( FactHandle ) ((Map)resultHandler.getObject()).keySet().iterator().next();
+        assertNotNull( factHandle );
+
+
+        // now round trip that global
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+        
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+        
+        transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+        transformer.setReceiver( assignAsResult );
+        
+        KnowledgeRuntimeCommand getObject = PipelineFactory.newStatefulKnowledgeSessionGetObject();      
+        getObject.setReceiver( transformer );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( getObject );
+        
+        resultHandler = new ResultHandlerImpl();
+        pipeline.insert( factHandle, resultHandler );  
+        
+        assertEqualsIgnoreWhitespace( xml, (String) resultHandler.getObject() );
+    }
+    
+    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-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamGlobalTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,96 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+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.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.Transformer;
+import org.drools.runtime.pipeline.impl.XStreamStatefulSessionTest.ResultHandlerImpl;
+import org.drools.runtime.rule.FactHandle;
+
+import com.thoughtworks.xstream.XStream;
+
+import junit.framework.TestCase;
+
+public class XStreamGlobalTest extends TestCase {
+    public void testGlobal() throws Exception {
+        String xml = "";
+        xml += "<list>";
+        xml += "<example.OrderItem>";
+        xml += "    <price>8.9</price>";        
+        xml += "    <productId>111</productId>";
+        xml += "    <quantity>2</quantity>";        
+        xml += "</example.OrderItem>";
+        xml += "</list>";
+
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        KnowledgeRuntimeCommand setGlobalStage = PipelineFactory.newStatefulKnowledgeSessionSetGlobal( "list" );
+
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( setGlobalStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( xml,
+                         resultHandler );
+
+
+        // now round trip that global
+        Action executeResult = PipelineFactory.newExecuteResultHandler();
+        
+        Action assignAsResult = PipelineFactory.newAssignObjectAsResult();
+        assignAsResult.setReceiver( executeResult );
+        
+        transformer = PipelineFactory.newXStreamToXmlTransformer( xstream );
+        transformer.setReceiver( assignAsResult );
+        
+        KnowledgeRuntimeCommand getGlobalStage = PipelineFactory.newStatefulKnowledgeSessionGetGlobal( );        
+        getGlobalStage.setReceiver( transformer );
+
+        pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( getGlobalStage );
+        
+        resultHandler = new ResultHandlerImpl();
+        pipeline.insert( "list", resultHandler );  
+        
+        assertEqualsIgnoreWhitespace( xml, (String) resultHandler.getObject() );
+    }
+    
+    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 );
+           }
+}

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatefulSessionTest.java (from rev 24647, labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatefulSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatefulSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,144 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+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.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Expression;
+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.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.rule.FactHandle;
+
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamStatefulSessionTest extends TestCase {
+
+    public void testDirectRoot() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( insertStage );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ),
+                         resultHandler );
+        ksession.fireAllRules();
+
+        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
+
+        assertEquals( 1,
+                      handles.size() );
+        assertEquals( 1,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+    }
+
+    public void testNestedIterable() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+        KnowledgeRuntimeCommand insertStage = PipelineFactory.newStatefulKnowledgeSessionInsert();
+        insertStage.setReceiver( executeResultHandler );
+
+        Splitter splitter = PipelineFactory.newIterateSplitter();
+        splitter.setReceiver( insertStage );
+
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( splitter );
+
+        Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ),
+                         resultHandler );
+
+        Map<FactHandle, Object> handles = (Map<FactHandle, Object>) resultHandler.getObject();
+        ksession.fireAllRules();
+
+        assertEquals( 2,
+                      handles.size() );
+        assertEquals( 2,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+        assertEquals( "example.OrderItem",
+                      list.get( 1 ).getClass().getName() );
+
+        assertNotSame( list.get( 0 ),
+                       list.get( 1 ) );
+    }
+
+    public static class ResultHandlerImpl
+        implements
+        ResultHandler {
+        Object object;
+
+        public void handleResult(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return this.object;
+        }
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatefulSessionTest.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java (from rev 24647, labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java	2009-01-13 05:26:47 UTC (rev 24657)
@@ -0,0 +1,118 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+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.io.ResourceFactory;
+import org.drools.runtime.StatelessKnowledgeSession;
+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.Transformer;
+
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamStatelessSessionTest extends TestCase {
+
+    public void testXstreamDirectRoot() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( execute );
+
+        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ),
+                         resultHandler );
+
+        assertEquals( 1,
+                      list.size() );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+    }
+
+    public void testXstreamNestedIterable() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+        kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
+                                                            XStreamStatefulSessionTest.class ),
+                      ResourceType.DRL );
+
+        assertFalse( kbuilder.hasErrors() );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list",
+                            list );
+
+        KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+
+        Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this  )" );
+        mvelAction.setReceiver( execute );
+
+        XStream xstream = new XStream();
+        Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
+        transformer.setReceiver( mvelAction );
+
+        Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
+        pipeline.setReceiver( transformer );
+
+        ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+        pipeline.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ),
+                         resultHandler );
+
+        assertEquals( "example.OrderItem",
+                      list.get( 0 ).getClass().getName() );
+        assertEquals( "example.OrderItem",
+                      list.get( 1 ).getClass().getName() );
+
+        assertNotSame( list.get( 0 ),
+                       list.get( 1 ) );
+    }
+
+    public static class ResultHandlerImpl
+        implements
+        ResultHandler {
+        Object object;
+
+        public void handleResult(Object object) {
+            this.object = object;
+        }
+
+        public Object getObject() {
+            return this.object;
+        }
+    }
+}


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java
___________________________________________________________________
Name: svn:mergeinfo
   + 




More information about the jboss-svn-commits mailing list