[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