[jboss-svn-commits] JBL Code SVN: r6716 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/common main/java/org/drools/leaps main/java/org/drools/reteoo main/java/org/drools/rule main/java/org/drools/spi test/java/org/drools/examples/manners test/java/org/drools/examples/waltz test/java/org/drools/leaps test/java/org/drools/reteoo test/java/org/drools/rule test/java/org/drools/spi

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 10 06:13:49 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-10-10 06:13:27 -0400 (Tue, 10 Oct 2006)
New Revision: 6716

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AlphaNodeFieldConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/AlphaMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Builder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.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/JoinNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.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/ReteooToJungVisitor.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.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/PredicateConstraint.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/VariableConstraint.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/Constraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.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/leaps/ColumnConstraintsTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/HashedTableComponentTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/LeapsRuleBaseTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryResultsTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/OrTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/spi/MockConstraint.java
Log:
JBRULES-498 Optimised HashMap implementations
-Added a cacheable context to speed up evaluations

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaNodeConstraints.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -24,11 +24,14 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.reteoo.BetaMemory;
 import org.drools.reteoo.ObjectHashTable;
+import org.drools.reteoo.ReteTuple;
+import org.drools.rule.ContextEntry;
 import org.drools.rule.Declaration;
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.VariableConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.Tuple;
 import org.drools.util.FactHashTable;
@@ -49,36 +52,59 @@
     public final static BetaNodeConstraints emptyBetaNodeConstraints = new BetaNodeConstraints();
 
     private final LinkedList         constraints;
+    
+    private ContextEntry         contexts;
 
     public BetaNodeConstraints() {
         this.constraints = null;
+        this.contexts = null;
     }
 
-    public BetaNodeConstraints(final FieldConstraint constraint) {
-        this( new FieldConstraint[]{constraint} );
+    public BetaNodeConstraints(final BetaNodeFieldConstraint constraint) {
+        this( new BetaNodeFieldConstraint[]{constraint} );
     }
 
-    public BetaNodeConstraints(final FieldConstraint[] constraints) {
+    public BetaNodeConstraints(final BetaNodeFieldConstraint[] constraints) {
         this.constraints =  new  LinkedList();
+        ContextEntry current  = null;
         for ( int  i  = 0, length = constraints.length; i < length; i++ ) {
             this.constraints.add( new LinkedListEntry( constraints[i] ) );
+            ContextEntry context = constraints[i].getContextEntry();
+            if ( current  ==  null )  {
+                current = context;
+                this.contexts = context;
+            } else {
+                current.setNext( context );    
+            }
+            current = context;
+        }             
+    }
+    
+    public void updateFromTuple(ReteTuple tuple) {
+        for( ContextEntry context = this.contexts; context != null; context = context.getNext() )  {
+            context.updateFromTuple( tuple );
         }        
     }
+    
+    public void updateFromFactHandle(InternalFactHandle handle) {
+        for( ContextEntry context = this.contexts; context != null; context = context.getNext() )  {
+            context.updateFromFactHandle( handle );
+        }                
+    }
 
-    public boolean isAllowed(final InternalFactHandle handle,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
+    public boolean isAllowed() {
         if ( this.constraints == null ) {
             return true;
         }
-                
-        for ( LinkedListEntry entry = ( LinkedListEntry ) this.constraints.getFirst(); entry != null; entry = ( LinkedListEntry ) entry.getNext() ) {
-            FieldConstraint constraint = (FieldConstraint) entry.getObject();
-            if ( !constraint.isAllowed( handle.getObject(),
-                                       tuple,
-                                       workingMemory ) ) {
+              
+        LinkedListEntry entry = ( LinkedListEntry ) this.constraints.getFirst();
+        ContextEntry context = this.contexts;
+        while( entry != null )  {
+            if ( !((BetaNodeFieldConstraint) entry.getObject()).isAllowed( context ) ) {
                 return false;
             }            
+            entry = ( LinkedListEntry ) entry.getNext() ;
+            context = context.getNext();
         }
         return true;
     }    
@@ -132,5 +158,5 @@
         
         return this.constraints.equals( other );
     }
-
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -17,8 +17,13 @@
 package org.drools.common;
 
 import org.drools.WorkingMemory;
+import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Column;
+import org.drools.rule.ContextEntry;
 import org.drools.rule.Declaration;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.spi.FieldExtractor;
 import org.drools.spi.Tuple;
 
 /**
@@ -32,15 +37,15 @@
 
 public class InstanceEqualsConstraint
     implements
-    FieldConstraint { 
+    BetaNodeFieldConstraint { 
 
-    private static final long serialVersionUID = 2986814365490743953L;
+    private static final long serialVersionUID = 320L;
 
     private final Declaration[] declarations     = new Declaration[0];
 
-    private int                 otherColumn;
+    private Column                 otherColumn;
 
-    public InstanceEqualsConstraint(final int otherColumn) {
+    public InstanceEqualsConstraint(final Column otherColumn) {
         this.otherColumn = otherColumn;
     }
 
@@ -48,22 +53,25 @@
         return this.declarations;
     }
     
-    public int getOtherColumn() {
+    public Column getOtherColumn() {
         return this.otherColumn;
     }
-
-    public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return (tuple.get( this.otherColumn ).getObject() == object);
+    
+    public ContextEntry getContextEntry() {
+        return new InstanceEqualsConstraintContextEntry( this.otherColumn  );
     }
+    
+    public boolean isAllowed(final ContextEntry entry) {
+        InstanceEqualsConstraintContextEntry context = (InstanceEqualsConstraintContextEntry) entry;
+        return context.left == context.right;
+    }
 
     public String toString() {
         return "[InstanceEqualsConstraint otherColumn=" + this.otherColumn + " ]";
     }
 
     public int hashCode() {
-        return this.otherColumn;
+        return this.otherColumn.hashCode();
     }
 
     public boolean equals(final Object object) {
@@ -76,7 +84,36 @@
         }
 
         final InstanceEqualsConstraint other = (InstanceEqualsConstraint) object;
-        return this.otherColumn == other.otherColumn;
+        return this.otherColumn.equals( other.otherColumn );
     }
 
+    public static class InstanceEqualsConstraintContextEntry implements ContextEntry {
+        public Object left;
+        public Object right;        
+        
+        private Column column;
+        private ContextEntry entry;
+        
+        
+        public InstanceEqualsConstraintContextEntry(Column column) {
+            this.column = column;
+        }
+        
+        public ContextEntry getNext() {
+            return this.entry;
+        }
+        
+        public void setNext(ContextEntry  entry) {
+            this.entry = entry;
+        }
+        
+        public void updateFromFactHandle(InternalFactHandle handle) {
+            this.left = handle.getObject();
+            
+        }
+        
+        public void updateFromTuple(ReteTuple tuple) {
+            this.right =  tuple.get( this.column.getFactIndex() );            
+        }                
+    }    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceNotEqualsConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -17,42 +17,52 @@
  */
 
 import org.drools.WorkingMemory;
+import org.drools.common.InstanceEqualsConstraint.InstanceEqualsConstraintContextEntry;
+import org.drools.reteoo.ReteTuple;
+import org.drools.rule.Column;
+import org.drools.rule.ContextEntry;
 import org.drools.rule.Declaration;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Tuple;
 
 public class InstanceNotEqualsConstraint
     implements
-    FieldConstraint {
-    /**
-     * 
-     */
-    private static final long   serialVersionUID = -4913836428340400997L;
+    BetaNodeFieldConstraint { 
 
+    private static final long serialVersionUID = 320L;
+
     private final Declaration[] declarations     = new Declaration[0];
 
-    private int                 otherColumn;
+    private Column                 otherColumn;
 
-    public InstanceNotEqualsConstraint(final int otherColumn) {
+    public InstanceNotEqualsConstraint(final Column otherColumn) {
         this.otherColumn = otherColumn;
     }
 
     public Declaration[] getRequiredDeclarations() {
         return this.declarations;
     }
-
-    public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return !(tuple.get( this.otherColumn ).getObject() == object);
+    
+    public Column getOtherColumn() {
+        return this.otherColumn;
     }
+    
+    public ContextEntry getContextEntry() {
+        return new InstanceNotEqualsConstraintContextEntry( this.otherColumn  );
+    }
+    
+    public boolean isAllowed(final ContextEntry entry) {
+        InstanceNotEqualsConstraintContextEntry context = (InstanceNotEqualsConstraintContextEntry) entry;
+        return context.left != context.right;
+    }
 
     public String toString() {
-        return "[InstanceNotEqualsConstraint otherColumn=" + this.otherColumn + " ]";
+        return "[InstanceEqualsConstraint otherColumn=" + this.otherColumn + " ]";
     }
 
     public int hashCode() {
-        return this.otherColumn;
+        return this.otherColumn.hashCode();
     }
 
     public boolean equals(final Object object) {
@@ -65,7 +75,37 @@
         }
 
         final InstanceNotEqualsConstraint other = (InstanceNotEqualsConstraint) object;
-        return this.otherColumn == other.otherColumn;
+        return this.otherColumn.equals( other.otherColumn );
     }
 
+    public static class InstanceNotEqualsConstraintContextEntry implements ContextEntry {
+        public Object left;
+        public Object right;        
+        
+        private Column column;
+        private ContextEntry entry;
+        
+        
+        public InstanceNotEqualsConstraintContextEntry(Column column) {
+            this.column = column;
+        }
+        
+        public ContextEntry getNext() {
+            return this.entry;
+        }
+        
+        public void setNext(ContextEntry  entry) {
+            this.entry = entry;
+        }
+        
+        public void updateFromFactHandle(InternalFactHandle handle) {
+            this.left = handle.getObject();
+            
+        }
+        
+        public void updateFromTuple(ReteTuple tuple) {
+            this.right =  tuple.get( this.column.getFactIndex() );            
+        }                
+    }  
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/AlphaMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/AlphaMemory.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/AlphaMemory.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -2,7 +2,7 @@
 
 import org.drools.WorkingMemory;
 import org.drools.common.InternalFactHandle;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.Tuple;
 import org.drools.util.IdentityMap;
 
@@ -13,7 +13,7 @@
 
     }
 
-    boolean checkAlpha( final FieldConstraint alpha,
+    boolean checkAlpha( final AlphaNodeFieldConstraint alpha,
                         final InternalFactHandle factHandle,
                         final Tuple tuple,
                         final WorkingMemory workingMemory ) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Builder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Builder.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/Builder.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -32,7 +32,7 @@
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.Not;
 import org.drools.rule.Rule;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 
 /**
  * A Rule<code>Builder</code> to process <code>Rule</code>s for use with
@@ -180,7 +180,7 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
+            final AlphaNodeFieldConstraint fieldConstraint = (AlphaNodeFieldConstraint) object;
             if ( fieldConstraint.getRequiredDeclarations().length == 0 ) {
                 alphaConstraints.add( fieldConstraint);
             } else {
@@ -190,7 +190,7 @@
 
 
         if ( !predicateConstraints.isEmpty() ) {
-            binder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+            binder = new BetaNodeConstraints( (AlphaNodeFieldConstraint[]) predicateConstraints.toArray( new AlphaNodeFieldConstraint[predicateConstraints.size()] ) );
         } else {
             binder = new BetaNodeConstraints();
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -23,7 +23,7 @@
 import org.drools.common.BetaNodeConstraints;
 import org.drools.common.InternalFactHandle;
 import org.drools.rule.Column;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.Tuple;
 
 /**
@@ -35,7 +35,7 @@
 public class ColumnConstraints implements Serializable {
     private Object                  classType;
 
-    private final FieldConstraint[] alphaConstraints;
+    private final AlphaNodeFieldConstraint[] alphaConstraints;
 
     private final boolean           alphaPresent;
 
@@ -56,7 +56,7 @@
             this.betaPresent = false;
         }
         if ( alpha != null && alpha.size() > 0 ) {
-            this.alphaConstraints = (FieldConstraint[]) alpha.toArray( new FieldConstraint[0] );
+            this.alphaConstraints = (AlphaNodeFieldConstraint[]) alpha.toArray( new AlphaNodeFieldConstraint[0] );
             this.alphaPresent = true;
         } else {
             this.alphaConstraints = null;
@@ -111,11 +111,11 @@
         return this.alphaPresent;
     }
     
-    protected FieldConstraint[] getAlphaContraints() {
+    protected AlphaNodeFieldConstraint[] getAlphaContraints() {
         return this.alphaConstraints;
     }
     
-    protected FieldConstraint[] getBetaContraints() {
+    protected AlphaNodeFieldConstraint[] getBetaContraints() {
         return this.beta.getConstraints( );
     }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsBuilder.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsBuilder.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -35,7 +35,7 @@
 import org.drools.rule.InvalidPatternException;
 import org.drools.rule.Not;
 import org.drools.rule.Rule;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.ObjectType;
 
 /**
@@ -191,7 +191,7 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
+            final AlphaNodeFieldConstraint fieldConstraint = (AlphaNodeFieldConstraint) object;
             if ( fieldConstraint.getRequiredDeclarations().length == 0 ) {
                 alphaConstraints.add( fieldConstraint);
             } else {
@@ -200,7 +200,7 @@
         }
 
         if ( !predicateConstraints.isEmpty() ) {
-            binder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+            binder = new BetaNodeConstraints( (AlphaNodeFieldConstraint[]) predicateConstraints.toArray( new AlphaNodeFieldConstraint[predicateConstraints.size()] ) );
         } else {
             binder = new BetaNodeConstraints();
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -25,7 +25,7 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.rule.Accumulate;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PropagationContext;
 import org.drools.util.LinkedList;
 import org.drools.util.LinkedListEntry;
@@ -44,7 +44,7 @@
     private static final long         serialVersionUID = -4081578178269297948L;
 
     private final Accumulate          accumulate;
-    private final FieldConstraint[]   constraints;
+    private final AlphaNodeFieldConstraint[]   constraints;
     private final BetaNodeConstraints resultsBinder;
 
     /**
@@ -66,7 +66,7 @@
         this( id,
               leftInput,
               rightInput,
-              new FieldConstraint[0],
+              new AlphaNodeFieldConstraint[0],
               new BetaNodeConstraints(),
               new BetaNodeConstraints(),
               accumulate );
@@ -75,7 +75,7 @@
     public AccumulateNode(final int id,
                           final TupleSource leftInput,
                           final ObjectSource rightInput,
-                          final FieldConstraint[] constraints,
+                          final AlphaNodeFieldConstraint[] constraints,
                           final BetaNodeConstraints sourceBinder,
                           final BetaNodeConstraints resultsBinder,
                           final Accumulate accumulate) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -22,7 +22,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PropagationContext;
 import org.drools.util.FactHashTable;
 import org.drools.util.Iterator;
@@ -33,7 +33,7 @@
  * to apply <code>FieldConstraint<.code>s on asserted fact 
  * objects where the <code>FieldConstraint</code>s have no dependencies on any other of the facts in the current <code>Rule</code>.
  * 
- *  @see FieldConstraint
+ *  @see AlphaNodeFieldConstraint
  * 
  * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
  * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
@@ -50,7 +50,7 @@
     private static final long     serialVersionUID = 8936511451364612838L;
 
     /** The <code>FieldConstraint</code> */
-    private final FieldConstraint constraint;
+    private final AlphaNodeFieldConstraint constraint;
 
     private ObjectSinkNode        previousObjectSinkNode;
     private ObjectSinkNode        nextObjectSinkNode;
@@ -65,7 +65,7 @@
      * @param objectSource
      */
     AlphaNode(final int id,
-              final FieldConstraint constraint,
+              final AlphaNodeFieldConstraint constraint,
               final ObjectSource objectSource) {
         this(id, constraint, objectSource, true);
     }
@@ -83,7 +83,7 @@
      * @param hasMemory true if node shall be configured with local memory. False otherwise.
      */
     AlphaNode(final int id,
-              final FieldConstraint constraint,
+              final AlphaNodeFieldConstraint constraint,
               final ObjectSource objectSource,
               final boolean hasMemory) {
         super( id );
@@ -97,7 +97,7 @@
      * 
      * @return <code>FieldConstraint</code>
      */
-    public FieldConstraint getConstraint() {
+    public AlphaNodeFieldConstraint getConstraint() {
         return this.constraint;
     }
 
@@ -132,7 +132,6 @@
                              final PropagationContext context,
                              final InternalWorkingMemory workingMemory) throws FactException {
         if ( this.constraint.isAllowed( handle.getObject(),
-                                        null,
                                         workingMemory ) ) {
             if ( hasMemory() ) {
                 final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -27,9 +27,11 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
+import org.drools.rule.LiteralConstraint;
 import org.drools.rule.VariableConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.PropagationContext;
 import org.drools.util.FactHashTable;
@@ -112,13 +114,13 @@
         this.constraints = constraints;
     }
 
-    public FieldConstraint[] getConstraints() {
+    public AlphaNodeFieldConstraint[] getConstraints() {
         LinkedList constraints = this.constraints.getConstraints();
 
-        FieldConstraint[] array = new FieldConstraint[constraints.size()];
+        AlphaNodeFieldConstraint[] array = new AlphaNodeFieldConstraint[constraints.size()];
         int i = 0;
         for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
-            array[i++] = (FieldConstraint) entry.getObject();
+            array[i++] = (AlphaNodeFieldConstraint) entry.getObject();
         }
         return array;
     }
@@ -144,8 +146,16 @@
         }        
         
         return list;
-    }    
+    } 
     
+    public ObjectTypeNode  getObjectTypeNode() {
+            ObjectSource source = this.rightInput;
+            while ( source.getClass() != ObjectTypeNode.class ) {
+                source = source.objectSource;
+            }
+            return ((ObjectTypeNode)source);     
+    }
+    
     public void attach(final InternalWorkingMemory[] workingMemories) {
         attach();
 
@@ -233,7 +243,7 @@
         
         if ( constraints != null ) {
             for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
-                FieldConstraint constraint = (FieldConstraint) entry.getObject();
+                BetaNodeFieldConstraint constraint = (BetaNodeFieldConstraint) entry.getObject();
                 if ( constraint.getClass() == VariableConstraint.class ) {
                     VariableConstraint variableConstraint = (VariableConstraint) constraint;
                     FieldExtractor extractor = variableConstraint.getFieldExtractor();
@@ -247,7 +257,7 @@
                         break;
 
                     }
-                }
+                }                                                     
             }
         }
         

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -26,7 +26,7 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.rule.Collect;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PropagationContext;
 import org.drools.util.LinkedList;
 import org.drools.util.LinkedListEntry;
@@ -43,7 +43,7 @@
     private static final long         serialVersionUID = -8321568626178187047L;
 
     private final Collect             collect;
-    private final FieldConstraint[]   resultConstraints;
+    private final AlphaNodeFieldConstraint[]   resultConstraints;
     private final BetaNodeConstraints resultsBinder;
 
     /**
@@ -65,7 +65,7 @@
         this( id,
               leftInput,
               rightInput,
-              new FieldConstraint[0],
+              new AlphaNodeFieldConstraint[0],
               new BetaNodeConstraints(),
               new BetaNodeConstraints(),
               collect );
@@ -92,7 +92,7 @@
     public CollectNode(final int id,
                        final TupleSource leftInput,
                        final ObjectSource rightInput,
-                       final FieldConstraint[] resultConstraints,
+                       final AlphaNodeFieldConstraint[] resultConstraints,
                        final BetaNodeConstraints sourceBinder,
                        final BetaNodeConstraints resultsBinder,
                        final Collect collect) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -8,7 +8,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.rule.LiteralConstraint;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.PropagationContext;
 import org.drools.util.Iterator;
@@ -38,7 +38,7 @@
     public void addObjectSink(ObjectSink sink) {
         if ( sink.getClass() == AlphaNode.class ) {
             AlphaNode alphaNode = (AlphaNode) sink;
-            FieldConstraint fieldConstraint = alphaNode.getConstraint();
+            AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
 
             if ( fieldConstraint.getClass() == LiteralConstraint.class ) {
                 LiteralConstraint literalConstraint = (LiteralConstraint) fieldConstraint;
@@ -53,7 +53,7 @@
                         if ( !fieldIndex.isHashed() ) {
                             hashSinks( fieldIndex );
                         }
-                        Object value = literalConstraint.getField().getValue();
+                        Object value = literalConstraint.getField();
                         // no need to check, we know  the sink  does not exist
                         hashedSinkMap.put( new HashKey( index,
                                                         value ),
@@ -81,12 +81,12 @@
     public void removeObjectSink(ObjectSink sink) {
         if ( sink.getClass() == AlphaNode.class ) {
             AlphaNode alphaNode = (AlphaNode) sink;
-            FieldConstraint fieldConstraint = alphaNode.getConstraint();
+            AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
 
             if ( fieldConstraint.getClass() == LiteralConstraint.class ) {
                 LiteralConstraint literalConstraint = (LiteralConstraint) fieldConstraint;
                 Evaluator evaluator = literalConstraint.getEvaluator();
-                Object value = literalConstraint.getField().getValue();
+                Object value = literalConstraint.getField();
 
                 if ( evaluator.getOperator() == Operator.EQUAL ) {
                     int index = literalConstraint.getFieldExtractor().getIndex();
@@ -131,11 +131,11 @@
 
         for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
             AlphaNode alphaNode = (AlphaNode) sink;
-            FieldConstraint fieldConstraint = alphaNode.getConstraint();
+            AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
             LiteralConstraint literalConstraint = (LiteralConstraint) fieldConstraint;
             Evaluator evaluator = literalConstraint.getEvaluator();
             if ( evaluator.getOperator() == Operator.EQUAL && index == literalConstraint.getFieldExtractor().getIndex() ) {
-                Object value = literalConstraint.getField().getValue();
+                Object value = literalConstraint.getField();
                 list.add( sink );
                 hashedSinkMap.put( new HashKey( index,
                                                 value ),
@@ -160,11 +160,11 @@
 
         for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
             AlphaNode alphaNode = (AlphaNode) sink;
-            FieldConstraint fieldConstraint = alphaNode.getConstraint();
+            AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
             LiteralConstraint literalConstraint = (LiteralConstraint) fieldConstraint;
             Evaluator evaluator = literalConstraint.getEvaluator();
             if ( evaluator.getOperator() == Operator.EQUAL && index == literalConstraint.getFieldExtractor().getIndex() ) {
-                Object value = literalConstraint.getField().getValue();
+                Object value = literalConstraint.getField();
                 this.hashKey.setIndex( index );
                 this.hashKey.setValue( value );
                 this.hashableSinks.add( sink );

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -13,7 +13,7 @@
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
 import org.drools.spi.DataProvider;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PropagationContext;
 
 public class FromNode extends TupleSource
@@ -27,13 +27,13 @@
 
     private DataProvider        dataProvider;
     private TupleSource         tupleSource;
-    private FieldConstraint[]   constraints;
+    private AlphaNodeFieldConstraint[]   constraints;
     private BetaNodeConstraints binder;
 
     public FromNode(final int id,
                     final DataProvider dataProvider,
                     final TupleSource tupleSource,
-                    final FieldConstraint[] constraints,
+                    final AlphaNodeFieldConstraint[] constraints,
                     final BetaNodeConstraints binder) {
         super( id );
         this.dataProvider = dataProvider;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -107,11 +107,13 @@
                             final InternalWorkingMemory workingMemory) {
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getTupleMemory().add( leftTuple );
-                
         Iterator it = memory.getObjectMemory().iterator( leftTuple );
+        
+        this.constraints.updateFromTuple( leftTuple );
         for ( FactEntry entry = ( FactEntry ) it.next(); entry != null; entry = ( FactEntry ) it.next() ) {
             InternalFactHandle handle = entry.getFactHandle();
-            if ( this.constraints.isAllowed( handle, leftTuple, workingMemory ) ) {
+            this.constraints.updateFromFactHandle( handle );
+            if ( this.constraints.isAllowed() ) {
                 sink.propagateAssertTuple( leftTuple, handle, context, workingMemory );
             }
         }        
@@ -142,8 +144,10 @@
         memory.getObjectMemory().add( handle );
         
         Iterator it = memory.getTupleMemory().iterator();
+        this.constraints.updateFromFactHandle( handle );
         for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
-            if ( this.constraints.isAllowed( handle, tuple, workingMemory ) ) {
+            this.constraints.updateFromTuple( tuple );
+            if ( this.constraints.isAllowed( ) ) {
                 sink.propagateAssertTuple( tuple, handle, context, workingMemory );
             }
         }
@@ -216,9 +220,11 @@
         Iterator tupleIter = memory.getTupleMemory().iterator();
         for ( ReteTuple tuple = ( ReteTuple ) tupleIter.next(); tuple != null; tuple = ( ReteTuple ) tupleIter.next() ) {
             Iterator objectIter = memory.getObjectMemory().iterator( tuple );
+            this.constraints.updateFromTuple( tuple );
             for ( FactEntry entry = ( FactEntry ) objectIter.next(); entry != null; entry = ( FactEntry ) objectIter.next() ) {
                 InternalFactHandle handle = entry.getFactHandle();
-                if ( this.constraints.isAllowed( handle, tuple, workingMemory ) ) {
+                this.constraints.updateFromFactHandle( handle );
+                if ( this.constraints.isAllowed( ) ) {
                     sink.assertTuple( new ReteTuple( tuple, handle),  context, workingMemory );
                 }
             }               

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -29,7 +29,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PropagationContext;
 import org.drools.util.Iterator;
 import org.drools.util.LinkedList;
@@ -58,23 +58,23 @@
      */
     private static final long         serialVersionUID = 320L;
     private final ObjectSource        objectSource;
-    private final BetaNodeConstraints constraints;
+//    private final AlphaNodeFieldConstraint    constraints;
 
-    /**
-     * Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a 
-     * parent <code>ObjectSource</code> and adds it to a given column in the resulting Tuples.
-     * 
-     * @param id
-     *      The unique id of this node in the current Rete network
-     * @param source
-     *      The parent node, where Facts are propagated from
-     */
-    public LeftInputAdapterNode(final int id,
-                                final ObjectSource source) {
-        this( id,
-              source,
-              null );
-    }
+//    /**
+//     * Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a 
+//     * parent <code>ObjectSource</code> and adds it to a given column in the resulting Tuples.
+//     * 
+//     * @param id
+//     *      The unique id of this node in the current Rete network
+//     * @param source
+//     *      The parent node, where Facts are propagated from
+//     */
+//    public LeftInputAdapterNode(final int id,
+//                                final ObjectSource source) {
+//        this( id,
+//              source,
+//              null );
+//    }
 
     /**
      * Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a 
@@ -89,25 +89,24 @@
      *      a predicate is used in the first column, for instance
      */
     public LeftInputAdapterNode(final int id,
-                                final ObjectSource source,
-                                final BetaNodeConstraints constraints) {
+                                final ObjectSource source) {
         super( id );
         this.objectSource = source;
-        this.constraints = constraints;
+        //this.constraints = constraints;
         setHasMemory( false );
     }
 
-    public FieldConstraint[] getConstraints() {
-        LinkedList constraints = this.constraints.getConstraints();
+//    public AlphaNodeFieldConstraint[] getConstraints() {
+//        LinkedList constraints = this.constraints.getConstraints();
+//
+//        AlphaNodeFieldConstraint[] array = new AlphaNodeFieldConstraint[constraints.size()];
+//        int i = 0;
+//        for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
+//            array[i++] = (AlphaNodeFieldConstraint) entry.getObject();
+//        }
+//        return array;
+//    }
 
-        FieldConstraint[] array = new FieldConstraint[constraints.size()];
-        int i = 0;
-        for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
-            array[i++] = (FieldConstraint) entry.getObject();
-        }
-        return array;
-    }
-
     /* (non-Javadoc)
      * @see org.drools.reteoo.BaseNode#attach()
      */
@@ -144,9 +143,8 @@
     public void assertObject(final InternalFactHandle handle,
                              final PropagationContext context,
                              final InternalWorkingMemory workingMemory) {
-        if ( (this.constraints == null) || (this.constraints.isAllowed( handle,
-                                                                        null,
-                                                                        workingMemory )) ) {
+//        if ( (this.constraints == null) || (this.constraints.isAllowed( handle.getObject(),
+//                                                                        workingMemory )) ) {
             ReteTuple tuple = this.sink.createAndPropagateAssertTuple( handle,
                                                                        context,
                                                                        workingMemory );
@@ -156,7 +154,7 @@
                 map.put( handle,
                          tuple,
                          false );
-            }
+//            }
         }
     }
 
@@ -239,11 +237,11 @@
         }
 
         final LeftInputAdapterNode other = (LeftInputAdapterNode) object;
-        if ( this.constraints == null ) {
-            return this.objectSource.equals( other.objectSource ) && other.constraints == null;
-        } else {
-            return this.objectSource.equals( other.objectSource ) && this.constraints.equals( other.constraints );
-        }
+//        if ( this.constraints == null ) {
+//            return this.objectSource.equals( other.objectSource ) && other.constraints == null;
+//        } else {
+            return this.objectSource.equals( other.objectSource ); //&& this.constraints.equals( other.constraints );
+//        }
     }
 
     public Object createMemory(RuleBaseConfiguration config) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -115,10 +115,12 @@
         memory.getTupleMemory().add( leftTuple );
                 
         Iterator it = memory.getObjectMemory().iterator( leftTuple );
+        this.constraints.updateFromTuple( leftTuple );
         int matches = 0;
         for ( FactEntry entry = ( FactEntry ) it.next(); entry != null; entry = ( FactEntry ) it.next() ) {
-            InternalFactHandle handle = entry.getFactHandle();            
-            if ( this.constraints.isAllowed( handle, leftTuple, workingMemory ) ) {
+            InternalFactHandle handle = entry.getFactHandle();  
+            this.constraints.updateFromFactHandle( handle );
+            if ( this.constraints.isAllowed( ) ) {
                 matches++;
             }
         }
@@ -151,13 +153,16 @@
         memory.getObjectMemory().add( handle );
         
         Iterator it = memory.getTupleMemory().iterator();
+        this.constraints.updateFromFactHandle( handle );
         for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
-            if ( this.constraints.isAllowed( handle, tuple, workingMemory ) ) {
+            this.constraints.updateFromTuple( tuple );
+            if ( this.constraints.isAllowed( ) ) {
                 int matches = tuple.getMatches();
                 tuple.setMatches( matches + 1 );
-                if ( matches == 0 ) {
-                    this.sink.propagateRetractTuple( tuple, context, workingMemory );
-                }
+                this.sink.propagateRetractTuple( tuple, context, workingMemory );
+//                if ( matches == 0 ) {
+//                    this.sink.propagateRetractTuple( tuple, context, workingMemory );
+//                }
             }
         }
     }
@@ -184,8 +189,10 @@
         }
         
         Iterator it = memory.getTupleMemory().iterator();
+        this.constraints.updateFromFactHandle( handle );
         for ( ReteTuple tuple = ( ReteTuple ) it.next(); tuple != null; tuple = ( ReteTuple ) it.next() ) {
-            if ( this.constraints.isAllowed( handle, tuple, workingMemory ) ) {
+            this.constraints.updateFromTuple( tuple );
+            if ( this.constraints.isAllowed( ) ) {
                 tuple.setMatches( tuple.getMatches() - 1 );
                 if ( tuple.getMatches() == 0 ) {
                     this.sink.propagateAssertTuple( tuple, context, workingMemory );

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -50,7 +50,9 @@
 import org.drools.rule.Not;
 import org.drools.rule.Query;
 import org.drools.rule.Rule;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.spi.Constraint;
 import org.drools.spi.FieldValue;
 
 /**
@@ -262,8 +264,7 @@
                 // a TupleSource using LeftInputAdapterNode
                 if ( this.tupleSource == null ) {
                     this.tupleSource = attachNode( new LeftInputAdapterNode( this.id++,
-                                                                             this.objectSource,
-                                                                             binder ) );
+                                                                             this.objectSource ) );
 
                     // objectSource is created by the attachColumn method, if we
                     // adapt this to
@@ -381,7 +382,7 @@
         BetaNodeConstraints binder;
 
         if ( !predicates.isEmpty() ) {
-            binder = new BetaNodeConstraints( (FieldConstraint[]) predicates.toArray( new FieldConstraint[predicates.size()] ) );
+            binder = new BetaNodeConstraints( (BetaNodeFieldConstraint[]) predicates.toArray( new BetaNodeFieldConstraint[predicates.size()] ) );
         } else {
             binder = new BetaNodeConstraints();
         }
@@ -407,13 +408,13 @@
                 final Map.Entry entry = (Map.Entry) it.next();
                 final Class previousClass = ((ClassObjectType) entry.getKey()).getClassType();
                 if ( thisClass.isAssignableFrom( previousClass ) ) {
-                    predicateConstraints.add( new InstanceNotEqualsConstraint( ((Integer) entry.getValue()).intValue() ) );
+                    predicateConstraints.add( new InstanceNotEqualsConstraint( (Column) entry.getValue()) );
                 }
             }
 
             // Must be added after the checking, otherwise it matches against itself
             this.objectType.put( column.getObjectType(),
-                                 new Integer( column.getFactIndex() ) );
+                                 column );
         }
 
         for ( final Iterator it = constraints.iterator(); it.hasNext(); ) {
@@ -427,14 +428,14 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
-            if ( fieldConstraint.getRequiredDeclarations().length == 0 ) {
+            final Constraint constraint = (Constraint) object;
+            if ( constraint.getRequiredDeclarations().length == 0) {
                 this.objectSource = attachNode( new AlphaNode( this.id++,
-                                                               fieldConstraint,
+                                                               (AlphaNodeFieldConstraint) constraint,
                                                                this.objectSource ) );
             } else {
-                checkUnboundDeclarations( fieldConstraint.getRequiredDeclarations() );
-                predicateConstraints.add( fieldConstraint );
+                checkUnboundDeclarations( ((BetaNodeFieldConstraint) constraint).getRequiredDeclarations() );
+                predicateConstraints.add( (BetaNodeFieldConstraint) constraint );
             }
         }
 
@@ -487,7 +488,7 @@
                                                                                                        column.getFactIndex(),
                                                                                                        notNode ) );
 
-        BetaNodeConstraints identityBinder = new BetaNodeConstraints( new InstanceEqualsConstraint( column.getFactIndex() ) );
+        BetaNodeConstraints identityBinder = new BetaNodeConstraints( new InstanceEqualsConstraint( column ) );
         notNode = (NotNode) attachNode( new NotNode( this.id++,
                                                      tupleSource,
                                                      adapter,
@@ -599,7 +600,7 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
+            final AlphaNodeFieldConstraint fieldConstraint = (AlphaNodeFieldConstraint) object;
             if ( fieldConstraint instanceof LiteralConstraint ) {
                 alphaNodeConstraints.add( fieldConstraint );
             } else {
@@ -611,7 +612,7 @@
         BetaNodeConstraints binder;
 
         if ( !predicateConstraints.isEmpty() ) {
-            binder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+            binder = new BetaNodeConstraints( (BetaNodeFieldConstraint[]) predicateConstraints.toArray( new BetaNodeFieldConstraint[predicateConstraints.size()] ) );
         } else {
             binder = new BetaNodeConstraints();
         }
@@ -619,7 +620,7 @@
         this.tupleSource = attachNode( new FromNode( id++,
                                                      from.getDataProvider(),
                                                      this.tupleSource,
-                                                     (FieldConstraint[]) alphaNodeConstraints.toArray( new FieldConstraint[alphaNodeConstraints.size()] ),
+                                                     (AlphaNodeFieldConstraint[]) alphaNodeConstraints.toArray( new AlphaNodeFieldConstraint[alphaNodeConstraints.size()] ),
                                                      binder ) );
 
     }
@@ -674,7 +675,7 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
+            final AlphaNodeFieldConstraint fieldConstraint = (AlphaNodeFieldConstraint) object;
             if ( fieldConstraint instanceof LiteralConstraint ) {
                 alphaNodeConstraints.add( fieldConstraint );
             } else {
@@ -685,7 +686,7 @@
 
         BetaNodeConstraints resultsBinder = null;
         if ( !predicateConstraints.isEmpty() ) {
-            resultsBinder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+            resultsBinder = new BetaNodeConstraints( (BetaNodeFieldConstraint[]) predicateConstraints.toArray( new BetaNodeFieldConstraint[predicateConstraints.size()] ) );
         } else {
             resultsBinder = new BetaNodeConstraints();
         }
@@ -693,7 +694,7 @@
         this.tupleSource = attachNode( new AccumulateNode( id++,
                                                            this.tupleSource,
                                                            this.objectSource,
-                                                           (FieldConstraint[]) alphaNodeConstraints.toArray( new FieldConstraint[alphaNodeConstraints.size()] ),
+                                                           (AlphaNodeFieldConstraint[]) alphaNodeConstraints.toArray( new AlphaNodeFieldConstraint[alphaNodeConstraints.size()] ),
                                                            sourceBinder,
                                                            resultsBinder,
                                                            accumulate ) );
@@ -749,7 +750,7 @@
                 continue;
             }
 
-            final FieldConstraint fieldConstraint = (FieldConstraint) object;
+            final AlphaNodeFieldConstraint fieldConstraint = (AlphaNodeFieldConstraint) object;
             if ( fieldConstraint instanceof LiteralConstraint ) {
                 alphaNodeConstraints.add( fieldConstraint );
             } else {
@@ -760,7 +761,7 @@
 
         BetaNodeConstraints resultsBinder = null;
         if ( !predicateConstraints.isEmpty() ) {
-            resultsBinder = new BetaNodeConstraints( (FieldConstraint[]) predicateConstraints.toArray( new FieldConstraint[predicateConstraints.size()] ) );
+            resultsBinder = new BetaNodeConstraints( (BetaNodeFieldConstraint[]) predicateConstraints.toArray( new BetaNodeFieldConstraint[predicateConstraints.size()] ) );
         } else {
             resultsBinder = new BetaNodeConstraints();
         }
@@ -768,7 +769,7 @@
         this.tupleSource = attachNode( new CollectNode( id++,
                                                         this.tupleSource,
                                                         this.objectSource,
-                                                        (FieldConstraint[]) alphaNodeConstraints.toArray( new FieldConstraint[alphaNodeConstraints.size()] ),
+                                                        (AlphaNodeFieldConstraint[]) alphaNodeConstraints.toArray( new AlphaNodeFieldConstraint[alphaNodeConstraints.size()] ),
                                                         sourceBinder,
                                                         resultsBinder,
                                                         collect ) );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -26,7 +26,7 @@
 import org.drools.base.ClassFieldExtractor;
 import org.drools.common.BaseNode;
 import org.drools.rule.LiteralConstraint;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.util.ReflectiveVisitor;
 import org.drools.visualize.ReteooJungViewer.DroolsVertex;
 
@@ -376,7 +376,7 @@
         }
     }
 
-    public static String dumpConstraints(final FieldConstraint[] constraints) {
+    public static String dumpConstraints(final AlphaNodeFieldConstraint[] constraints) {
         final StringBuffer buffer = new StringBuffer();
         for ( int i = 0, length = constraints.length; i < length; i++ ) {
             buffer.append( constraints[i].toString() + "<br>" );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Column.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -23,8 +23,9 @@
 import java.util.List;
 
 import org.drools.spi.ColumnExtractor;
+import org.drools.spi.Constraint;
 import org.drools.spi.Extractor;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.ObjectType;
 
 public class Column
@@ -84,7 +85,7 @@
         return Collections.unmodifiableList( this.constraints );
     }
 
-    public void addConstraint(final FieldConstraint constraint) {
+    public void addConstraint(final Constraint constraint) {
         if ( this.constraints == Collections.EMPTY_LIST ) {
             this.constraints = new ArrayList( 1 );
         }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ContextEntry.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -0,0 +1,13 @@
+package org.drools.rule;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.reteoo.ReteTuple;
+import org.drools.util.Entry;
+import org.drools.util.LinkedListNode;
+
+public interface ContextEntry {
+    public ContextEntry getNext();
+    public void setNext(ContextEntry  entry);
+    public void updateFromTuple(ReteTuple tuple);   
+    public void updateFromFactHandle(InternalFactHandle handle);
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -17,15 +17,18 @@
  */
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.reteoo.ReteTuple;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.Tuple;
 
 public class LiteralConstraint
     implements
-    FieldConstraint{
+    AlphaNodeFieldConstraint{
 
     /**
      * 
@@ -35,6 +38,8 @@
     private final FieldExtractor       extractor;
     
     private final LiteralRestriction   restriction;
+    
+    private final static Declaration[] emptyDeclarations = new Declaration[]{};
 
     public LiteralConstraint(final FieldExtractor extractor,
                              final Evaluator evaluator,
@@ -53,13 +58,17 @@
         return this.restriction.getEvaluator();
     }
 
-    public FieldValue getField() {
+    public Object getField() {
         return this.restriction.getField();
     }
 
     public FieldExtractor getFieldExtractor() {
         return this.extractor;
     }
+    
+    public Declaration[] getRDeclarations(){
+        return emptyDeclarations;
+    }
 
     /**
      * Literal constraints cannot have required declarations, so always return an empty array.
@@ -71,13 +80,13 @@
     }
 
     public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return this.restriction.isAllowed( this.extractor.getValue( object ), tuple, workingMemory );
+                             final InternalWorkingMemory workingMemory) {
+        return this.restriction.isAllowed(  this.extractor.getValue( object ), 
+                                            workingMemory );
     }
 
     public String toString() {
-        return "[LiteralConstraint fieldExtractor=" + this.extractor + " evaluator=" + getEvaluator() + " value=" + getField().getValue() + "]";
+        return "[LiteralConstraint fieldExtractor=" + this.extractor + " evaluator=" + getEvaluator() + " value=" + getField() + "]";
     }
 
     public int hashCode() {
@@ -100,4 +109,29 @@
         return this.extractor.equals( other.extractor ) && this.restriction.equals( other.restriction );
     }
 
+    public static class LiteralContextEntry implements ContextEntry {
+        public Object object;    
+        
+        private FieldExtractor extractor;
+        
+        
+        public LiteralContextEntry(FieldExtractor extractor) {
+            this.extractor = extractor;
+        }
+        
+        public ContextEntry getNext() {
+            return null;
+        }
+        
+        public void setNext(ContextEntry  entry) {
+        }
+        
+        public void updateFromFactHandle(InternalFactHandle handle) {
+            this.object = this.extractor.getValue( handle.getObject() );
+            
+        }
+        
+        public void updateFromTuple(ReteTuple tuple) {            
+        }                
+    }    
 }
\ No newline at end of file

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralRestriction.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -17,6 +17,7 @@
  */
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.spi.Evaluator;
 import org.drools.spi.FieldValue;
 import org.drools.spi.Restriction;
@@ -31,7 +32,7 @@
      */
     private static final long          serialVersionUID     = 320;
 
-    private final FieldValue           field;
+    private final Object               field;
 
     private final Evaluator            evaluator;
 
@@ -39,7 +40,7 @@
 
     public LiteralRestriction(final FieldValue field,
                               final Evaluator evaluator) {
-        this.field = field;
+        this.field = field.getValue();
         this.evaluator = evaluator;
     }
 
@@ -47,10 +48,19 @@
         return this.evaluator;
     }
 
-    public FieldValue getField() {
+    public Object getField() {
         return this.field;
     }
+    
+    public boolean isAllowed(Object object,
+                             InternalWorkingMemory workingMemoiry) {
+        return this.evaluator.evaluate( object, field );
+    }
 
+    public boolean isAllowed(ContextEntry context) {
+        throw  new UnsupportedOperationException("cannot call isAllowed(ContextEntry context)");
+    }    
+
     /**
      * Literal constraints cannot have required declarations, so always return an empty array.
      * @return
@@ -60,15 +70,10 @@
         return LiteralRestriction.requiredDeclarations;
     }
 
-    public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return this.evaluator.evaluate( object,
-                                        this.field.getValue() );
-    }
 
+
     public String toString() {
-        return "[LiteralRestriction evaluator=" + this.evaluator + " value=" + this.field.getValue() + "]";
+        return "[LiteralRestriction evaluator=" + this.evaluator + " value=" + this.field + "]";
     }
 
     public int hashCode() {

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MultiRestrictionFieldConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -1,14 +1,14 @@
 package org.drools.rule;
 
 import org.drools.WorkingMemory;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;
 
 public class MultiRestrictionFieldConstraint
     implements
-    FieldConstraint {
+    AlphaNodeFieldConstraint {
 
     /**
      * 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -18,13 +18,13 @@
 
 import org.drools.RuntimeDroolsException;
 import org.drools.WorkingMemory;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.PredicateExpression;
 import org.drools.spi.Tuple;
 
 public class PredicateConstraint
     implements
-    FieldConstraint {
+    AlphaNodeFieldConstraint {
 
     /**
      * 

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -18,14 +18,14 @@
 
 import org.drools.WorkingMemory;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.ReturnValueExpression;
 import org.drools.spi.Tuple;
 
 public class ReturnValueConstraint
     implements
-    FieldConstraint {
+    AlphaNodeFieldConstraint {
 
     /**
      * 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -17,14 +17,18 @@
  */
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
+import org.drools.reteoo.ReteTuple;
+import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.Tuple;
+import org.drools.util.BaseEntry;
 
 public class VariableConstraint
     implements
-    FieldConstraint {
+    BetaNodeFieldConstraint {
 
     /**
      * 
@@ -59,18 +63,18 @@
     public Evaluator getEvaluator() {
         return this.restriction.getEvaluator();
     }
-
-    public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return this.restriction.isAllowed( this.fieldExtractor.getValue( object ),
-                                           tuple,
-                                           workingMemory );
+    
+    public boolean isAllowed(ContextEntry context) {
+        return this.restriction.isAllowed( context );        
     }
 
     public String toString() {
         return "[VariableConstraint fieldExtractor=" + this.fieldExtractor + " declaration=" + getRequiredDeclarations() + "]";
     }
+    
+    public ContextEntry getContextEntry() {
+        return new  VariableContextEntry(this.fieldExtractor,  this.restriction.getRequiredDeclarations()[0] );
+    }
 
     public int hashCode() {
         final int PRIME = 31;
@@ -93,5 +97,39 @@
 
         return this.fieldExtractor.equals( other.fieldExtractor ) && this.restriction.equals( other.restriction );
     }
+    
+    
+    public static class VariableContextEntry implements ContextEntry {
+        public Object left;
+        public Object right;        
+        
+        private FieldExtractor extractor;
+        private Declaration declaration;
+        private ContextEntry entry;
+        
+        
+        public VariableContextEntry(FieldExtractor extractor, Declaration declaration) {
+            this.extractor = extractor;
+            this.declaration = declaration;
+        }
+        
+        public ContextEntry getNext() {
+            return this.entry;
+        }
+        
+        public void setNext(ContextEntry  entry) {
+            this.entry = entry;
+        }
+        
+        public void updateFromFactHandle(InternalFactHandle handle) {
+            this.left = this.extractor.getValue( handle.getObject() );
+            
+        }
+        
+        public void updateFromTuple(ReteTuple tuple) {
+            this.right =  this.declaration.getValue( tuple.get( this.declaration ).getObject() );            
+        }                
+    }
+    
 
 }
\ No newline at end of file

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -19,6 +19,8 @@
 import java.util.Arrays;
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableConstraint.VariableContextEntry;
 import org.drools.spi.Evaluator;
 import org.drools.spi.Restriction;
 import org.drools.spi.Tuple;
@@ -52,12 +54,11 @@
     public Evaluator getEvaluator() {
         return this.evaluator;
     }
-
-    public boolean isAllowed(final Object object,
-                             final Tuple tuple,
-                             final WorkingMemory workingMemory) {
-        return this.evaluator.evaluate( object,
-                                        this.declaration.getValue( tuple.get( this.declaration ).getObject() ) );
+    
+    public boolean isAllowed(ContextEntry context) {
+        VariableContextEntry variableContext = ( VariableContextEntry ) context;
+        return this.evaluator.evaluate( variableContext.left,
+                                        variableContext.right );        
     }
 
     public String toString() {
@@ -91,4 +92,8 @@
                                                                                                                           other.requiredDeclarations );
     }
 
+    public boolean isAllowed(Object object,
+                             InternalWorkingMemory workingMemoiry) {
+        throw new UnsupportedOperationException("does not support method  call  isAllowed(Object object, InternalWorkingMemory workingMemoiry)" );
+    }
 }
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AlphaNodeFieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AlphaNodeFieldConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/AlphaNodeFieldConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -0,0 +1,30 @@
+package org.drools.spi;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.ContextEntry;
+import org.drools.rule.Declaration;
+
+public interface AlphaNodeFieldConstraint
+    extends
+    Constraint {
+    
+    public boolean isAllowed(Object object,
+                             InternalWorkingMemory workingMemory);
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java (from rev 6684, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java	2006-10-08 12:09:35 UTC (rev 6684)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/BetaNodeFieldConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -0,0 +1,31 @@
+package org.drools.spi;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.WorkingMemory;
+import org.drools.rule.ContextEntry;
+import org.drools.rule.Declaration;
+
+public interface BetaNodeFieldConstraint
+    extends
+    Constraint {
+    
+    public boolean isAllowed(ContextEntry context);
+    
+    public ContextEntry getContextEntry();
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -1,5 +1,8 @@
 package org.drools.spi;
 
+import org.drools.rule.ContextEntry;
+import org.drools.rule.Declaration;
+
 /*
  * Copyright 2005 JBoss Inc
  * 
@@ -19,5 +22,6 @@
 public interface Constraint
     extends
     RuleComponent {
-
+    
+    Declaration[] getRequiredDeclarations();
 }
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FieldConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -1,30 +0,0 @@
-package org.drools.spi;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import org.drools.WorkingMemory;
-import org.drools.rule.Declaration;
-
-public interface FieldConstraint
-    extends
-    Constraint {
-    public boolean isAllowed(Object object,
-                             Tuple tuple,
-                             WorkingMemory workingMemory);
-
-    Declaration[] getRequiredDeclarations();
-}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Restriction.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -3,12 +3,14 @@
 import java.io.Serializable;
 
 import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.ContextEntry;
 import org.drools.rule.Declaration;
 
 public interface Restriction extends Serializable {
     Declaration[] getRequiredDeclarations();
     
-    public boolean isAllowed(Object object,
-                             Tuple tuple,
-                             WorkingMemory workingMemory);
+    public boolean isAllowed(Object object, InternalWorkingMemory workingMemoiry);
+    
+    public boolean isAllowed(ContextEntry context);
 }

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/BaseMannersTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -48,10 +48,11 @@
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
 import org.drools.rule.VariableConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.KnowledgeHelper;
@@ -89,25 +90,32 @@
 
     protected void setUp() throws Exception {
         Class shadow = ShadowProxyFactory.getProxy( Context.class );
-        this.contextType = new ClassObjectType( Context.class, shadow );
+        this.contextType = new ClassObjectType( Context.class,
+                                                shadow );
 
         shadow = ShadowProxyFactory.getProxy( Guest.class );
-        this.guestType = new ClassObjectType( Guest.class, shadow );
-        
+        this.guestType = new ClassObjectType( Guest.class,
+                                              shadow );
+
         shadow = ShadowProxyFactory.getProxy( Seating.class );
-        this.seatingType = new ClassObjectType( Seating.class, shadow  );
+        this.seatingType = new ClassObjectType( Seating.class,
+                                                shadow );
 
         shadow = ShadowProxyFactory.getProxy( LastSeat.class );
-        this.lastSeatType = new ClassObjectType( LastSeat.class, shadow  );
+        this.lastSeatType = new ClassObjectType( LastSeat.class,
+                                                 shadow );
 
         shadow = ShadowProxyFactory.getProxy( Count.class );
-        this.countType = new ClassObjectType( Count.class, shadow  );
+        this.countType = new ClassObjectType( Count.class,
+                                              shadow );
 
         shadow = ShadowProxyFactory.getProxy( Path.class );
-        this.pathType = new ClassObjectType( Path.class, shadow  );
+        this.pathType = new ClassObjectType( Path.class,
+                                             shadow );
 
         shadow = ShadowProxyFactory.getProxy( Chosen.class );
-        this.chosenType = new ClassObjectType( Chosen.class, shadow  );
+        this.chosenType = new ClassObjectType( Chosen.class,
+                                               shadow );
 
         this.integerEqualEvaluator = ValueType.INTEGER_TYPE.getEvaluator( Operator.EQUAL );
         this.integerNotEqualEvaluator = ValueType.INTEGER_TYPE.getEvaluator( Operator.NOT_EQUAL );
@@ -201,7 +209,7 @@
 
             public void evaluate(KnowledgeHelper drools,
                                  WorkingMemory workingMemory) throws ConsequenceException {
-                try {                    
+                try {
                     Rule rule = drools.getRule();
                     Tuple tuple = drools.getTuple();
 
@@ -465,9 +473,9 @@
             public void evaluate(KnowledgeHelper drools,
                                  WorkingMemory workingMemory) throws ConsequenceException {
                 try {
-//                    MemoryVisitor visitor = new MemoryVisitor( ( InternalWorkingMemory ) workingMemory );
-//                    visitor.visit( workingMemory.getRuleBase() );
-                    
+                    //                    MemoryVisitor visitor = new MemoryVisitor( ( InternalWorkingMemory ) workingMemory );
+                    //                    visitor.visit( workingMemory.getRuleBase() );
+
                     Rule rule = drools.getRule();
                     Tuple tuple = drools.getTuple();
 
@@ -744,9 +752,9 @@
 
                     seating.setPathDone( true );
 
-//                    if ( seating.getId() == 6 ) {
-//                        System.err.println( "pause" );
-//                    }
+                    //                    if ( seating.getId() == 6 ) {
+                    //                        System.err.println( "pause" );
+                    //                    }
                     drools.modifyObject( tuple.get( seatingDeclaration ),
                                          seating );
 
@@ -1098,10 +1106,10 @@
         return -1;
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
-                                                 final String fieldName,
-                                                 final Object fieldValue,
-                                                 final Evaluator evaluator) throws IntrospectionException {
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
+                                                          final String fieldName,
+                                                          final Object fieldValue,
+                                                          final Evaluator evaluator) throws IntrospectionException {
         final Class clazz = ((ClassObjectType) column.getObjectType()).getClassType();
 
         final FieldExtractor extractor = new ClassFieldExtractor( clazz,
@@ -1126,17 +1134,17 @@
                                extractor );
     }
 
-    private FieldConstraint getBoundVariableConstraint(final Column column,
-                                                       final String fieldName,
-                                                       final Declaration declaration,
-                                                       final Evaluator evaluator) throws IntrospectionException {
+    private BetaNodeFieldConstraint getBoundVariableConstraint(final Column column,
+                                                                final String fieldName,
+                                                                final Declaration declaration,
+                                                                final Evaluator evaluator) throws IntrospectionException {
         final Class clazz = ((ClassObjectType) column.getObjectType()).getClassType();
 
         final FieldExtractor extractor = new ClassFieldExtractor( clazz,
                                                                   fieldName );
 
         return new VariableConstraint( extractor,
-                                            declaration,
-                                            evaluator );
+                                       declaration,
+                                       evaluator );
     }
 }
\ No newline at end of file

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/manners/ReteooMannersTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -24,6 +24,8 @@
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
 import org.drools.common.InternalWorkingMemory;
+import org.drools.event.AfterActivationFiredEvent;
+import org.drools.event.DefaultAgendaEventListener;
 import org.drools.reteoo.MemoryVisitor;
 
 public class ReteooMannersTest extends BaseMannersTest {
@@ -34,28 +36,36 @@
         ruleBase.addPackage( this.pkg );
         final WorkingMemory workingMemory = ruleBase.newWorkingMemory();        
 
-        //        workingMemory.addEventListener( new DefaultAgendaEventListener() {
-        //           public void activationCreated(ActivationCreatedEvent event) {
-        //                super.activationCreated( event );
-        //                System.out.println( event );
-        //            }
-        //           
-        //           public void activationCancelled(ActivationCancelledEvent event) {
-        //               super.activationCancelled( event );
-        //               System.out.println( event );
-        //           }
-        //           
-        //           public void beforeActivationFired(BeforeActivationFiredEvent event) {
-        //               super.beforeActivationFired( event );
-        //               System.out.println( event );
-        //           }           
-        //           
-        //           public void afterActivationFired(AfterActivationFiredEvent event) {
-        //               super.afterActivationFired( event );
-        //               System.out.println( event );
-        //           }
-        //           
-        //        });
+        DefaultAgendaEventListener listener =new DefaultAgendaEventListener() {
+            private int counter  = 0;
+//           public void activationCreated(ActivationCreatedEvent event) {
+//                super.activationCreated( event );
+//                System.out.println( event );
+//            }
+//           
+//           public void activationCancelled(ActivationCancelledEvent event) {
+//               super.activationCancelled( event );
+//               System.out.println( event );
+//           }
+//           
+//           public void beforeActivationFired(BeforeActivationFiredEvent event) {
+//               super.beforeActivationFired( event );
+//               System.out.println( event );
+//           }           
+           
+           public void afterActivationFired(AfterActivationFiredEvent event) {
+               counter++;
+               //super.afterActivationFired( event );
+               //System.out.println( event );
+           }
+           
+           public String toString()  {
+               return  "fired :  " + this.counter;
+           }
+           
+        };
+        
+        //workingMemory.addEventListener(listener );
 
         final InputStream is = getClass().getResourceAsStream( "/manners128.dat" );
         final List list = getInputObjects( is );
@@ -70,6 +80,13 @@
         workingMemory.fireAllRules();
         System.err.println( System.currentTimeMillis() - start );
         
+        //System.out.println( listener );
+        
+//        while  (1==1){
+//            Thread.yield();
+//            Thread.sleep( 2000 );
+//        }           
+        
         MemoryVisitor visitor = new MemoryVisitor( ( InternalWorkingMemory ) workingMemory );
         visitor.visit( ruleBase );               
 

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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/examples/waltz/BaseWaltzTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -45,7 +45,7 @@
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.MockField;
@@ -3741,7 +3741,7 @@
         return -1;
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator evaluator) throws IntrospectionException {
@@ -3769,7 +3769,7 @@
                                extractor );
     }
 
-    private FieldConstraint getBoundVariableConstraint(final Column column,
+    private AlphaNodeFieldConstraint getBoundVariableConstraint(final Column column,
                                                        final String fieldName,
                                                        final Declaration declaration,
                                                        final Evaluator evaluator) throws IntrospectionException {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/ColumnConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/ColumnConstraintsTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/ColumnConstraintsTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -32,7 +32,7 @@
 import org.drools.rule.Column;
 import org.drools.rule.LiteralConstraint;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.MockField;
@@ -63,7 +63,7 @@
         final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.LEAPS );
         final ArrayList alphas = new ArrayList();
         ColumnConstraints columnConstraints;
-        FieldConstraint constraint;
+        AlphaNodeFieldConstraint constraint;
         final ClassObjectType contextType = new ClassObjectType( Context.class );
         final Column testColumn = new Column( 0,
                                               contextType,
@@ -104,7 +104,7 @@
         final RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.LEAPS );
         final ArrayList alphas = new ArrayList();
         ColumnConstraints columnConstraints;
-        FieldConstraint constraint;
+        AlphaNodeFieldConstraint constraint;
         final ClassObjectType contextType = new ClassObjectType( Context.class );
         final Column testColumn = new Column( 0,
                                               contextType,
@@ -134,7 +134,7 @@
 
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator evaluator) throws IntrospectionException {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/HashedTableComponentTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/HashedTableComponentTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/HashedTableComponentTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -50,7 +50,7 @@
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.KnowledgeHelper;
@@ -343,7 +343,7 @@
         return -1;
     }
 
-    private FieldConstraint getLiteralConstraint( final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint( final Column column,
                                                   final String fieldName,
                                                   final Object fieldValue,
                                                   final Evaluator evaluator )
@@ -368,7 +368,7 @@
         column.addDeclaration( identifier, extractor );
     }
 
-    private FieldConstraint getBoundVariableConstraint( final Column column,
+    private AlphaNodeFieldConstraint getBoundVariableConstraint( final Column column,
                                                         final String fieldName,
                                                         final Declaration declaration,
                                                         final Evaluator evaluator )

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/LeapsRuleBaseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/LeapsRuleBaseTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/LeapsRuleBaseTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -34,7 +34,7 @@
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.KnowledgeHelper;
@@ -382,7 +382,7 @@
         assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator evaluator) {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryResultsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryResultsTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryResultsTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -33,7 +33,7 @@
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.Query;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.MockField;
@@ -185,7 +185,7 @@
 
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator evaluator) {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/leaps/QueryTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -35,7 +35,7 @@
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.KnowledgeHelper;
@@ -154,7 +154,7 @@
         assertTrue( this.handlesForRules.contains( this.handle2Rule2 ) );
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator 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-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -22,7 +22,7 @@
 import org.drools.rule.LiteralConstraint;
 import org.drools.rule.VariableConstraint;
 import org.drools.spi.DataProvider;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldValue;
 import org.drools.spi.MockField;
 import org.drools.spi.PropagationContext;
@@ -57,7 +57,7 @@
         FromNode from = new FromNode( 3,
                                       dataProvider,
                                       null,
-                                      new FieldConstraint[]{constraint},
+                                      new AlphaNodeFieldConstraint[]{constraint},
                                       null );
         MockTupleSink sink = new MockTupleSink( 5 );
         from.addTupleSink( sink );
@@ -156,7 +156,7 @@
         FromNode from = new FromNode( 3,
                                       dataProvider,
                                       null,
-                                      new FieldConstraint[]{variableConstraint},
+                                      new AlphaNodeFieldConstraint[]{variableConstraint},
                                       null );
         MockTupleSink sink = new MockTupleSink( 5 );
         from.addTupleSink( sink );
@@ -245,7 +245,7 @@
         FromNode from = new FromNode( 3,
                                       dataProvider,
                                       null,
-                                      new FieldConstraint[]{constraint},
+                                      new AlphaNodeFieldConstraint[]{constraint},
                                       null );
         MockTupleSink sink = new MockTupleSink( 5 );
         from.addTupleSink( sink );
@@ -317,7 +317,7 @@
         FromNode from = new FromNode( 3,
                                       dataProvider,
                                       null,
-                                      new FieldConstraint[]{constraint},
+                                      new AlphaNodeFieldConstraint[]{constraint},
                                       null );
         MockTupleSink sink = new MockTupleSink( 5 );
         from.addTupleSink( sink );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -27,7 +27,7 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.PropagationContextImpl;
 import org.drools.rule.Rule;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.MockConstraint;
 import org.drools.spi.PropagationContext;
 import org.drools.spi.Tuple;
@@ -64,7 +64,7 @@
         this.node = new JoinNode( 15,
                                   this.tupleSource,
                                   this.objectSource,
-                                  new BetaNodeConstraints( new FieldConstraint[]{this.constraint} ) );
+                                  new BetaNodeConstraints( new AlphaNodeFieldConstraint[]{this.constraint} ) );
 
         this.node.addTupleSink( this.sink );
 

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/OrTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/OrTest.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/rule/OrTest.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -35,7 +35,7 @@
 import org.drools.spi.Consequence;
 import org.drools.spi.ConsequenceException;
 import org.drools.spi.Evaluator;
-import org.drools.spi.FieldConstraint;
+import org.drools.spi.AlphaNodeFieldConstraint;
 import org.drools.spi.FieldExtractor;
 import org.drools.spi.FieldValue;
 import org.drools.spi.KnowledgeHelper;
@@ -378,7 +378,7 @@
                                extractor );
     }
 
-    private FieldConstraint getLiteralConstraint(final Column column,
+    private AlphaNodeFieldConstraint getLiteralConstraint(final Column column,
                                                  final String fieldName,
                                                  final Object fieldValue,
                                                  final Evaluator evaluator) throws IntrospectionException {
@@ -397,7 +397,7 @@
                                       field );
     }
 
-    private FieldConstraint getBoundVariableConstraint(final Column column,
+    private AlphaNodeFieldConstraint getBoundVariableConstraint(final Column column,
                                                        final String fieldName,
                                                        final Declaration declaration,
                                                        final Evaluator evaluator) throws IntrospectionException {

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/spi/MockConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/spi/MockConstraint.java	2006-10-09 23:10:54 UTC (rev 6715)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/spi/MockConstraint.java	2006-10-10 10:13:27 UTC (rev 6716)
@@ -21,7 +21,7 @@
 
 public class MockConstraint
     implements
-    FieldConstraint {
+    AlphaNodeFieldConstraint {
 
     /**
      * 




More information about the jboss-svn-commits mailing list