[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