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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jan 4 00:23:32 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-01-04 00:23:31 -0500 (Sun, 04 Jan 2009)
New Revision: 24529

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/
   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/MvelActionTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.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-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders
-Added MvelAction
-Added simple unit tests for core stages

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-03 18:41:53 UTC (rev 24528)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -4,6 +4,8 @@
 
 public interface CorePipelineProvider {
     public Expression newMvelExpression(String expression);
+    
+    public Action newMvelAction(String action);
 
     public Splitter newIterateSplitter();
 

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-03 18:41:53 UTC (rev 24528)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -44,6 +44,10 @@
     public static Expression newMvelExpression(String expression) {
         return getCorePipelineProvider().newMvelExpression( expression );
     }
+    
+    public static Action newMvelAction(String action) {
+        return getCorePipelineProvider().newMvelAction( action );
+    }    
 
     public static Splitter newIterateSplitter() {
         return getCorePipelineProvider().newIterateSplitter();

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-03 18:41:53 UTC (rev 24528)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -4,6 +4,7 @@
 
 import org.drools.runtime.dataloader.impl.EntryPointReceiverAdapter;
 import org.drools.runtime.dataloader.impl.StatelessKnowledgeSessionReceiverAdapter;
+import org.drools.runtime.pipeline.Action;
 import org.drools.runtime.pipeline.Adapter;
 import org.drools.runtime.pipeline.Callable;
 import org.drools.runtime.pipeline.CorePipelineProvider;
@@ -17,6 +18,10 @@
     public Expression newMvelExpression(String expression) {
         return new MvelExpression( expression );
     }
+    
+    public Action newMvelAction(String action) {
+        return new MvelAction( action );
+    }    
 
     public Splitter newIterateSplitter() {
         return new IterateSplitter();

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/MvelAction.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,40 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.Serializable;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Receiver;
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+import org.mvel2.compiler.ExpressionCompiler;
+
+public class MvelAction extends BaseEmitter
+    implements
+    Action,
+    Receiver {
+    private Serializable expr;
+
+    public MvelAction(String text) {
+//        final ParserContext parserContext = new ParserContext();
+//        parserContext.setStrictTypeEnforcement( false );
+
+        ExpressionCompiler compiler = new ExpressionCompiler( text );
+        this.expr = compiler.compile( );
+    }
+
+    public void receive(Object object,
+                        PipelineContext context) {
+        try {
+            MVEL.executeExpression( this.expr,
+                                    object );
+        } catch ( Exception e ) {
+            handleException( this,
+                             object,
+                             e );
+        }
+        emit( object,
+              context );
+    }
+
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/CallableTest.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,34 @@
+package org.drools.runtime.pipeline.impl;
+
+import junit.framework.TestCase;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.PipelineFactory;
+
+public class CallableTest extends TestCase {
+    public void testCallable() {
+        MockClass mock = new MockClass();
+        Callable callable = PipelineFactory.newCallable();
+        Action action = PipelineFactory.newMvelAction( "this.set = true" );
+        callable.addReceiver( action );
+        action.addReceiver( callable );
+        assertFalse( mock.isSet() );
+        callable.call( mock,
+                       new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );
+        assertTrue( mock.isSet() );
+    }
+
+    public static class MockClass {
+        private boolean set;
+
+        public boolean isSet() {
+            return set;
+        }
+
+        public void setSet(boolean set) {
+            this.set = set;
+        }
+
+    }
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/IterateSplitterTest.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,53 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.ListAdapter;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Splitter;
+import org.mvel2.MVEL;
+import org.mvel2.optimizers.OptimizerFactory;
+
+import junit.framework.TestCase;
+
+public class IterateSplitterTest extends TestCase {
+    public void testSplitter() {
+        MockClass mock = new MockClass();
+        List<Integer> list = new ArrayList<Integer>();
+        
+        Action action = PipelineFactory.newMvelAction( "this.setValues( [0, 1, 2, 3, 4] ) " );  
+        Expression expr = PipelineFactory.newMvelExpression( "this.values" );
+        action.addReceiver( expr );
+                
+        Splitter splitter = PipelineFactory.newIterateSplitter();
+        expr.addReceiver( splitter );
+        
+        ListAdapter listAdapter = PipelineFactory.newListAdapter( list, true );        
+        splitter.addReceiver( listAdapter );
+        
+        assertNull( mock.getValues() );
+        action.receive( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );
+
+        
+        System.out.println( list.get( 0 ));
+        assertEquals( 5, list.size());
+        assertEquals( 0,list.get( 0 ).intValue() );
+        assertEquals( 4,list.get( 4 ).intValue() );
+    }
+    
+    public static class MockClass {        
+        private List values;
+
+        public List getValues() {
+            return values;
+        }
+
+        public void setValues(List values) {
+            this.values = values;
+        }                              
+    }
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/ListAdapterTest.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,44 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.ListAdapter;
+import org.drools.runtime.pipeline.PipelineFactory;
+
+import junit.framework.TestCase;
+
+public class ListAdapterTest extends TestCase {
+    public void testListAdapter() {
+        MockClass mock = new MockClass();
+        List list = new ArrayList();
+        
+        Action action = PipelineFactory.newMvelAction( "this.set = true" );   
+        
+        ListAdapter listAdapter = PipelineFactory.newListAdapter( list, true );        
+        action.addReceiver( listAdapter );
+        
+        assertFalse( mock.isSet() );
+        action.receive( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );
+
+        assertEquals( 1, list.size());
+        assertSame( mock, list.get( 0 ) );
+        assertTrue( mock.isSet() );
+    }
+    
+    public static class MockClass {        
+        private boolean set;
+
+        public boolean isSet() {
+            return set;
+        }
+
+        public void setSet(boolean set) {
+            this.set = set;
+        }
+                
+    }
+}

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelActionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelActionTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelActionTest.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,45 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.ListAdapter;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Splitter;
+import org.mvel2.MVEL;
+import org.mvel2.optimizers.OptimizerFactory;
+
+import junit.framework.TestCase;
+
+public class MvelActionTest extends TestCase {
+    public void testAction() {
+        MockClass mock = new MockClass();
+        List<Integer> list = new ArrayList<Integer>();
+        
+        Action action = PipelineFactory.newMvelAction( "this.setValues( [0, 1, 2, 3, 4] ) " );  
+
+        assertNull( mock.getValues() );
+        action.receive( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );
+
+        
+        System.out.println( mock.getValues().get( 0 ));
+        assertEquals( 5, mock.getValues().size());
+        assertEquals( 0, mock.getValues().get( 0 ).intValue() );
+        assertEquals( 4, mock.getValues().get( 4 ).intValue() );
+    }
+    
+    public static class MockClass {        
+        private List<Integer> values;
+
+        public List<Integer> getValues() {
+            return values;
+        }
+
+        public void setValues(List<Integer> values) {
+            this.values = values;
+        }                              
+    }
+}

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/runtime/pipeline/impl/MvelExpressionTest.java	2009-01-04 05:23:31 UTC (rev 24529)
@@ -0,0 +1,49 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.ListAdapter;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Splitter;
+import org.mvel2.MVEL;
+import org.mvel2.optimizers.OptimizerFactory;
+
+import junit.framework.TestCase;
+
+public class MvelExpressionTest extends TestCase {
+    public void testExpression() {
+        MockClass mock = new MockClass();
+               
+        Callable callable = PipelineFactory.newCallable();
+        Action action = PipelineFactory.newMvelAction( "this.setValues( [0, 1, 2, 3, 4] ) " );
+        callable.addReceiver( action );
+        Expression expr = PipelineFactory.newMvelExpression( "this.values" );
+        action.addReceiver( expr );
+        expr.addReceiver( callable );          
+        
+        assertNull( mock.getValues() );
+        List<Integer> list = ( List<Integer> ) callable.call( mock, new BasePipelineContext( Thread.currentThread().getContextClassLoader() ) );
+
+        
+        System.out.println( list.get( 0 ));
+        assertEquals( 5, list.size());
+        assertEquals( 0,list.get( 0 ).intValue() );
+        assertEquals( 4,list.get( 4 ).intValue() );
+    }
+    
+    public static class MockClass {        
+        private List values;
+
+        public List getValues() {
+            return values;
+        }
+
+        public void setValues(List values) {
+            this.values = values;
+        }                              
+    }
+}




More information about the jboss-svn-commits mailing list