[jboss-svn-commits] JBL Code SVN: r24596 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools/runtime/pipeline and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 7 23:17:30 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-07 23:17:30 -0500 (Wed, 07 Jan 2009)
New Revision: 24596

Added:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/DataLoader.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandler.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerContext.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatefulKnowledgeSessionPipelineContext.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulKnowledgeSessionPipelineTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/Pipeline.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineContextFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertPipelineImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineImpl.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineTest.java
Removed:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatefulKnowledgeSessionDataLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/Emitter.java
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/DataLoaderProviderImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/EntryPointPipelineContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BaseEmitter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelExpression.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/CallableTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/IterateSplitterTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/ListAdapterTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml
   labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/JxlsTest.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/
   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
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders
-Make individual pipelines for each stateful and stateless use case.

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderFactory.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -8,12 +8,12 @@
 public class DataLoaderFactory {
     private static volatile DataLoaderProvider provider;
 
-    public static StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    public static WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                                            Receiver pipeline) {
-        return getDataLoaderProvider().newStatefulKnowledgeSessionDataLoader( ksession, pipeline );
+        return getDataLoaderProvider().newStatefulRuleSessionDataLoader( ksession, pipeline );
     }
     
-    public static StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    public static WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                                            String entryPointName,
                                                                                            Receiver pipeline) {
         return getDataLoaderProvider().newStatefulKnowledgeSessionDataLoader( ksession, entryPointName, pipeline );

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/DataLoaderProvider.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -5,10 +5,10 @@
 import org.drools.runtime.pipeline.Receiver;
 
 public interface DataLoaderProvider {
-    StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                              Receiver pipeline);
 
-    StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    WorkingMemoryDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                              String entryPointName,
                                                                              Receiver pipeline);
     

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/ProcessRuntimeDataLoader.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,8 @@
+package org.drools.runtime.dataloader;
+
+import org.drools.runtime.process.ProcessInstance;
+
+public interface ProcessRuntimeDataLoader {
+    ProcessInstance startProcess(String processId,
+                                 Object parameters);
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatefulKnowledgeSessionDataLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatefulKnowledgeSessionDataLoader.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatefulKnowledgeSessionDataLoader.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,9 +0,0 @@
-package org.drools.runtime.dataloader;
-
-import java.util.Map;
-
-import org.drools.runtime.rule.FactHandle;
-
-public interface StatefulKnowledgeSessionDataLoader {
-    Map<FactHandle, Object> insert(Object object);
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java (from rev 24524, labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/StatefulKnowledgeSessionDataLoader.java)
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,10 @@
+package org.drools.runtime.dataloader;
+
+import java.util.Map;
+
+import org.drools.runtime.pipeline.Feeder;
+import org.drools.runtime.rule.FactHandle;
+
+public interface WorkingMemoryDataLoader {
+    Map<FactHandle, Object> insert(Object object);
+}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/dataloader/WorkingMemoryDataLoader.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/DataLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/DataLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/DataLoader.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,5 @@
+package org.drools.runtime.pipeline;
+
+public interface DataLoader extends Emitter, Stage {
+
+}

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/Emitter.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/Emitter.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/Emitter.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,12 +1,7 @@
 package org.drools.runtime.pipeline;
 
-import java.util.Collection;
-
 public interface Emitter {
-	void addReceiver(Receiver receiver);
+	void setReceiver(Receiver receiver);
 
-	void removeReceiver(Receiver receiver);
-	
-	Collection<Receiver> getReceivers();
-	
+	Receiver getReceiver();	
 }

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -3,7 +3,15 @@
 import java.util.Map;
 
 public interface PipelineContext {
+        
     ClassLoader getClassLoader();
     
-    public Map<String, Object> getProperties();
+    Map<String, Object> getProperties();
+    
+    void setResult(Object result);
+    
+    Object getResult();
+    
+    ResultHandler getResultHandler();
+    
 }

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandler.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,5 @@
+package org.drools.runtime.pipeline;
+
+public interface ResultHandler {
+    public void handleResult(Object object);
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,5 @@
+package org.drools.runtime.pipeline;
+
+public interface ResultHandlerContext {
+
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/ResultHandlerFactory.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,5 @@
+package org.drools.runtime.pipeline;
+
+public interface ResultHandlerFactory {    
+    ResultHandler newResult(ResultHandlerContext context);
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatefulKnowledgeSessionPipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatefulKnowledgeSessionPipelineContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatefulKnowledgeSessionPipelineContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,9 @@
+package org.drools.runtime.pipeline;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+
+public interface StatefulKnowledgeSessionPipelineContext
+    extends
+    PipelineContext {
+    StatefulKnowledgeSession getStatefulKnowledgeSession();
+}

Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,22 @@
+package org.drools.runtime.pipeline;
+
+import org.drools.runtime.Parameters;
+import org.drools.runtime.StatelessKnowledgeSession;
+
+public interface StatelessKnowledgeSessionPipelineContext
+    extends
+    PipelineContext {
+    
+    StatelessKnowledgeSession getStatelessKnowledgeSession();
+    
+    void setObject(Object object);
+    
+    Object getObject();
+    
+    void setIterable(Iterable iterable);
+    
+    Iterable getIterable();
+    
+    Parameters getParameters();
+    
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulKnowledgeSessionPipelineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulKnowledgeSessionPipelineTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatefulKnowledgeSessionPipelineTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,45 @@
+package org.drools.integrationtests;
+
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.impl.MvelAction;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertPipelineImpl;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+
+import junit.framework.TestCase;
+
+public class StatefulKnowledgeSessionPipelineTest extends TestCase {
+    public void testInsertObject() {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        
+        StatefulKnowledgeSessionInsertStage stage1 = new StatefulKnowledgeSessionInsertStage();
+        MvelAction mvelAction = new MvelAction( "context.resultHandler.handleResult( context.handles )");
+        stage1.setReceiver( mvelAction );
+        
+        StatefulKnowledgeSessionInsertPipelineImpl pipeline = new StatefulKnowledgeSessionInsertPipelineImpl(ksession);
+        pipeline.setReceiver( stage1 );
+        
+        assertEquals( 0, ksession.getObjects().size() );
+        
+        ResultHandlerImpl resultHanadle = new ResultHandlerImpl();
+        pipeline.insert( "Hello", resultHanadle );
+        
+        assertEquals( 1, resultHanadle.getHandles().size() );              
+    }
+    
+    public static class ResultHandlerImpl implements ResultHandler {
+        Map handles;
+        public void handleResult(Object object) {
+           this.handles = ( Map ) object;             
+        }
+        public Map getHandles() {
+            return this.handles;
+        }
+        
+    }
+}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,311 @@
+package org.drools.integrationtests;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.StatelessSessionResult;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.Parameters;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSessionResults;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.impl.MvelAction;
+import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
+import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionExecuteStage;
+import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionPipelineImpl;
+
+public class StatelessKnowledgeSessionPipelineTest extends TestCase {
+    public void testExecuteObjectAsDefault() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list", list );
+        
+        
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( stage1 );
+        
+        pipeline.insert( "hello world", null );
+        
+        assertEquals( 1, list.size() );
+        
+        assertEquals( "hello world", list.get( 0 ) );           
+    }
+    
+    public void testExecuteObject() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list", list );
+        
+        
+        MvelAction mvelAction = new MvelAction( "context.object = this");
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        mvelAction.setReceiver( stage1 );
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( mvelAction );
+        
+        pipeline.insert( "hello world", null );
+        
+        assertEquals( 1, list.size() );
+        
+        assertEquals( "hello world", list.get( 0 ) );           
+    }
+    
+    public void testExecuteIterable() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        List list = new ArrayList();
+        ksession.setGlobal( "list", list );
+        
+        
+        MvelAction mvelAction = new MvelAction( "context.setIterable( this )");
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        mvelAction.setReceiver( stage1 );
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( mvelAction );
+        
+        List items = new ArrayList();
+        items.add( "hello world" );
+        items.add( "goodbye world" );
+        
+        pipeline.insert( items, null );
+        
+        assertEquals( 2, list.size() );
+        
+        Collections.sort( list );        
+        assertEquals( "goodbye world", list.get( 0 ) );
+        assertEquals( "hello world", list.get( 1 ) );
+    }    
+    
+    public void testExecuteObjectAsDefaultWithParameters() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        
+        MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
+        
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        mvelAction2.setReceiver( stage1 );
+        
+        MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
+        stage1.setReceiver( mvelAction3 );
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( mvelAction2 );
+        
+        ResultHandlerImpl handler = new ResultHandlerImpl();
+        
+        pipeline.insert( "hello world", handler );
+        
+        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
+        
+        assertEquals( 1, list.size() );
+        
+        assertEquals( "hello world", list.get( 0 ) );              
+    }     
+    
+    public void testExecuteObjectWithParameters() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        
+        MvelAction mvelAction1 = new MvelAction( "context.object = this");
+        MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
+        
+        mvelAction1.setReceiver( mvelAction2 );
+        
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        mvelAction2.setReceiver( stage1 );
+        
+        MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
+        stage1.setReceiver( mvelAction3 );
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( mvelAction1 );
+        
+        ResultHandlerImpl handler = new ResultHandlerImpl();
+        
+        pipeline.insert( "hello world", handler );
+        
+        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
+        
+        assertEquals( 1, list.size() );
+        
+        assertEquals( "hello world", list.get( 0 ) );              
+    }    
+    
+    public void testExecuteIterableWithParameters() {
+        String str = "";
+        str += "package org.sample \n";
+        str += "global java.util.List list; \n";
+        str += "rule rule1 \n";
+        str += "  when \n";
+        str += "    s : String() \n";
+        str += "  then \n";
+        str += "    list.add( s ); ";
+        str += "end\n";
+        
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            System.out.println( kbuilder.getErrors() );
+        }
+        assertFalse( kbuilder.hasErrors() );
+        
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+        
+    MvelAction mvelAction1 = new MvelAction( "context.setIterable( this )");
+        MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
+        
+        mvelAction1.setReceiver( mvelAction2 );
+        
+        StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
+        mvelAction2.setReceiver( stage1 );
+        
+        MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
+        stage1.setReceiver( mvelAction3 );
+        
+        StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
+        pipeline.setReceiver( mvelAction1 );
+        
+        ResultHandlerImpl handler = new ResultHandlerImpl();
+        
+        List items = new ArrayList();
+        items.add( "hello world" );
+        items.add( "goodbye world" );
+        
+        pipeline.insert( items, handler );
+        
+        List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
+        
+        assertEquals( 2, list.size() );
+        
+        Collections.sort( list );        
+        assertEquals( "goodbye world", list.get( 0 ) );
+        assertEquals( "hello world", list.get( 1 ) );         
+    }       
+    
+    public static class ResultHandlerImpl implements ResultHandler {        
+        StatelessKnowledgeSessionResults results;
+        
+        public void handleResult(Object object) {
+           this.results = ( StatelessKnowledgeSessionResults ) object;             
+        }
+        
+        public StatelessKnowledgeSessionResults getStatelessKnowledgeSessionResults() {
+            return this.results;
+        }
+        
+    }
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,12 +1,15 @@
 package org.drools.impl;
 
+import java.util.Collection;
+import java.util.Map;
+
 import org.drools.runtime.FactParams;
 import org.drools.runtime.GlobalParams;
 import org.drools.runtime.Parameters;
 
 public class ParametersImpl implements Parameters {
-    private FactParams factParams = new FactParamsImpl();
-    private GlobalParams globalParams = new GlobalParamsImpl();
+    private FactParamsImpl factParams = new FactParamsImpl();
+    private GlobalParamsImpl globalParams = new GlobalParamsImpl();
         
     public FactParams getFactParams() {
         return this.factParams;
@@ -15,5 +18,25 @@
     public GlobalParams getGlobalParams() {
         return this.globalParams;
     }
+    
+    public boolean isEmpty() {
+        if ( !isEmpty(factParams.getIn() ) || !isEmpty( factParams.getOut() ) || !isEmpty( factParams.getInOut() ) ) {
+            return false;
+        }
+        
+        if ( !isEmpty(globalParams.getIn() ) || !isEmpty( globalParams.getOut() ) || !isEmpty( globalParams.getInOut() ) ) {
+            return false;
+        }        
+        
+        return true;
+    }
+    
+    public boolean isEmpty(Collection collection) {
+        return collection == null || collection.isEmpty();
+    }
+    
+    public boolean isEmpty(Map map) {
+        return map == null || map.isEmpty();
+    }    
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/DataLoaderProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/DataLoaderProviderImpl.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/DataLoaderProviderImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -3,7 +3,7 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.StatelessKnowledgeSession;
 import org.drools.runtime.dataloader.DataLoaderProvider;
-import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.WorkingMemoryDataLoader;
 import org.drools.runtime.dataloader.StatelessKnowledgeSessionDataLoader;
 import org.drools.runtime.pipeline.Receiver;
 
@@ -11,12 +11,12 @@
     implements
     DataLoaderProvider {
       
-    public StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    public WorkingMemoryDataLoader newStatefulRuleSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                                     Receiver pipeline) {
         return new StatefulKnowledgeSessionDataLoaderImpl(ksession, pipeline);
     }    
 
-    public StatefulKnowledgeSessionDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
+    public WorkingMemoryDataLoader newStatefulKnowledgeSessionDataLoader(StatefulKnowledgeSession ksession,
                                                                                     String entryPointName,
                                                                                     Receiver pipeline) {
         return new StatefulKnowledgeSessionDataLoaderImpl(ksession, entryPointName, pipeline);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/EntryPointPipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/EntryPointPipelineContext.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/EntryPointPipelineContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -8,10 +8,8 @@
 
 import org.drools.common.InternalRuleBase;
 import org.drools.common.InternalWorkingMemoryEntryPoint;
-import org.drools.impl.KnowledgeBaseImpl;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.ResultHandler;
 import org.drools.runtime.pipeline.impl.BasePipelineContext;
 import org.drools.runtime.rule.FactHandle;
 import org.drools.runtime.rule.WorkingMemoryEntryPoint;
@@ -19,13 +17,16 @@
 public class EntryPointPipelineContext extends BasePipelineContext
     implements
     PipelineContext {
-    private Map                      handles;    
-    private WorkingMemoryEntryPoint  entryPoint;
+    private Map                     handles;
+    private WorkingMemoryEntryPoint entryPoint;
+    private ResultHandler           resultHandler;
 
-    public EntryPointPipelineContext(WorkingMemoryEntryPoint  entryPoint) {
-        super( ((InternalRuleBase)((InternalWorkingMemoryEntryPoint)entryPoint).getRuleBase()).getRootClassLoader() );
+    public EntryPointPipelineContext(WorkingMemoryEntryPoint entryPoint,
+                                     ResultHandler resultHandler) {
+        super( ((InternalRuleBase) ((InternalWorkingMemoryEntryPoint) entryPoint).getRuleBase()).getRootClassLoader() );
         this.handles = new HashMap<FactHandle, Object>();
         this.entryPoint = entryPoint;
+        this.resultHandler = resultHandler;
     }
 
     public Map getHandles() {
@@ -35,4 +36,9 @@
     public WorkingMemoryEntryPoint getEntryPoint() {
         return entryPoint;
     }
+
+    public ResultHandler getResultHandler() {
+        return resultHandler;
+    }
+
 }
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,46 +0,0 @@
-package org.drools.runtime.dataloader.impl;
-
-import java.util.Map;
-
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
-import org.drools.runtime.pipeline.Receiver;
-import org.drools.runtime.rule.WorkingMemoryEntryPoint;
-
-public class StatefulKnowledgeSessionDataLoaderImpl
-    implements
-    StatefulKnowledgeSessionDataLoader {
-    private StatefulKnowledgeSession ksession;
-    private String                   entryPointName;
-    private WorkingMemoryEntryPoint  entryPoint;
-
-    private Receiver                 pipeline;
-
-    public StatefulKnowledgeSessionDataLoaderImpl(StatefulKnowledgeSession ksession,
-                                                  String entryPointName,
-                                                  Receiver pipeline) {
-        this.ksession = ksession;
-        this.entryPointName = entryPointName;
-        this.entryPoint = ksession.getWorkingMemoryEntryPoint( this.entryPointName );
-        this.pipeline = pipeline;
-    }
-
-    public StatefulKnowledgeSessionDataLoaderImpl(StatefulKnowledgeSession ksession,
-                                                  Receiver pipeline) {
-        this.ksession = ksession;
-        this.entryPoint = ksession;
-        this.pipeline = pipeline;
-    }
-
-    /* (non-Javadoc)
-     * @see org.drools.dataloaders.smooks.StatefulKnowledgeSessionDataLoader#insert(java.lang.Object)
-     */
-    public Map insert(Object object) {
-        EntryPointPipelineContext context = new EntryPointPipelineContext( this.entryPoint );
-        this.pipeline.receive( object,
-                              context );
-
-        return context.getHandles();
-    }
-
-}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/dataloader/impl/StatefulKnowledgeSessionDataLoaderImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,50 @@
+package org.drools.runtime.dataloader.impl;
+
+import java.util.Map;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.dataloader.WorkingMemoryDataLoader;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+
+public class StatefulKnowledgeSessionDataLoaderImpl
+    implements
+    WorkingMemoryDataLoader {
+    private StatefulKnowledgeSession ksession;
+    private String                   entryPointName;
+    private WorkingMemoryEntryPoint  entryPoint;
+    private Receiver                 pipeline;
+
+    public StatefulKnowledgeSessionDataLoaderImpl(StatefulKnowledgeSession ksession,
+                                             String entryPointName,
+                                             Receiver pipeline) {
+        this.ksession = ksession;
+        this.entryPointName = entryPointName;
+        this.entryPoint = ksession.getWorkingMemoryEntryPoint( this.entryPointName );
+        this.pipeline = pipeline;
+    }
+
+    public StatefulKnowledgeSessionDataLoaderImpl(StatefulKnowledgeSession ksession,
+                                             Receiver pipeline) {
+        this.ksession = ksession;
+        this.entryPoint = ksession;
+        this.pipeline = pipeline;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.dataloaders.smooks.StatefulKnowledgeSessionDataLoader#insert(java.lang.Object)
+     */
+    public Map insert(Object object) {
+        EntryPointPipelineContext context = new EntryPointPipelineContext( this.entryPoint, null );
+        this.pipeline.receive( object,
+                               context );
+
+        return context.getHandles();
+    }
+    
+    public ProcessInstance startProcess(String id, Object object) {
+        return null;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BaseEmitter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BaseEmitter.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BaseEmitter.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -12,29 +12,24 @@
 public class BaseEmitter extends BaseStage
     implements
     Emitter {
-    protected List<Receiver> receivers;
+    protected Receiver receiver;
 
     public BaseEmitter() {
-        this.receivers = new CopyOnWriteArrayList<Receiver>();
     }
 
-    public void addReceiver(Receiver receiver) {
-        this.receivers.add( receiver );
+    public void setReceiver(Receiver receiver) {
+        this.receiver = receiver;
     }
 
-    public void removeReceiver(Receiver receiver) {
-        this.receivers.remove( receiver );
+    public Receiver getReceiver() {
+        return this.receiver;
     }
 
-    public Collection<Receiver> getReceivers() {
-        return Collections.unmodifiableCollection( this.receivers );
-    }
-
     protected void emit(Object object,
                         PipelineContext context) {
-        for ( Receiver receiver : this.receivers ) {
+        if ( this.receiver != null ) {
             receiver.receive( object,
-                             context );
+                              context );
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -4,13 +4,24 @@
 import java.util.Map;
 
 import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.ResultHandler;
 
-public class BasePipelineContext implements PipelineContext {
-    private ClassLoader               classLoader;
-    private Map<String, Object>       properties;
+public class BasePipelineContext
+    implements
+    PipelineContext {
+    private ClassLoader         classLoader;
+    private Map<String, Object> properties;
+    private Object              result;
+    private ResultHandler       resultHandler;
 
-    public BasePipelineContext(ClassLoader               classLoader) {
+    public BasePipelineContext(ClassLoader classLoader) {
+        this(classLoader, null);
+    }
+
+    public BasePipelineContext(ClassLoader classLoader,
+                               ResultHandler resultHandler) {
         this.classLoader = classLoader;
+        this.resultHandler = resultHandler;
         this.properties = new HashMap<String, Object>();
     }
 
@@ -21,5 +32,17 @@
     public Map<String, Object> getProperties() {
         return properties;
     }
+
+    public ResultHandler getResultHandler() {
+        return this.resultHandler;
+    }
+
+    public Object getResult() {
+        return result;
+    }
+
+    public void setResult(Object result) {
+        this.result = result;
+    }
         
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointResultStage.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,20 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+
+public class EntryPointResultStage extends BaseEmitter
+    implements
+    Receiver {
+    public void receive(Object object,
+                       PipelineContext context) {
+        
+        EntryPointPipelineContext pContext = (EntryPointPipelineContext) context;
+        pContext.getResultHandler().handleResult( pContext.getHandles() );
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/EntryPointStage.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,25 @@
+/**
+ * 
+ */
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
+import org.drools.runtime.pipeline.Adapter;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.impl.BaseStage;
+import org.drools.runtime.rule.FactHandle;
+
+public class EntryPointStage extends BaseEmitter
+    implements
+    Receiver {
+    public void receive(Object object,
+                       PipelineContext context) {
+        EntryPointPipelineContext pContext = (EntryPointPipelineContext) context;
+
+        FactHandle handle = ((pContext).getEntryPoint()).insert( object );
+        ((pContext).getHandles()).put( handle,
+                                       object );
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,6 +1,8 @@
 package org.drools.runtime.pipeline.impl;
 
 import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.drools.runtime.pipeline.Action;
 import org.drools.runtime.pipeline.PipelineContext;
@@ -26,8 +28,11 @@
     public void receive(Object object,
                         PipelineContext context) {
         try {
+            Map<String, Object> vars = new HashMap<String, Object>(1);
+            vars.put( "context", context );
             MVEL.executeExpression( this.expr,
-                                    object );
+                                    object,
+                                    vars );
         } catch ( Exception e ) {
             handleException( this,
                              object,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelExpression.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelExpression.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -1,6 +1,8 @@
 package org.drools.runtime.pipeline.impl;
 
 import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.drools.runtime.pipeline.Expression;
 import org.drools.runtime.pipeline.PipelineContext;
@@ -27,8 +29,11 @@
                        PipelineContext context) {
         Object result = null;
         try {
+            Map<String, Object> vars = new HashMap<String, Object>(1);
+            vars.put( "context", context );
             result = MVEL.executeExpression( this.expr,
-                                             object );
+                                    object,
+                                    vars );
         } catch ( Exception e ) {
             handleException( this,
                              object,

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/Pipeline.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/Pipeline.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/Pipeline.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,7 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.pipeline.ResultHandler;
+
+public interface Pipeline {
+    void insert(Object object, ResultHandler resultHandler);
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineContextFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineContextFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineContextFactory.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,7 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.pipeline.PipelineContext;
+
+public interface PipelineContextFactory {
+    PipelineContext newPipelineContext();
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/PipelineImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,13 @@
+package org.drools.runtime.pipeline.impl;
+
+public class PipelineImpl extends BaseEmitter {
+    private PipelineContextFactory factory;
+    
+    public PipelineImpl(PipelineContextFactory factory) {
+        this.factory = factory;
+    }
+    
+    public void insert(Object object) {
+        emit( object, this.factory.newPipelineContext() );
+    }
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertPipelineImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertPipelineImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertPipelineImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,30 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+
+public class StatefulKnowledgeSessionInsertPipelineImpl extends BaseEmitter
+    implements
+    Pipeline {
+    private WorkingMemoryEntryPoint entryPoint;
+
+    public StatefulKnowledgeSessionInsertPipelineImpl(StatefulKnowledgeSession ksession,
+                                                      String entryPointName) {
+        this.entryPoint = ksession.getWorkingMemoryEntryPoint( entryPointName );
+    }
+
+    public StatefulKnowledgeSessionInsertPipelineImpl(StatefulKnowledgeSession ksession) {
+        this.entryPoint = ksession;
+    }
+
+    public void insert(Object object,
+                       ResultHandler resultHandler) {
+        EntryPointPipelineContext context = new EntryPointPipelineContext( this.entryPoint,
+                                                                           resultHandler );
+        emit( object, context );        
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionInsertStage.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,21 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.rule.FactHandle;
+
+public class StatefulKnowledgeSessionInsertStage extends BaseEmitter implements Receiver {
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        EntryPointPipelineContext epContext = ( EntryPointPipelineContext ) context;
+        FactHandle handle = epContext.getEntryPoint().insert( object );
+        
+        epContext.getHandles().put( handle, (( InternalFactHandle ) handle ).getObject() );
+        
+        emit( object, epContext );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,32 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+
+public class StatefulKnowledgeSessionPipelineContextImpl extends BasePipelineContext
+    implements
+    StatefulKnowledgeSessionPipelineContext {
+    private StatefulKnowledgeSession ksession;
+    private WorkingMemoryEntryPoint  entryPoint;
+
+    public StatefulKnowledgeSessionPipelineContextImpl(StatefulKnowledgeSession ksession,
+                                                       ClassLoader classLoader,
+                                                       WorkingMemoryEntryPoint entryPoint,
+                                                       ResultHandler resultHandler) {
+        super( classLoader,
+               resultHandler );
+        this.ksession = ksession;
+        this.entryPoint = entryPoint;
+    }
+
+    public StatefulKnowledgeSession getStatefulKnowledgeSession() {
+        return this.ksession;
+    }
+
+    public WorkingMemoryEntryPoint getEntryPoint() {
+        return entryPoint;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionStartProcessStage.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,25 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Map;
+
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
+
+public class StatefulKnowledgeSessionStartProcessStage extends BaseStage
+    implements
+    Receiver {
+    private String id;
+
+    public StatefulKnowledgeSessionStartProcessStage(String id) {
+        this.id = id;
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        StatefulKnowledgeSessionPipelineContext kContext = (StatefulKnowledgeSessionPipelineContext) context;
+        kContext.getStatefulKnowledgeSession().startProcess( id,
+                                                             (Map<String, Object>) object );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,47 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.impl.ParametersImpl;
+import org.drools.runtime.StatelessKnowledgeSessionResults;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.StatelessKnowledgeSessionPipelineContext;
+
+public class StatelessKnowledgeSessionExecuteStage extends BaseEmitter
+    implements
+    Receiver {
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        StatelessKnowledgeSessionPipelineContext kContext = (StatelessKnowledgeSessionPipelineContext) context;
+
+        StatelessKnowledgeSessionResults results = null;
+        if ( kContext.getObject() != null ) {
+            if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty() ) {
+                kContext.getStatelessKnowledgeSession().executeObject( kContext.getObject() );
+            } else {
+                results = kContext.getStatelessKnowledgeSession().executeObjectWithParameters( kContext.getObject(),
+                                                                                               kContext.getParameters() );
+            }
+        } else if ( kContext.getIterable() != null ) {
+            if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty()  ) {
+                kContext.getStatelessKnowledgeSession().executeIterable( kContext.getIterable() );
+            } else {
+                results = kContext.getStatelessKnowledgeSession().executeIterableWithParameters( kContext.getIterable(),
+                                                                                                 kContext.getParameters() );
+            }
+        } else {
+            if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty() ) {
+                kContext.getStatelessKnowledgeSession().executeObject( object );
+            } else {
+                results = kContext.getStatelessKnowledgeSession().executeObjectWithParameters( object,
+                                                                                               kContext.getParameters() );
+            }
+        }
+        
+        context.setResult( results );
+        
+        emit( object, context );
+ 
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,61 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.impl.ParametersImpl;
+import org.drools.runtime.Parameters;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.StatelessKnowledgeSessionPipelineContext;
+
+public class StatelessKnowledgeSessionPipelineContextImpl extends BasePipelineContext
+    implements
+    StatelessKnowledgeSessionPipelineContext {
+
+    private StatelessKnowledgeSession ksession;
+    
+    private Iterable iterable;
+    
+    private Object object;
+    
+    private Parameters parameters;
+
+    public StatelessKnowledgeSessionPipelineContextImpl(StatelessKnowledgeSession ksession,
+                                                        ClassLoader classLoader) {
+        this( ksession,
+              classLoader,
+              null );
+    }
+
+    public StatelessKnowledgeSessionPipelineContextImpl(StatelessKnowledgeSession ksession,
+                                                        ClassLoader classLoader,
+                                                        ResultHandler resultHandler) {
+        super( classLoader,
+               resultHandler );
+        this.ksession = ksession;
+        this.parameters = new ParametersImpl();
+    }
+
+    public StatelessKnowledgeSession getStatelessKnowledgeSession() {
+        return this.ksession;
+    }
+
+    public Parameters getParameters() {
+        return parameters;
+    }
+
+    public Iterable getIterable() {
+        return iterable;
+    }
+
+    public void setIterable(Iterable iterable) {
+        this.iterable = iterable;
+    }
+
+    public Object getObject() {
+        return object;
+    }
+
+    public void setObject(Object object) {
+        this.object = object;
+    }
+            
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineImpl.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,26 @@
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.dataloader.impl.EntryPointPipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+
+public class StatelessKnowledgeSessionPipelineImpl extends BaseEmitter
+    implements
+    Pipeline {
+    private StatelessKnowledgeSession ksession;
+
+    public StatelessKnowledgeSessionPipelineImpl(StatelessKnowledgeSession ksession) {
+        this.ksession = ksession;
+    }
+
+    public void insert(Object object,
+                       ResultHandler resultHandler) {
+        StatelessKnowledgeSessionPipelineContextImpl context = new StatelessKnowledgeSessionPipelineContextImpl(ksession, Thread.currentThread().getContextClassLoader(), resultHandler );
+        
+        emit( object, context );        
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/CallableTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/CallableTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/CallableTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -11,8 +11,8 @@
         MockClass mock = new MockClass();
         Callable callable = PipelineFactory.newCallable();
         Action action = PipelineFactory.newMvelAction( "this.set = true" );
-        callable.addReceiver( action );
-        action.addReceiver( callable );
+        callable.setReceiver( action );
+        action.setReceiver( callable );
         assertFalse( mock.isSet() );
         callable.call( mock,
                        new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/IterateSplitterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/IterateSplitterTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/IterateSplitterTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -21,13 +21,13 @@
         
         Action action = PipelineFactory.newMvelAction( "this.setValues( [0, 1, 2, 3, 4] ) " );  
         Expression expr = PipelineFactory.newMvelExpression( "this.values" );
-        action.addReceiver( expr );
+        action.setReceiver( expr );
                 
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expr.addReceiver( splitter );
+        expr.setReceiver( splitter );
         
         ListAdapter listAdapter = PipelineFactory.newListAdapter( list, true );        
-        splitter.addReceiver( listAdapter );
+        splitter.setReceiver( listAdapter );
         
         assertNull( mock.getValues() );
         action.receive( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/ListAdapterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/ListAdapterTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/ListAdapterTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -19,7 +19,7 @@
         Action action = PipelineFactory.newMvelAction( "this.set = true" );   
         
         ListAdapter listAdapter = PipelineFactory.newListAdapter( list, true );        
-        action.addReceiver( listAdapter );
+        action.setReceiver( listAdapter );
         
         assertFalse( mock.isSet() );
         action.receive( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -20,10 +20,10 @@
                
         Callable callable = PipelineFactory.newCallable();
         Action action = PipelineFactory.newMvelAction( "this.setValues( [0, 1, 2, 3, 4] ) " );
-        callable.addReceiver( action );
+        callable.setReceiver( action );
         Expression expr = PipelineFactory.newMvelExpression( "this.values" );
-        action.addReceiver( expr );
-        expr.addReceiver( callable );          
+        action.setReceiver( expr );
+        expr.setReceiver( callable );          
         
         assertNull( mock.getValues() );
         List<Integer> list = ( List<Integer> ) callable.call( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -0,0 +1,42 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.pipeline.ResultHandler;
+
+import junit.framework.TestCase;
+
+public class StatefulKnowledgeSessionPipelineTest extends TestCase {
+    public void testInsertObject() {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        
+        StatefulKnowledgeSessionInsertStage stage1 = new StatefulKnowledgeSessionInsertStage();
+        MvelAction mvelAction = new MvelAction( "context.resultHandler.handleResult( context.handles )");
+        stage1.setReceiver( mvelAction );
+        
+        StatefulKnowledgeSessionInsertPipelineImpl pipeline = new StatefulKnowledgeSessionInsertPipelineImpl(ksession);
+        pipeline.setReceiver( stage1 );
+        
+        assertEquals( 0, ksession.getObjects().size() );
+        
+        ResultHandlerImpl resultHanadle = new ResultHandlerImpl();
+        pipeline.insert( "Hello", resultHanadle );
+        
+        assertEquals( 1, resultHanadle.getHandles().size() );              
+    }
+    
+    public static class ResultHandlerImpl implements ResultHandler {
+        Map handles;
+        public void handleResult(Object object) {
+           this.handles = ( Map ) object;             
+        }
+        public Map getHandles() {
+            return this.handles;
+        }
+        
+    }
+}

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/test/java/org/drools/runtime/pipeline/impl/DroolsJaxbTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -34,7 +34,7 @@
 import org.drools.builder.help.KnowledgeBuilderHelper;
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.WorkingMemoryDataLoader;
 import org.drools.runtime.dataloader.impl.StatefulKnowledgeSessionDataLoaderImpl;
 import org.drools.runtime.pipeline.Expression;
 import org.drools.runtime.pipeline.PipelineFactory;
@@ -101,10 +101,10 @@
                                                                      kbase );
         Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
         Transformer transformer = PipelineFactory.newJaxbTransformer( unmarshaller );
-        transformer.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        transformer.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
 
-        StatefulKnowledgeSessionDataLoader dataLoader = new StatefulKnowledgeSessionDataLoaderImpl( ksession,
-                                                                                                    transformer );
+        WorkingMemoryDataLoader dataLoader = new StatefulKnowledgeSessionDataLoaderImpl( ksession,
+                                                                                         transformer );
         Map<FactHandle, Object> handles = dataLoader.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ) );
 
         ksession.fireAllRules();
@@ -151,12 +151,12 @@
         Unmarshaller unmarshaller = jaxbCtx.createUnmarshaller();
         Transformer transformer = PipelineFactory.newJaxbTransformer( unmarshaller );
         Expression expression = PipelineFactory.newMvelExpression( "this.orderItem" );
-        transformer.addReceiver( expression );
+        transformer.setReceiver( expression );
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expression.addReceiver( splitter );
-        splitter.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
-        StatefulKnowledgeSessionDataLoader dataLoader = new StatefulKnowledgeSessionDataLoaderImpl( ksession,
-                                                                                                    transformer );
+        expression.setReceiver( splitter );
+        splitter.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        WorkingMemoryDataLoader dataLoader = new StatefulKnowledgeSessionDataLoaderImpl( ksession,
+                                                                                         transformer );
         Map<FactHandle, Object> handles = dataLoader.insert( new StreamSource( getClass().getResourceAsStream( "order.xml" ) ) );
 
         ksession.fireAllRules();

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml	2009-01-08 04:17:30 UTC (rev 24596)
@@ -10,7 +10,7 @@
 
   <artifactId>drools-transformer-jxls</artifactId>
   <packaging>jar</packaging>
-  <name>Drools :: Transformer :: JXLS</name>
+  <name>Drools :: Pipeline:: Transformer :: JXLS</name>
   
       <dependencies>
          <dependency>

Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/JxlsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/JxlsTest.java	2009-01-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/JxlsTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -47,8 +47,8 @@
         
         Callable callable = PipelineFactory.newCallable();
         Transformer transformer = PipelineFactory.newJxlsTransformer(mainReader, "[ 'departments' : new java.util.ArrayList(), 'company' : new org.drools.runtime.pipeline.impl.Company() ]");
-        callable.addReceiver( transformer );
-        transformer.addReceiver( callable );        
+        callable.setReceiver( transformer );
+        transformer.setReceiver( callable );        
         BasePipelineContext context = new BasePipelineContext( Thread.currentThread().getContextClassLoader() );
         
         Map<String, Object> beans = ( Map<String, Object> ) callable.call( inputXLS, context );

Modified: 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-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatefulSessionTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -18,7 +18,7 @@
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.dataloader.DataLoaderFactory;
-import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.WorkingMemoryDataLoader;
 import org.drools.runtime.dataloader.impl.StatefulKnowledgeSessionDataLoaderImpl;
 import org.drools.runtime.dataloader.impl.EntryPointReceiverAdapter;
 import org.drools.runtime.pipeline.Expression;
@@ -55,9 +55,9 @@
         Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
         
         Transformer transformer = PipelineFactory.newSmooksTransformer( smooks, "orderItem" );       
-        transformer.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        transformer.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
         
-        StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
+        WorkingMemoryDataLoader dataLoader = DataLoaderFactory.newStatefulRuleSessionDataLoader( ksession,
                                                                                                     transformer );
         Map<FactHandle, Object> handles = dataLoader.insert( new StreamSource( getClass().getResourceAsStream( "SmooksDirectRoot.xml" ) ) );
         ksession.fireAllRules();
@@ -93,12 +93,12 @@
 
         Transformer transformer = PipelineFactory.newSmooksTransformer( smooks, "root" );               
         Expression expression = PipelineFactory.newMvelExpression( "children" );
-        transformer.addReceiver( expression );
+        transformer.setReceiver( expression );
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expression.addReceiver( splitter );
-        splitter.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        expression.setReceiver( splitter );
+        splitter.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
 
-        StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
+        WorkingMemoryDataLoader dataLoader = DataLoaderFactory.newStatefulRuleSessionDataLoader( ksession,
                                                                                                 transformer );
 
         Map<FactHandle, Object> handles = dataLoader.insert( new StreamSource( getClass().getResourceAsStream( "SmooksNestedIterable.xml" ) ) );

Modified: 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-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/DroolsSmookStatelessSessionTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -48,7 +48,7 @@
         Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
 
         Transformer transformer = PipelineFactory.newSmooksTransformer( smooks, "orderItem" );       
-        transformer.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+        transformer.setReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
 
         StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
                                                                                                   transformer );
@@ -83,10 +83,10 @@
 
         Transformer transformer = PipelineFactory.newSmooksTransformer( smooks, "root" );               
         Expression expression = PipelineFactory.newMvelExpression( "children" );
-        transformer.addReceiver( expression );
+        transformer.setReceiver( expression );
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expression.addReceiver( splitter );
-        splitter.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+        expression.setReceiver( splitter );
+        splitter.setReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
 
         StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
                                                                                                   transformer );


Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream
___________________________________________________________________
Name: svn:ignore
   - target

   + target
.settings


Modified: 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-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatefulSessionTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -21,7 +21,7 @@
 import org.drools.io.ResourceFactory;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.dataloader.DataLoaderFactory;
-import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.WorkingMemoryDataLoader;
 import org.drools.runtime.dataloader.impl.StatefulKnowledgeSessionDataLoaderImpl;
 import org.drools.runtime.dataloader.impl.EntryPointReceiverAdapter;
 import org.drools.runtime.pipeline.Expression;
@@ -55,10 +55,10 @@
 
         XStream xstream = new XStream();
         Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        transformer.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
 
-        StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
-                                                                                                                 transformer );
+        WorkingMemoryDataLoader dataLoader = DataLoaderFactory.newStatefulRuleSessionDataLoader( ksession,
+                                                                                                 transformer );
         Map<FactHandle, Object> handles = dataLoader.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ) );
         ksession.fireAllRules();
 
@@ -91,13 +91,13 @@
         XStream xstream = new XStream();
         Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
         Expression expression = PipelineFactory.newMvelExpression( "this" );
-        transformer.addReceiver( expression );
+        transformer.setReceiver( expression );
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expression.addReceiver( splitter );
-        splitter.addReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
+        expression.setReceiver( splitter );
+        splitter.setReceiver( PipelineFactory.newEntryPointReceiverAdapter() );
 
-        StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
-                                                                                                                 transformer );
+        WorkingMemoryDataLoader dataLoader = DataLoaderFactory.newStatefulRuleSessionDataLoader( ksession,
+                                                                                                 transformer );
 
         Map<FactHandle, Object> handles = dataLoader.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ) );
         ksession.fireAllRules();

Modified: 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-08 03:18:57 UTC (rev 24595)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/DroolsXStreamStatelessSessionTest.java	2009-01-08 04:17:30 UTC (rev 24596)
@@ -25,7 +25,7 @@
 
 public class DroolsXStreamStatelessSessionTest extends TestCase {
 
-    public void testSmooksDirectRoot() throws Exception {
+    public void testXstreamDirectRoot() throws Exception {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
 
         kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
@@ -44,7 +44,7 @@
 
         XStream xstream = new XStream();
         Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
-        transformer.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+        transformer.setReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
 
         StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
                                                                                                       transformer );
@@ -57,7 +57,7 @@
                       list.get( 0 ).getClass().getName() );
     }
 
-    public void testSmooksNestedIterable() throws Exception {
+    public void testXstreamNestedIterable() throws Exception {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
 
         kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
@@ -77,10 +77,10 @@
         XStream xstream = new XStream();
         Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
         Expression expression = PipelineFactory.newMvelExpression( "this" );
-        transformer.addReceiver( expression );
+        transformer.setReceiver( expression );
         Splitter splitter = PipelineFactory.newIterateSplitter();
-        expression.addReceiver( splitter );
-        splitter.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+        expression.setReceiver( splitter );
+        splitter.setReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
 
         StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
                                                                                                       transformer );




More information about the jboss-svn-commits mailing list