[jboss-svn-commits] JBL Code SVN: r5894 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base main/java/org/drools/base/dataproviders main/java/org/drools/base/evaluators main/java/org/drools/common main/java/org/drools/facttemplates main/java/org/drools/reteoo main/java/org/drools/reteoo/beta main/java/org/drools/rule main/java/org/drools/spi main/java/org/drools/util/concurrent/locks test/java/org/drools/base test/java/org/drools/base/dataproviders test/java/org/drools/examples/manners test/java/org/drools/examples/waltz test/java/org/drools/facttemplates test/java/org/drools/reteoo test/java/org/drools/rule

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 15 11:20:57 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-08-15 11:20:13 -0400 (Tue, 15 Aug 2006)
New Revision: 5894

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/ArgumentValueDescr.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/
   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/TestVariable.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/ColumnTest.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassObjectType.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/HashedObjectSinkList.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PredicateExpression.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/concurrent/locks/Lock.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/BaseWaltzTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/ReteooWaltzTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
Log:
JBRULES-340 - "from" core functionality and improved unit test

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/BaseClassFieldExtractor.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -18,7 +18,6 @@
 
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldExtractor;
-import org.drools.spi.ObjectType;
 import org.drools.util.asm.ClassFieldInspector;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -21,7 +21,6 @@
 
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldExtractor;
-import org.drools.spi.ObjectType;
 
 /**
  * This provides access to fields, and what their numerical index/object type is.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-import java.beans.IntrospectionException;
 import java.lang.reflect.Method;
 
 import org.drools.RuntimeDroolsException;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassObjectType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassObjectType.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassObjectType.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -16,8 +16,6 @@
  * limitations under the License.
  */
 
-import org.drools.RuntimeDroolsException;
-import org.drools.spi.Evaluator;
 import org.drools.spi.ObjectType;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -19,7 +19,6 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-import org.drools.spi.Evaluator;
 import org.drools.spi.FieldValue;
 
 public class FieldFactory {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -14,6 +14,7 @@
 import org.drools.base.evaluators.CharacterFactory;
 import org.drools.base.evaluators.DateFactory;
 import org.drools.base.evaluators.DoubleFactory;
+import org.drools.base.evaluators.EvaluatorFactory;
 import org.drools.base.evaluators.FloatFactory;
 import org.drools.base.evaluators.IntegerFactory;
 import org.drools.base.evaluators.LongFactory;
@@ -21,9 +22,8 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.base.evaluators.ShortFactory;
 import org.drools.base.evaluators.StringFactory;
+import org.drools.facttemplates.FactTemplate;
 import org.drools.spi.Evaluator;
-import org.drools.base.evaluators.EvaluatorFactory;
-import org.drools.facttemplates.FactTemplate;
 
 public class ValueType implements Serializable {
     

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/ArgumentValueDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/ArgumentValueDescr.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/ArgumentValueDescr.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -0,0 +1,55 @@
+package org.drools.base.dataproviders;
+
+import java.io.Serializable;
+
+/**
+ * This holds the value of an argument that has been parsed. 
+ * The argument would then be passed to a method, or function etc. 
+ * 
+ * @author Michael Neale
+ *
+ */
+public class ArgumentValueDescr implements Serializable {
+
+	private static final long serialVersionUID = -8921442520702424678L;
+	
+	/** Obviously if it was in quotes, its a string literal (which could be anything) */
+	public static final int STRING = 1;
+	
+	/** Means true integer, not Javas interpretation of it */
+	public static final int INTEGRAL = 2;
+	
+	/** Means a decimal number, which may or may not be floating */
+	public static final int DECIMAL = 4;
+	
+	/** If its none of the above, then its a variable */
+	public static final int VARIABLE = 8;
+	
+	public static final int BOOLEAN = 16;
+	
+	public static final int NULL = 32;
+	
+	private final int type;
+	private final String value;
+	
+	/**
+	 * @param type One of the constant types.
+	 * @param value
+	 */
+	public ArgumentValueDescr(int type, String value) {
+		this.type = type;
+		this.value = value;
+	}
+
+	public int getType() {
+		return type;
+	}
+
+	public String getValue() {
+		return value;
+	}
+
+	
+	
+	
+}

Added: 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-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MethodDataProvider.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -0,0 +1,246 @@
+package org.drools.base.dataproviders;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.evaluators.DateFactory;
+import org.drools.rule.Declaration;
+import org.drools.spi.DataProvider;
+import org.drools.spi.PropagationContext;
+import org.drools.spi.Tuple;
+
+public class MethodDataProvider
+    implements
+    DataProvider {
+
+    private final Declaration[] requiredDeclarations;
+    private final boolean variableIsDeclaration;
+    private final Declaration variableDeclaration;
+    private final String      variableName;
+    
+    private final ValueHandler[]      valueHandlers;
+
+    private final Method        method;
+    private final Class variableClass;
+
+    public MethodDataProvider(String variableName,
+                              String methodName,
+                              List arguments,
+                              Map declarations,
+                              Map globals) {
+        
+        List requiredDecs = new ArrayList();
+        
+        //work out where variable comes from, is it a dec or a global
+        this.variableName = variableName;        
+        if (declarations.containsKey( variableName )) {
+            variableDeclaration = (Declaration) declarations.get( variableName );
+            requiredDecs.add( variableDeclaration );
+            variableIsDeclaration = true;
+            this.variableClass = variableDeclaration.getExtractor().getExtractToClass();
+        } else if (globals.containsKey( variableName )) {
+            variableIsDeclaration = false;
+            this.variableClass = (Class) globals.get( variableName );
+            variableDeclaration = null;
+        } else {
+            variableDeclaration = null;
+            throw new IllegalArgumentException("The variable name [" + variableName + "] was not a global or declaration.");
+        }
+
+        //now handle arguments
+        List argumentData = new ArrayList();        
+        
+        for ( Iterator iter = arguments.iterator(); iter.hasNext(); ) {
+            ArgumentValueDescr desc = (ArgumentValueDescr) iter.next();
+            if ( desc.getType() == ArgumentValueDescr.VARIABLE ) {
+                if ( declarations.containsKey( desc.getValue() ) ) {
+                    Declaration dec = (Declaration) declarations.get( desc.getValue() );
+                    requiredDecs.add( dec );
+                    argumentData.add( new DeclaredVariable(dec) );
+                } else if ( globals.containsKey( desc.getValue() ) ) {
+                    argumentData.add( new GlobalVariable(desc.getValue()) );
+                } else {
+                    throw new IllegalArgumentException( "Uknown variable: " + desc.getValue() );
+                }
+            } else {
+                // handling a literal
+                argumentData.add( new LiteralValue(desc.getValue()) );
+            }
+        }
+
+        //now find the method
+        method = configureMethod(methodName, variableClass, arguments.size());
+        
+        valueHandlers = (ValueHandler[]) argumentData.toArray(new ValueHandler[argumentData.size()]);
+        requiredDeclarations = new Declaration[requiredDecs.size()];
+        requiredDecs.toArray( requiredDeclarations );
+    }
+
+    /**
+     * work out what method we will be calling at runtime, based on the name and number of parameters.
+     */
+    private Method configureMethod(String methodName, Class variableClass, int numOfArgs) {
+        Method[] methods = this.variableClass.getMethods();
+        for ( int i = 0; i < methods.length; i++ ) {
+            if (methods[i].getName().equals(methodName)) {
+                if (methods[i].getParameterTypes().length == numOfArgs) {
+                    return methods[i];
+                }
+            }
+        }
+        return null;
+    }
+
+    public Declaration[] getRequiredDeclarations() {
+        return requiredDeclarations;
+    }
+
+    public Iterator getResults(Tuple tuple,
+                               WorkingMemory wm,
+                               PropagationContext ctx) {
+        //get the variable value that we are operating on
+        Object variable = null;
+        if (variableIsDeclaration) {   
+            variable = tuple.get( this.variableDeclaration ).getObject();            
+        } else {
+            variable = wm.getGlobal( this.variableName );
+        }
+        
+        
+        //the types we have to convert the arguments to
+        Class[] parameterTypes = this.method.getParameterTypes();
+        
+        //the args values that we will pass
+        Object[] args = new Object[this.valueHandlers.length];
+        
+        
+        //now we need to set all the values, convert if literal
+        for ( int i = 0; i < this.valueHandlers.length; i++ ) {
+            ValueHandler handler = valueHandlers[i];
+            if (handler instanceof LiteralValue) {
+                String text = (String) handler.getValue( tuple, wm );
+                Class type = parameterTypes[i];
+                if (type == String.class) {
+                    args[i] = text;
+                } else {
+                    args[i] = convert(text, type);
+                }
+            } else {
+                args[i] = handler.getValue( tuple, wm );
+            }
+        }
+        
+        //now the actual invoking of the method
+        try {
+            Object result = this.method.invoke( variable, args );
+            if (result instanceof Collection) {
+                return ((Collection) result).iterator();
+            } else if (result instanceof Iterator) {
+                return (Iterator) result;
+            } else {
+                List resultAsList = new ArrayList(1);
+                resultAsList.add( result );
+                return resultAsList.iterator();
+            }
+        } catch ( IllegalArgumentException e ) {
+            throw new RuntimeDroolsException(e);
+        } catch ( IllegalAccessException e ) {
+            throw new RuntimeDroolsException(e);        
+        } catch ( InvocationTargetException e ) {
+            throw new RuntimeDroolsException(e);        
+        }
+
+    }
+    
+    
+    /** Attempt to convert text to the target class type */
+    private Object convert(String text,
+                           Class type) {
+        if ( type == Integer.class || type == int.class) {
+            return new Integer( text ) ;
+        } else if ( text == "null" ) {
+            return null;
+        } else if ( type == Character.class || type == char.class ) {
+            return ( new Character( text.charAt( 0 ) ) );
+        } else if ( type == Short.class || type == short.class) {
+            return new Short( text );
+        } else if ( type == Long.class || type == long.class ) {
+            return new Long( text );
+        } else if ( type == Float.class || type == float.class) {
+            return new Float( text );
+        } else if ( type == Double.class || type == double.class) {
+            return new Double( text );
+        } else if ( type == Boolean.class || type == boolean.class) {
+            return new Boolean( text );
+        } else if ( type == Date.class ) {            
+            return DateFactory.parseDate( text );
+        } else if ( type == BigDecimal.class ) {
+            return new BigDecimal(text);
+        } else if ( type == BigInteger.class ) {
+            return new BigInteger(text);
+        } else {
+            throw new IllegalArgumentException("Unable to convert [" + text + "] to type: [" + type.getName() + "]");
+        }
+    }
+
+
+    static interface ValueHandler {
+        
+        Object getValue(Tuple tuple, WorkingMemory wm);
+    }
+    
+    static class GlobalVariable implements ValueHandler {
+        public String globalName;
+        public GlobalVariable(String name) {
+            this.globalName = name;
+        }
+        public Object getValue(Tuple tuple,
+                               WorkingMemory wm) {
+            return wm.getGlobal( globalName );
+            
+        }
+    }
+    
+    static class DeclaredVariable implements ValueHandler {
+
+        private Declaration declaration;
+
+        public DeclaredVariable(Declaration dec) {
+            this.declaration = dec;
+        }
+        
+        public Object getValue(Tuple tuple,
+                               WorkingMemory wm) {
+            return tuple.get( this.declaration ).getObject();
+        }
+        
+    }
+    
+    static class LiteralValue implements ValueHandler {
+
+        private String value;
+
+        public LiteralValue(String value) {
+            this.value = value;
+        }
+        
+        public Object getValue(Tuple tuple,
+                               WorkingMemory wm) {            
+            return value;
+        }
+        
+    }
+    
+
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -22,12 +22,6 @@
 
 import org.drools.base.BaseEvaluator;
 import org.drools.base.ValueType;
-import org.drools.base.evaluators.ShortFactory.ShortEqualEvaluator;
-import org.drools.base.evaluators.ShortFactory.ShortGreaterEvaluator;
-import org.drools.base.evaluators.ShortFactory.ShortGreaterOrEqualEvaluator;
-import org.drools.base.evaluators.ShortFactory.ShortLessEvaluator;
-import org.drools.base.evaluators.ShortFactory.ShortLessOrEqualEvaluator;
-import org.drools.base.evaluators.ShortFactory.ShortNotEqualEvaluator;
 import org.drools.spi.Evaluator;
 
 /**
@@ -256,7 +250,7 @@
     }
 
     /** Use the simple date formatter to read the date from a string */
-    private static Date parseDate(final String input) {
+    public static Date parseDate(final String input) {
 
         final SimpleDateFormat df = new SimpleDateFormat( DateFactory.DATE_FORMAT_MASK );
         try {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -24,7 +24,6 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
-import java.io.Serializable;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactImpl.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -17,7 +17,6 @@
 package org.drools.facttemplates;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Arrays;
 
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateImpl.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateImpl.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -17,8 +17,6 @@
 package org.drools.facttemplates;
 
 import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
 
 import org.drools.rule.Package;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FactTemplateObjectType.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -17,10 +17,7 @@
  * limitations under the License.
  */
 
-import org.drools.RuntimeDroolsException;
 import org.drools.base.ValueType;
-import org.drools.facttemplates.FieldTemplate;
-import org.drools.spi.Evaluator;
 import org.drools.spi.ObjectType;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/facttemplates/FieldTemplateImpl.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,8 +1,6 @@
 package org.drools.facttemplates;
 
-import org.drools.RuntimeDroolsException;
 import org.drools.base.ValueType;
-import org.drools.spi.Evaluator;
 
 public class FieldTemplateImpl
     implements

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -10,10 +10,6 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
-import org.drools.rule.Declaration;
-import org.drools.rule.EvalCondition;
-import org.drools.rule.From;
-import org.drools.spi.Constraint;
 import org.drools.spi.DataProvider;
 import org.drools.spi.FieldConstraint;
 import org.drools.spi.PropagationContext;
@@ -62,7 +58,7 @@
         memory.add( workingMemory,
                     leftTuple );
 
-        for ( Iterator it = this.dataProvider.getResults( leftTuple ); it.hasNext(); ) {
+        for ( Iterator it = this.dataProvider.getResults( leftTuple, workingMemory, context ); it.hasNext(); ) {
             Object object = it.next();
             
             // First alpha node filters

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/HashedObjectSinkList.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/HashedObjectSinkList.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/HashedObjectSinkList.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -29,7 +29,6 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.common.DefaultFactHandle;
 import org.drools.rule.LiteralConstraint;
-import org.drools.spi.Evaluator;
 import org.drools.spi.FieldConstraint;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -96,7 +96,7 @@
      * 
      * @param tuple
      */
-    ReteTuple(final ReteTuple tuple) {
+    public ReteTuple(final ReteTuple tuple) {
         this.key = new TupleKey( tuple.key );
     }
 
@@ -108,7 +108,7 @@
      * @param handle
      *      the <code>FactHandleImpl</code> to be joined.
      */
-    ReteTuple(final ReteTuple left,
+    public ReteTuple(final ReteTuple left,
               final DefaultFactHandle handle) {
         this.key = new TupleKey( left.key,
                                  handle );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -35,7 +35,6 @@
 import org.drools.common.BetaNodeBinder;
 import org.drools.common.InstanceEqualsConstraint;
 import org.drools.common.InstanceNotEqualsConstraint;
-import org.drools.facttemplates.FactTemplateObjectType;
 import org.drools.rule.And;
 import org.drools.rule.Column;
 import org.drools.rule.Declaration;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/BetaMemoryFactory.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -23,7 +23,6 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.common.BetaNodeBinder;
 import org.drools.rule.VariableConstraint;
-import org.drools.spi.Evaluator;
 import org.drools.spi.FieldConstraint;
 
 /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndCompositeRestriction.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,8 +1,5 @@
 package org.drools.rule;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import org.drools.WorkingMemory;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Declaration.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -44,7 +44,6 @@
 
 import org.drools.base.ValueType;
 import org.drools.spi.Extractor;
-import org.drools.spi.ObjectType;
 
 /*
  * Copyright 2005 JBoss Inc

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -18,8 +18,6 @@
 
 import org.drools.WorkingMemory;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
-import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,14 +1,8 @@
 package org.drools.rule;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import org.drools.WorkingMemory;
-import org.drools.spi.Evaluator;
-import org.drools.spi.Extractor;
 import org.drools.spi.FieldConstraint;
 import org.drools.spi.FieldExtractor;
-import org.drools.spi.FieldValue;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrCompositeRestriction.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,9 +1,5 @@
 package org.drools.rule;
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
 import org.drools.WorkingMemory;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-import org.drools.RuntimeDroolsException;
 import org.drools.WorkingMemory;
 import org.drools.spi.Evaluator;
 import org.drools.spi.FieldConstraint;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -21,8 +21,6 @@
 import org.drools.RuntimeDroolsException;
 import org.drools.WorkingMemory;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
-import org.drools.spi.FieldExtractor;
 import org.drools.spi.Restriction;
 import org.drools.spi.ReturnValueExpression;
 import org.drools.spi.Tuple;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -20,8 +20,6 @@
 
 import org.drools.WorkingMemory;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
-import org.drools.spi.FieldExtractor;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -3,7 +3,6 @@
 import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 import org.drools.facttemplates.Fact;
-import org.drools.facttemplates.FactTemplate;
 
 /*
  * Copyright 2005 JBoss Inc

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/DataProvider.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,13 +1,13 @@
 package org.drools.spi;
 
 import java.util.Iterator;
-import java.util.List;
 
+import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
 
 public interface DataProvider {
     
     public Declaration[] getRequiredDeclarations();
     
-   public Iterator getResults(Tuple tuple); 
+   public Iterator getResults(Tuple tuple, WorkingMemory wm, PropagationContext ctx); 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PredicateExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PredicateExpression.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/PredicateExpression.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-import org.drools.FactHandle;
 import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/concurrent/locks/Lock.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/concurrent/locks/Lock.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/concurrent/locks/Lock.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -6,6 +6,10 @@
 
 package org.drools.util.concurrent.locks;
 
+import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
+
+import com.sun.corba.se.internal.orbutil.Condition;
+
 //import edu.emory.mathcs.backport.java.util.concurrent.locks.*; // for javadoc (till 6280605 is fixed)
 //import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -3,10 +3,10 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
+import junit.framework.TestCase;
+
 import org.drools.spi.FieldValue;
 
-import junit.framework.TestCase;
-
 public class FieldFactoryTest extends TestCase {
 
 	public void testBigDecimal() {

Added: 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-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/MethodDataProviderTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -0,0 +1,97 @@
+package org.drools.base.dataproviders;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.base.ClassObjectType;
+import org.drools.common.DefaultFactHandle;
+import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.ReteTuple;
+import org.drools.reteoo.ReteooRuleBase;
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.rule.Declaration;
+import org.drools.rule.Package;
+import org.drools.spi.ColumnExtractor;
+import org.drools.spi.Extractor;
+import org.drools.spi.PropagationContext;
+
+public class MethodDataProviderTest extends TestCase {
+
+    private PropagationContext context;
+    private ReteooWorkingMemory workingMemory;
+    private Map declarations;
+    private Map globals;
+    
+    protected void setUp() {
+        context = new PropagationContextImpl( 0,
+                                                                       PropagationContext.ASSERTION,
+                                                                       null,
+                                                                       null );
+        workingMemory = new ReteooWorkingMemory( 1,
+                                                                           (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
+        
+        declarations = new HashMap();    
+        globals = new HashMap();
+    }
+    
+    public void testWithDeclarationsHelloWorld() throws Exception {
+        
+        Extractor ex = new ColumnExtractor(new ClassObjectType(TestVariable.class));
+        Declaration varDec = new Declaration("var", ex, 0);
+        declarations.put("var", varDec);
+        
+        ex = new ColumnExtractor(new ClassObjectType(String.class));
+        Declaration var2Dec = new Declaration("var2", ex, 1);
+        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);
+        
+        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 );
+        
+        Object result = it.next();
+        assertEquals("boo42hola", result);
+        
+        
+    }
+
+    public void testWithGlobals() throws Exception {
+        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() );
+        
+        MethodDataProvider prov = new MethodDataProvider("foo", "otherMethod", new ArrayList(), declarations, globals);
+
+        Iterator it = prov.getResults( null, wm, null );
+        assertTrue(it.hasNext());
+        assertEquals("boo", it.next());
+    }
+    
+    
+
+}

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/TestVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/TestVariable.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/dataproviders/TestVariable.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -0,0 +1,23 @@
+package org.drools.base.dataproviders;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestVariable {
+    
+    
+    public String helloWorld(String a1, int a2, String a3) {
+        return a1 + a2 + a3;
+    }
+    
+    public List otherMethod() {
+        List list = new ArrayList();
+        list.add( "boo" );
+        return list;
+    }
+    
+    public String helloWorld() {
+        return "another one";
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -37,7 +37,6 @@
 import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 import org.drools.base.evaluators.Operator;
-import org.drools.rule.VariableConstraint;
 import org.drools.rule.Column;
 import org.drools.rule.Declaration;
 import org.drools.rule.InvalidRuleException;
@@ -45,6 +44,7 @@
 import org.drools.rule.Not;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
+import org.drools.rule.VariableConstraint;
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -16,22 +16,13 @@
  * limitations under the License.
  */
 
-import java.beans.IntrospectionException;
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
 import java.util.List;
 
-import org.drools.FactException;
-import org.drools.PackageIntegrationException;
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
-import org.drools.RuleIntegrationException;
 import org.drools.WorkingMemory;
-import org.drools.leaps.LeapsRuleBase;
-import org.drools.rule.DuplicateRuleNameException;
-import org.drools.rule.InvalidPatternException;
-import org.drools.rule.InvalidRuleException;
 
 public class ReteooMannersTest extends BaseMannersTest {
 

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/BaseWaltzTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/BaseWaltzTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/BaseWaltzTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -33,7 +33,6 @@
 import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 import org.drools.base.evaluators.Operator;
-import org.drools.rule.VariableConstraint;
 import org.drools.rule.Column;
 import org.drools.rule.Declaration;
 import org.drools.rule.InvalidRuleException;
@@ -42,6 +41,7 @@
 import org.drools.rule.Or;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
+import org.drools.rule.VariableConstraint;
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/ReteooWaltzTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/ReteooWaltzTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/ReteooWaltzTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -21,19 +21,9 @@
  * 
  */
 
-import java.beans.IntrospectionException;
-import java.io.IOException;
-
-import org.drools.FactException;
-import org.drools.PackageIntegrationException;
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
-import org.drools.RuleIntegrationException;
 import org.drools.WorkingMemory;
-import org.drools.leaps.LeapsRuleBase;
-import org.drools.rule.DuplicateRuleNameException;
-import org.drools.rule.InvalidPatternException;
-import org.drools.rule.InvalidRuleException;
 
 /**
  * 

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,12 +1,11 @@
 package org.drools.facttemplates;
 
-import org.drools.Cheese;
+import junit.framework.TestCase;
+
 import org.drools.rule.Declaration;
 import org.drools.rule.Package;
 import org.drools.spi.Extractor;
 
-import junit.framework.TestCase;
-
 public class FactTemplateFieldExtractorTest extends TestCase {
     public void testExtractor() {
         Package pkg = new Package( "org.store" );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,9 +1,9 @@
 package org.drools.facttemplates;
 
+import junit.framework.TestCase;
+
 import org.drools.rule.Package;
 
-import junit.framework.TestCase;
-
 public class FactTemplateTest extends TestCase {
     public void testFieldsAndGetters() {
         Package pkg = new Package( "org.store" );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -1,9 +1,9 @@
 package org.drools.facttemplates;
 
+import junit.framework.TestCase;
+
 import org.drools.base.ValueType;
 
-import junit.framework.TestCase;
-
 public class FieldTemplateTest extends TestCase {
     public void  testFieldTemplate() {
         FieldTemplate cheeseName = new FieldTemplateImpl("name", 5, String.class);

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AlphaNodeTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -29,7 +29,6 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.common.DefaultFactHandle;
 import org.drools.common.PropagationContextImpl;
-import org.drools.facttemplates.FactTemplateFieldExtractor;
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.Rule;
 import org.drools.spi.Evaluator;

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -2,35 +2,30 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.drools.Cheese;
 import org.drools.FactHandle;
 import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
 import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassObjectType;
 import org.drools.base.ValueType;
 import org.drools.base.evaluators.Operator;
 import org.drools.common.DefaultFactHandle;
-import org.drools.common.InternalFactHandle;
 import org.drools.common.PropagationContextImpl;
-import org.drools.rule.Column;
 import org.drools.rule.Declaration;
-import org.drools.rule.From;
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.DataProvider;
-import org.drools.spi.Evaluator;
 import org.drools.spi.FieldConstraint;
 import org.drools.spi.FieldValue;
 import org.drools.spi.MockField;
 import org.drools.spi.PropagationContext;
 import org.drools.spi.Tuple;
 
-import junit.framework.TestCase;
-
 public class FromNodeTest extends TestCase {
 
     public void testAlphaNode() {
@@ -396,7 +391,7 @@
             this.collection = collection;
         }
 
-        public Iterator getResults(Tuple tuple) {
+        public Iterator getResults(Tuple tuple, WorkingMemory wm, PropagationContext ctx) {
             return this.collection.iterator();
         }
     }

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/ColumnTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/ColumnTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/ColumnTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -0,0 +1,63 @@
+package org.drools.rule;
+
+import junit.framework.TestCase;
+
+import org.drools.Cheese;
+import org.drools.base.ClassObjectType;
+import org.drools.facttemplates.Fact;
+import org.drools.facttemplates.FactTemplate;
+import org.drools.facttemplates.FactTemplateImpl;
+import org.drools.facttemplates.FactTemplateObjectType;
+import org.drools.facttemplates.FieldTemplate;
+import org.drools.facttemplates.FieldTemplateImpl;
+import org.drools.spi.Extractor;
+import org.drools.spi.ObjectType;
+
+public class ColumnTest extends TestCase {
+
+    public void testDeclarationsObjectType() throws Exception {
+        ObjectType type = new ClassObjectType(Cheese.class);
+        Column col = new Column(0, type, "foo");
+        Declaration dec = col.getDeclaration();
+        Extractor ext = dec.getExtractor();
+        assertEquals(Cheese.class, ext.getExtractToClass());
+        
+        Cheese stilton = new Cheese("stilton", 42);
+        
+        assertEquals(stilton, dec.getValue( stilton ));
+        
+        
+        
+    }
+    
+    public void testDeclarationsFactTemplate() throws Exception {
+        
+        
+        Package pkg = new Package( "org.store" );
+        FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+                                                          0,
+                                                          String.class );
+        FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+                                                           1,
+                                                           Integer.class );
+        FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
+        FactTemplate cheese = new FactTemplateImpl( pkg,
+                                                    "Cheese",
+                                                    fields );
+        
+        ObjectType type = new FactTemplateObjectType(cheese);
+        
+        Column col = new Column(0, type, "foo");
+        Declaration dec = col.getDeclaration();
+        Extractor ext = dec.getExtractor();
+        assertEquals(Fact.class, ext.getExtractToClass());
+        
+        Fact stilton = cheese.createFact( 10 );
+        stilton.setFieldValue( "name", "stilton" );
+        stilton.setFieldValue( "price", new Integer( 200 ) );        
+        
+        assertEquals(stilton, dec.getValue( stilton ));
+    }
+    
+    
+}

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java	2006-08-15 14:39:42 UTC (rev 5893)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/DeclarationTest.java	2006-08-15 15:20:13 UTC (rev 5894)
@@ -24,7 +24,6 @@
 
 import org.drools.Cheese;
 import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassObjectType;
 import org.drools.spi.FieldExtractor;
 
 public class DeclarationTest extends TestCase {




More information about the jboss-svn-commits mailing list