[jboss-svn-commits] JBL Code SVN: r5992 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base/dataproviders main/java/org/drools/base/resolvers test/java/org/drools/base/dataproviders
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 28 13:02:18 EDT 2006
Author: /services/svn/bin/commit-email.pl: `/opt/subversion/bin/svnlook info /services/jbf-svn/code -r 5992' failed with this output:
Date: svnlook: Inconsistent line ending style
New Revision: 5992
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodInvoker.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/DeclarationVariable.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java
Log:
2006-08-28 13:02:14 -0400 (Mon, 28 Aug 2006)
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java 2006-08-28 15:42:41 UTC (rev 5991)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java 2006-08-28 17:02:14 UTC (rev 5992)
@@ -28,7 +28,7 @@
public Iterator getResults(Tuple tuple,
WorkingMemory wm,
PropagationContext ctx) {
- Object result = this.method;
+ Object result = this.method.invoke( tuple, wm, ctx );
if ( result instanceof Collection ) {
return ((Collection) result).iterator();
} else if ( result instanceof Iterator ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodInvoker.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodInvoker.java 2006-08-28 15:42:41 UTC (rev 5991)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodInvoker.java 2006-08-28 17:02:14 UTC (rev 5992)
@@ -4,11 +4,14 @@
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
import org.drools.RuntimeDroolsException;
import org.drools.WorkingMemory;
import org.drools.base.evaluators.DateFactory;
+import org.drools.base.resolvers.DeclarationVariable;
import org.drools.base.resolvers.LiteralValue;
import org.drools.base.resolvers.ValueHandler;
import org.drools.rule.Declaration;
@@ -26,9 +29,8 @@
*/
public MethodInvoker(String methodName,
Class clazz,
- ValueHandler[] valueHandlers,
- Declaration[] requiredDeclarations) {
- this( methodName, clazz, null, valueHandlers, requiredDeclarations );
+ ValueHandler[] valueHandlers) {
+ this( methodName, clazz, null, valueHandlers );
// @todo : defensive errors for referencing non static method
}
@@ -38,11 +40,22 @@
public MethodInvoker(String methodName,
Class clazz,
ValueHandler instanceValueHandler,
- ValueHandler[] valueHandlers,
- Declaration[] requiredDeclarations) {
+ ValueHandler[] valueHandlers) {
this.instanceValueHandler = instanceValueHandler;
this.valueHandlers = valueHandlers;
- this.requiredDeclarations = requiredDeclarations;
+
+ // determine required declarations
+ List list = new ArrayList(1);
+ if ( instanceValueHandler != null && instanceValueHandler.getClass() == DeclarationVariable.class ) {
+ list.add( ( (DeclarationVariable) instanceValueHandler ).getDeclaration() );
+ }
+ for ( int i = 0, length = valueHandlers.length; i < length; i++ ) {
+ if ( valueHandlers[i].getClass() == DeclarationVariable.class ) {
+ list.add( ( (DeclarationVariable) valueHandlers[i] ).getDeclaration() );
+ }
+ }
+
+ this.requiredDeclarations = ( Declaration[] )list.toArray( new Declaration[ list.size() ] );
this.method = configureMethod( clazz,
methodName,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/DeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/DeclarationVariable.java 2006-08-28 15:42:41 UTC (rev 5991)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/DeclarationVariable.java 2006-08-28 17:02:14 UTC (rev 5992)
@@ -29,6 +29,10 @@
return this.cachedValue;
}
+ public Declaration getDeclaration() {
+ return this.declaration;
+ }
+
public void reset() {
this.cachedValue = ValueHandler.EMPTY;
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java 2006-08-28 15:42:41 UTC (rev 5991)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java 2006-08-28 17:02:14 UTC (rev 5992)
@@ -14,6 +14,10 @@
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.base.ClassObjectType;
+import org.drools.base.resolvers.DeclarationVariable;
+import org.drools.base.resolvers.GlobalVariable;
+import org.drools.base.resolvers.LiteralValue;
+import org.drools.base.resolvers.ValueHandler;
import org.drools.common.DefaultFactHandle;
import org.drools.common.PropagationContextImpl;
import org.drools.reteoo.ReteTuple;
@@ -28,76 +32,102 @@
public class MethodDataProviderTest extends TestCase {
- private PropagationContext context;
+ private PropagationContext context;
private ReteooWorkingMemory workingMemory;
- private Map declarations;
- private Map globals;
-
+ private Map declarations;
+ private Map globals;
+
protected void setUp() {
context = new PropagationContextImpl( 0,
- PropagationContext.ASSERTION,
- null,
- null );
+ PropagationContext.ASSERTION,
+ null,
+ null );
workingMemory = new ReteooWorkingMemory( 1,
- (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
-
- declarations = new HashMap();
+ (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
+
+ declarations = new HashMap();
globals = new HashMap();
}
-
+
public void testWithDeclarationsHelloWorld() throws Exception {
-
- Column column = new Column(0, new ClassObjectType( Cheese.class ) );
-
- Extractor ex = new ColumnExtractor(new ClassObjectType(TestVariable.class));
- Declaration varDec = new Declaration("var", ex, column);
- declarations.put("var", varDec);
-
-
- column = new Column(1, new ClassObjectType( Cheese.class ) );
- ex = new ColumnExtractor(new ClassObjectType(String.class));
- Declaration var2Dec = new Declaration("var2", ex, column);
- declarations.put( "var2", var2Dec );
-
+
+ Column column = new Column( 0,
+ new ClassObjectType( Cheese.class ) );
+
+ Extractor ex = new ColumnExtractor( new ClassObjectType( TestVariable.class ) );
+ Declaration varDec = new Declaration( "var",
+ ex,
+ column );
+ declarations.put( "var",
+ varDec );
+
+ column = new Column( 1,
+ new ClassObjectType( Cheese.class ) );
+ ex = new ColumnExtractor( new ClassObjectType( String.class ) );
+ Declaration var2Dec = new Declaration( "var2",
+ ex,
+ column );
+ declarations.put( "var2",
+ var2Dec );
+
List args = new ArrayList();
- args.add( new ArgumentValueDescr(ArgumentValueDescr.STRING, "boo") );
- args.add( new ArgumentValueDescr(ArgumentValueDescr.INTEGRAL, "42") );
- args.add( new ArgumentValueDescr(ArgumentValueDescr.VARIABLE, "var2") );
- MethodDataProvider prov = new MethodDataProvider("var", "helloWorld", args, declarations, globals);
-
+ args.add( new LiteralValue( "boo" ) );
+ args.add( new LiteralValue( "42" ) );
+ args.add( new DeclarationVariable( var2Dec ) );
+
+ MethodInvoker invoker = new MethodInvoker( "helloWorld",
+ TestVariable.class,
+ new DeclarationVariable( varDec ),
+ (ValueHandler[]) args.toArray( new ValueHandler[args.size()] ) );
+
+ MethodDataProvider prov = new MethodDataProvider( invoker );
+
TestVariable var = new TestVariable();
FactHandle varHandle = workingMemory.assertObject( var );
FactHandle var2Handle = workingMemory.assertObject( "hola" );
-
- ReteTuple tuple = new ReteTuple(new ReteTuple( (DefaultFactHandle) varHandle ), (DefaultFactHandle) var2Handle );
-
- Iterator it = prov.getResults( tuple, workingMemory, context );
-
+
+ ReteTuple tuple = new ReteTuple( new ReteTuple( (DefaultFactHandle) varHandle ),
+ (DefaultFactHandle) var2Handle );
+
+ Iterator it = prov.getResults( tuple,
+ workingMemory,
+ context );
+
Object result = it.next();
- assertEquals("boo42hola", result);
-
-
+ assertEquals( "boo42hola",
+ result );
+
}
public void testWithGlobals() throws Exception {
- globals.put( "foo", TestVariable.class );
-
- Package pkg = new Package("nothing");
- pkg.addGlobal( "foo", TestVariable.class );
+ globals.put( "foo",
+ TestVariable.class );
+
+ Package pkg = new Package( "nothing" );
+ pkg.addGlobal( "foo",
+ TestVariable.class );
RuleBase rb = RuleBaseFactory.newRuleBase();
rb.addPackage( pkg );
-
+
WorkingMemory wm = rb.newWorkingMemory();
- wm.setGlobal( "foo", new TestVariable() );
+ wm.setGlobal( "foo",
+ new TestVariable() );
+
+ MethodInvoker invoker = new MethodInvoker( "otherMethod",
+ TestVariable.class,
+ new GlobalVariable( "foo" ),
+ new ValueHandler[0] );
- MethodDataProvider prov = new MethodDataProvider("foo", "otherMethod", new ArrayList(), declarations, globals);
+
+ MethodDataProvider prov = new MethodDataProvider( invoker );
- Iterator it = prov.getResults( null, wm, null );
- assertTrue(it.hasNext());
- assertEquals("boo", it.next());
+ Iterator it = prov.getResults( null,
+ wm,
+ null );
+ assertTrue( it.hasNext() );
+ assertEquals( "boo",
+ it.next() );
}
-
-
}
More information about the jboss-svn-commits
mailing list