[jboss-svn-commits] JBL Code SVN: r6006 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base/dataproviders main/java/org/drools/base/resolvers main/java/org/drools/facttemplates test/java/org/drools/base/dataproviders test/java/org/drools/base/resolvers

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 29 13:15:44 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-08-29 13:15:33 -0400 (Tue, 29 Aug 2006)
New Revision: 6006

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/main/java/org/drools/base/resolvers/GlobalVariable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ListValue.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/LiteralValue.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/MapValue.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ValueHandler.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
   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/resolvers/GlobalVariableTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/ListValueTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/LiteralValueTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/MapValueTest.java
Log:
JBRULES-339 'from'
-Added unit tests
-Made classes implement getExtractToClass
-MethodDataProvider now uses Collections.singletonList( result ).iterator()

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-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -2,6 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -33,10 +34,8 @@
             return ((Collection) result).iterator();
         } else if ( result instanceof Iterator ) {
             return (Iterator) result;
-        } else {
-            List resultAsList = new ArrayList( 1 );
-            resultAsList.add( result );
-            return resultAsList.iterator();
+        } else {            
+            return Collections.singletonList( result ).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-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodInvoker.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -30,15 +30,27 @@
     public MethodInvoker(String methodName,
                          Class clazz,
                          ValueHandler[] valueHandlers) {
-        this( methodName, clazz, null, valueHandlers );
-        // @todo : defensive errors for referencing non static method
+        this.instanceValueHandler = null;
+        this.valueHandlers = valueHandlers;
+        
+        // determine required declarations
+        List list = new ArrayList(1);        
+        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,
+                                       valueHandlers.length );
     }
-    
     /**
      * Method invoker for an instance
      */
     public MethodInvoker(String methodName,
-                         Class clazz,
                          ValueHandler instanceValueHandler,
                          ValueHandler[] valueHandlers) {
         this.instanceValueHandler = instanceValueHandler;
@@ -57,7 +69,7 @@
         
         this.requiredDeclarations = ( Declaration[] )list.toArray( new Declaration[ list.size() ] );
 
-        this.method = configureMethod( clazz,
+        this.method = configureMethod( this.instanceValueHandler.getExtractToClass(),
                                        methodName,
                                        valueHandlers.length );
     }

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-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/DeclarationVariable.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -33,6 +33,10 @@
         return this.declaration;
     }
     
+    public Class getExtractToClass() {
+        return this.declaration.getExtractor().getExtractToClass();
+    }
+    
     public void reset() {
         this.cachedValue = ValueHandler.EMPTY;
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/GlobalVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/GlobalVariable.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/GlobalVariable.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -12,12 +12,15 @@
 
     private static final long serialVersionUID = 320L;
 
-    public String             globalName;
+    public final String             globalName;
+    public final Class              clazz;
     
+    
     private Object cachedValue = ValueHandler.EMPTY;
 
-    public GlobalVariable(final String name) {
+    public GlobalVariable(final String name, final Class clazz) {
         this.globalName = name;
+        this.clazz = clazz;
     }
 
     public Object getValue(final Tuple tuple,
@@ -28,6 +31,10 @@
         return this.cachedValue;
     }
     
+    public Class getExtractToClass() {
+        return this.clazz;
+    }    
+    
     public void reset() {
         this.cachedValue = ValueHandler.EMPTY;
     }    

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ListValue.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ListValue.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ListValue.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -39,6 +39,10 @@
         return this.cachedValue;
     }
     
+    public Class getExtractToClass() {
+        return List.class;
+    }    
+    
     public void reset() {
         this.cachedValue = ValueHandler.EMPTY;
     }
@@ -66,6 +70,5 @@
         final ListValue other = (ListValue) object;
         return this.list.equals( other.list );
     }
-    
-    
+      
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/LiteralValue.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/LiteralValue.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/LiteralValue.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -3,6 +3,8 @@
  */
 package org.drools.base.resolvers;
 
+import java.util.List;
+
 import org.drools.WorkingMemory;
 import org.drools.spi.Tuple;
 
@@ -12,10 +14,13 @@
     
     private static final long serialVersionUID = 320L;
 
-    private String value;    
+    private final String value;   
+    
+    private final Class clazz;
 
-    public LiteralValue(final String value) {
+    public LiteralValue(final String value, final Class clazz) {
         this.value = value;
+        this.clazz = clazz;
     }
 
     public Object getValue(final Tuple tuple,
@@ -23,6 +28,10 @@
         return this.value;
     }
     
+    public Class getExtractToClass() {
+        return this.clazz;
+    }     
+    
     public void reset() {
         // N/A
     }    

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/MapValue.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/MapValue.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/MapValue.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -5,6 +5,7 @@
 
 import java.io.Serializable;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.drools.WorkingMemory;
@@ -42,6 +43,10 @@
 
         return this.cachedValue;
     }
+    
+    public Class getExtractToClass() {
+        return Map.class;
+    }     
 
     public void reset() {
         this.cachedValue = ValueHandler.EMPTY;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ValueHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ValueHandler.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/resolvers/ValueHandler.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -25,6 +25,8 @@
      */
     public Object getValue(Tuple tuple,
                            WorkingMemory wm);
+    
+    public Class getExtractToClass() ;
 
     /**
      * NULL the cached value

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateFieldExtractor.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -20,7 +20,7 @@
     
     public ValueType getValueType() {
         return this.factTemplate.getFieldTemplate( fieldIndex ).getValueType();
-    }
+    }   
 
     public Object getValue(Object object) {
         return ((Fact) object).getFieldValue( this.fieldIndex );

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-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -71,12 +71,11 @@
                           var2Dec );
 
         List args = new ArrayList();
-        args.add( new LiteralValue( "boo" ) );
-        args.add( new LiteralValue( "42" ) );
+        args.add( new LiteralValue( "boo", String.class ) );
+        args.add( new LiteralValue( "42", Integer.class ) );
         args.add( new DeclarationVariable( var2Dec ) );
 
         MethodInvoker invoker = new MethodInvoker( "helloWorld",
-                                                   TestVariable.class,
                                                    new DeclarationVariable( varDec ),
                                                    (ValueHandler[]) args.toArray( new ValueHandler[args.size()] ) );
 
@@ -115,8 +114,7 @@
                       new TestVariable() );
 
         MethodInvoker invoker = new MethodInvoker( "otherMethod",
-                                                   TestVariable.class,
-                                                   new GlobalVariable( "foo" ),
+                                                   new GlobalVariable( "foo", TestVariable.class ),
                                                    new ValueHandler[0] );        
         
         

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/GlobalVariableTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/GlobalVariableTest.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/GlobalVariableTest.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -23,7 +23,7 @@
         rb.addPackage( pkg );
         WorkingMemory wm = rb.newWorkingMemory();
 
-        GlobalVariable global = new GlobalVariable( "list" );
+        GlobalVariable global = new GlobalVariable( "list", List.class );
 
         Cheese stilton = new Cheese( "stilton",
                                      20 );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/ListValueTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/ListValueTest.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/ListValueTest.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -31,17 +31,17 @@
         wm.setGlobal( "list",
                       list );        
         
-        LiteralValue literal = new LiteralValue( "literal" );
+        LiteralValue literal = new LiteralValue( "literal", String.class );
         
         Column column = new Column( 0,
                                     new ClassObjectType( Cheese.class ),
                                     "stilton" );
         DeclarationVariable declaration = new DeclarationVariable( column.getDeclaration() );
         
-        GlobalVariable global = new GlobalVariable( "list" );
+        GlobalVariable global = new GlobalVariable( "list", List.class );
         
-        LiteralValue literalKey = new LiteralValue( "literalKey" );
-        LiteralValue literalValue = new LiteralValue( "literalValue" );
+        LiteralValue literalKey = new LiteralValue( "literalKey", String.class );
+        LiteralValue literalValue = new LiteralValue( "literalValue", String.class );
         MapValue.KeyValuePair literalPair = new MapValue.KeyValuePair( literalKey,
                                                                        literalValue );
         MapValue mapValue = new MapValue( new MapValue.KeyValuePair[]{literalPair} );
@@ -74,7 +74,7 @@
         RuleBase rb = RuleBaseFactory.newRuleBase();
         WorkingMemory wm = rb.newWorkingMemory();
         
-        LiteralValue literal = new LiteralValue( "literal" );
+        LiteralValue literal = new LiteralValue( "literal", String.class );
         List nestedListValueHandlers = new ArrayList();
         nestedListValueHandlers.add(  literal );
         ListValue nestedListValue = new ListValue( nestedListValueHandlers );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/LiteralValueTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/LiteralValueTest.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/LiteralValueTest.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -18,7 +18,7 @@
         rb.addPackage( pkg );
         WorkingMemory wm = rb.newWorkingMemory();
 
-        LiteralValue literal = new LiteralValue( "literal" );
+        LiteralValue literal = new LiteralValue( "literal", String.class );
 
         Cheese stilton = new Cheese( "stilton",
                                      20 );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/MapValueTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/MapValueTest.java	2006-08-29 15:49:44 UTC (rev 6005)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/resolvers/MapValueTest.java	2006-08-29 17:15:33 UTC (rev 6006)
@@ -27,8 +27,8 @@
         WorkingMemory wm = rb.newWorkingMemory();
 
         // Make a literal key/value pair
-        LiteralValue literalKey = new LiteralValue( "literalKey1" );
-        LiteralValue literalValue = new LiteralValue( "literalValue" );
+        LiteralValue literalKey = new LiteralValue( "literalKey1", String.class );
+        LiteralValue literalValue = new LiteralValue( "literalValue", String.class );
         MapValue.KeyValuePair literalPair = new MapValue.KeyValuePair( literalKey,
                                                                        literalValue );
 
@@ -41,17 +41,17 @@
                                                                                   literalValue );
 
         // Make a literal/declaration key/value pair
-        LiteralValue literalKey2 = new LiteralValue( "literalKey2" );
+        LiteralValue literalKey2 = new LiteralValue( "literalKey2", String.class );
         MapValue.KeyValuePair literalDeclarationPair = new MapValue.KeyValuePair( literalKey2,
                                                                                   declaration );
 
         // Make a global/declaration key/value pair
-        GlobalVariable global = new GlobalVariable( "list" );
+        GlobalVariable global = new GlobalVariable( "list", List.class );
         MapValue.KeyValuePair globalDeclarationPair = new MapValue.KeyValuePair( global,
                                                                                  declaration );
 
         // Make a literal/global key/value pair
-        LiteralValue literalKey3 = new LiteralValue( "literalKey3" );
+        LiteralValue literalKey3 = new LiteralValue( "literalKey3", String.class );
         MapValue.KeyValuePair LiteralGlobalPair = new MapValue.KeyValuePair( literalKey3,
                                                                              global );
 
@@ -88,13 +88,13 @@
         WorkingMemory wm = rb.newWorkingMemory();
 
         // Make a literal key/value pair
-        LiteralValue literalKey1 = new LiteralValue( "literalKey1" );
-        LiteralValue literalValue1 = new LiteralValue( "literalValue1" );
+        LiteralValue literalKey1 = new LiteralValue( "literalKey1", String.class );
+        LiteralValue literalValue1 = new LiteralValue( "literalValue1", String.class );
         MapValue.KeyValuePair literalPair = new MapValue.KeyValuePair( literalKey1,
                                                                        literalValue1 );
         MapValue nestedMapValue = new MapValue( new MapValue.KeyValuePair[]{literalPair} );
 
-        LiteralValue literalKey2 = new LiteralValue( "literalKey2" );
+        LiteralValue literalKey2 = new LiteralValue( "literalKey2", String.class );
         MapValue.KeyValuePair nestedMapPair = new MapValue.KeyValuePair( literalKey2,
                                                                          nestedMapValue );
 




More information about the jboss-svn-commits mailing list