[jboss-svn-commits] JBL Code SVN: r14956 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 9 00:04:25 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-09-09 00:04:25 -0400 (Sun, 09 Sep 2007)
New Revision: 14956

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.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/EvalConditionNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.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/ObjectSink.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
Log:
JBRULES-1153 Accumulate/Collect can't be used in queries
-Node memory configuration is a bit better now, slowly gettier happier with the design. BaseNode no longer controls memory, instead ObjectSink and TupleSink have setter and getter methods for the node's memory.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BaseNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -28,8 +28,6 @@
     NetworkNode {
     protected final int id;
 
-    protected boolean   hasMemory   = false;
-
     protected int       sharedCount = 0;
 
     /**
@@ -51,24 +49,6 @@
     }
 
     /**
-     * Specifies with the node has any memory.
-     * 
-     * @param hasMemory
-     */
-    protected void setHasMemory(final boolean hasMemory) {
-        this.hasMemory = hasMemory;
-    }
-
-    /**
-     * 
-     * Indicates whether the node has any memory.
-     * @return
-     */
-    public boolean hasMemory() {
-        return this.hasMemory;
-    }
-
-    /**
      * Attaches the node into the network. Usually to the parent <code>ObjectSource</code> or <code>TupleSource</code>
      */
     public abstract void attach();

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -69,7 +69,7 @@
         this.resultConstraints = resultConstraints;
         this.accumulate = accumulate;
         this.unwrapRightObject = unwrapRightObject;
-        this.hasLeftMemory = context.hasLeftMemory();
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
     }
 
     /**
@@ -99,7 +99,7 @@
 
         AccumulateResult accresult = new AccumulateResult();
 
-        if ( this.hasLeftMemory ) {
+        if ( this.tupleMemoryEnabled ) {
             memory.betaMemory.getTupleMemory().add( leftTuple );
             memory.betaMemory.getCreatedHandles().put( leftTuple,
                                             accresult,
@@ -210,7 +210,7 @@
         final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
         memory.betaMemory.getFactHandleMemory().add( handle );
 
-        if ( ! this.hasLeftMemory ) {
+        if ( ! this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
             return;
         }

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -56,9 +56,11 @@
 
     private ObjectSinkNode                 previousObjectSinkNode;
     private ObjectSinkNode                 nextObjectSinkNode;
-    
-    private boolean                        memoryAllowed;
 
+    private boolean                        objectMemoryEnabled;
+
+    private boolean                        objectMemoryAllowed;
+
     /**
      * Construct an <code>AlphaNode</code> with a unique id using the provided
      * <code>FieldConstraint</code> and the given <code>ObjectSource</code>.
@@ -79,8 +81,13 @@
                objectSource,
                context.getRuleBase().getConfiguration().getAlphaNodeHashingThreshold() );
         this.constraint = constraint;
-        setHasMemory( context.getRuleBase().getConfiguration().isAlphaMemory() );
-        this.memoryAllowed = context.isAlphaMemoryAllowed();
+        this.objectMemoryAllowed = context.isAlphaMemoryAllowed();
+        if ( this.objectMemoryAllowed ) {
+            this.objectMemoryEnabled = context.getRuleBase().getConfiguration().isAlphaMemory();
+        } else {
+            this.objectMemoryEnabled = false;
+        }
+
     }
 
     /**
@@ -106,8 +113,8 @@
 
         // we are attaching this node with existing working memories
         // indicating that we are in a dynamic environment, that might benefit from alpha node memory, if allowed
-        if ( this.memoryAllowed ) {
-            setHasMemory( true );
+        if ( this.objectMemoryAllowed ) {
+            setObjectMemoryEnabled( true );
         }
         for ( int i = 0, length = workingMemories.length; i < length; i++ ) {
             final InternalWorkingMemory workingMemory = workingMemories[i];
@@ -126,12 +133,12 @@
                              final InternalWorkingMemory workingMemory) throws FactException {
         if ( this.constraint.isAllowed( handle.getObject(),
                                         workingMemory ) ) {
-            if ( hasMemory()  && !workingMemory.isSequential() ) {
+            if ( isObjectMemoryEnabled() ) {
                 final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
                 memory.add( handle,
                             false );
             }
-            
+
             this.sink.propagateAssertObject( handle,
                                              context,
                                              workingMemory );
@@ -142,7 +149,7 @@
                               final PropagationContext context,
                               final InternalWorkingMemory workingMemory) {
         boolean propagate = true;
-        if ( hasMemory() ) {
+        if ( isObjectMemoryEnabled() ) {
             final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
             propagate = memory.remove( handle );
         } else {
@@ -162,7 +169,7 @@
                            final InternalWorkingMemory workingMemory) {
         FactHashTable memory = null;
 
-        if ( !hasMemory() ) {
+        if ( !isObjectMemoryEnabled() ) {
             // get the objects from the parent
             this.objectSource.updateSink( sink,
                                           context,
@@ -194,24 +201,32 @@
         this.objectSource.remove( this,
                                   workingMemories );
     }
-    
-    public void setMemoryAllowed(boolean memoryAllowed) {
-        this.memoryAllowed = memoryAllowed;
+
+    public void setObjectMemoryAllowed(boolean objectMemoryAllowed) {
+        this.objectMemoryAllowed = objectMemoryAllowed;
     }
 
+    public boolean isObjectMemoryEnabled() {
+        return this.objectMemoryEnabled;
+    }
+
+    public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+        this.objectMemoryEnabled = objectMemoryEnabled;
+    }
+
     /**
      * Creates a HashSet for the AlphaNode's memory.
      */
     public Object createMemory(final RuleBaseConfiguration config) {
         return new FactHashTable();
     }
-    
+
     /** 
      * @inheritDoc
      */
     protected void addObjectSink(final ObjectSink objectSink) {
         super.addObjectSink( objectSink );
-    }    
+    }
 
     public String toString() {
         return "[AlphaNode(" + this.id + ") constraint=" + this.constraint + "]";

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -66,7 +66,8 @@
     private ObjectSinkNode          previousObjectSinkNode;
     private ObjectSinkNode          nextObjectSinkNode;
     
-    protected boolean hasLeftMemory = true;
+    protected boolean               objectMemory = true; // hard coded to true
+    protected boolean               tupleMemoryEnabled;
 
     // ------------------------------------------------------------
     // Constructors
@@ -85,7 +86,6 @@
              final ObjectSource rightInput,
              final BetaConstraints constraints) {
         super( id );
-        super.setHasMemory( true );
         this.leftInput = leftInput;
         this.rightInput = rightInput;
         this.constraints = constraints;
@@ -175,10 +175,22 @@
 
     }
 
-    //public abstract TupleSink getTupleSink();
+    public boolean isObjectMemoryEnabled() {
+        return objectMemory;
+    }
 
-    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+    public void setObjectMemoryEnabled(boolean objectMemory) {
+        this.objectMemory = objectMemory;
+    }
+    
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
 
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }       
+
     public String toString() {
         return "";
     }
@@ -209,7 +221,7 @@
 
         final BetaNode other = (BetaNode) object;
 
-        return this.getClass() == other.getClass() && this.hasLeftMemory == other.hasLeftMemory && this.leftInput.equals( other.leftInput ) && this.rightInput.equals( other.rightInput ) && this.constraints.equals( other.constraints );
+        return this.getClass() == other.getClass() && this.leftInput.equals( other.leftInput ) && this.rightInput.equals( other.rightInput ) && this.constraints.equals( other.constraints );
     }
 
     /**

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -84,7 +84,7 @@
         this.resultConstraints = resultConstraints;
         this.collect = collect;
         this.unwrapRightObject = unwrapRight;
-        this.hasLeftMemory = context.hasLeftMemory();
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
     }
 
     /**
@@ -113,7 +113,7 @@
         colresult.propagated = false;
         
         // do not add tuple and result to the memory in sequential mode
-        if ( this.hasLeftMemory ) {
+        if ( this.tupleMemoryEnabled ) {
             memory.getTupleMemory().add( leftTuple );
             memory.getCreatedHandles().put( leftTuple,
                                             colresult,
@@ -198,7 +198,7 @@
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getFactHandleMemory().add( handle );
         
-        if ( !this.hasLeftMemory ) {
+        if ( !this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
             return;
         }        

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EvalConditionNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -21,6 +21,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
 import org.drools.rule.EvalCondition;
 import org.drools.spi.PropagationContext;
 import org.drools.util.Iterator;
@@ -59,6 +60,8 @@
 
     /** The source of incoming <code>Tuples</code>. */
     private final TupleSource   tupleSource;
+    
+    protected boolean          tupleMemoryEnabled;        
 
     private TupleSinkNode       previousTupleSinkNode;
     private TupleSinkNode       nextTupleSinkNode;
@@ -78,11 +81,12 @@
      */
     public EvalConditionNode(final int id,
                              final TupleSource tupleSource,
-                             final EvalCondition eval) {
+                             final EvalCondition eval,
+                             final BuildContext context) {
         super( id );
         this.condition = eval;
         this.tupleSource = tupleSource;
-        this.hasMemory = true;
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
     }
 
     /**
@@ -142,7 +146,7 @@
                                                           workingMemory );
 
         if ( allowed ) {
-            if ( !workingMemory.isSequential() ) {
+            if ( this.tupleMemoryEnabled ) {
                 final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( this );
                 memory.add( tuple );
             }
@@ -230,7 +234,15 @@
                                  workingMemories );
 
     }
+    
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
 
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }      
+
     /**
      * Returns the next node
      * @return

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -72,7 +72,7 @@
                leftInput,
                rightInput,
                joinNodeBinder );
-        this.hasLeftMemory = context.hasLeftMemory();        
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();        
     }
 
     /**
@@ -92,7 +92,7 @@
                             final InternalWorkingMemory workingMemory) {
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         
-        if ( this.hasLeftMemory ) {
+        if ( this.tupleMemoryEnabled ) {
             memory.getTupleMemory().add( leftTuple );
         }
 
@@ -134,7 +134,7 @@
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getFactHandleMemory().add( handle );
         
-        if ( !this.hasLeftMemory ) {
+        if ( !this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
             return;
         }          

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -32,6 +32,8 @@
 
     private TupleSinkNode              previousTupleSinkNode;
     private TupleSinkNode              nextTupleSinkNode;
+    
+    protected boolean                 tupleMemoryEnabled;      
 
     public FromNode(final int id,
                     final DataProvider dataProvider,
@@ -43,6 +45,7 @@
         this.tupleSource = tupleSource;
         this.alphaConstraints = constraints;
         this.betaConstraints = (binder == null) ? EmptyBetaConstraints.getInstance() : binder;
+        this.tupleMemoryEnabled = false;
     }
 
     /**
@@ -181,7 +184,15 @@
         return new BetaMemory( new TupleHashTable(),
                                null );
     }
+    
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
 
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }    
+
     /**
      * Returns the next node
      * @return

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -68,7 +68,7 @@
                leftInput,
                rightInput,
                binder );
-        this.hasLeftMemory = context.hasLeftMemory();
+        tupleMemoryEnabled = context.isTupleMemoryEnabled();
     }
 
     /**
@@ -94,7 +94,7 @@
                             final InternalWorkingMemory workingMemory) {
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         
-        if ( this.hasLeftMemory ) {
+        if ( this.tupleMemoryEnabled ) {
             memory.getTupleMemory().add( leftTuple );
         }
 
@@ -136,7 +136,7 @@
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
 
         memory.getFactHandleMemory().add( handle );
-        if ( ! this.hasLeftMemory ) {
+        if ( ! this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
             return;
         }

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -22,6 +22,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
 import org.drools.spi.PropagationContext;
 import org.drools.util.FactEntry;
 import org.drools.util.FactHashTable;
@@ -51,6 +52,8 @@
 
     private ObjectSinkNode     previousObjectSinkNode;
     private ObjectSinkNode     nextObjectSinkNode;
+    
+    private boolean           objectMemoryEnabled;    
 
     /**
      * Constructus a LeftInputAdapterNode with a unique id that receives <code>FactHandle</code> from a 
@@ -65,11 +68,12 @@
      *      a predicate is used in the first pattern, for instance
      */
     public LeftInputAdapterNode(final int id,
-                                final ObjectSource source) {
+                                final ObjectSource source,
+                                final BuildContext context) {
         super( id );
         this.objectSource = source;
         //this.constraints = constraints;
-        setHasMemory( false );
+        setObjectMemoryEnabled( false );
     }
 
     /* (non-Javadoc)
@@ -114,7 +118,7 @@
                                                      context,
                                                      workingMemory );
 
-            if ( this.hasMemory ) {
+            if ( this.objectMemoryEnabled ) {
                 final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
                 memory.add( handle,
                             false );
@@ -139,7 +143,7 @@
                               final PropagationContext context,
                               final InternalWorkingMemory workingMemory) {
         boolean propagate = true;
-        if ( this.hasMemory ) {
+        if ( this.objectMemoryEnabled ) {
             final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
             propagate = memory.remove( handle );
         }
@@ -154,7 +158,7 @@
     public void updateSink(final TupleSink sink,
                            final PropagationContext context,
                            final InternalWorkingMemory workingMemory) {
-        if ( this.hasMemory ) {
+        if ( this.objectMemoryEnabled ) {
             // We have memory so iterate over all entries
             final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
             final Iterator it = memory.iterator();
@@ -186,7 +190,15 @@
         this.objectSource.remove( this,
                                   workingMemories );
     }    
+    
+    public boolean isObjectMemoryEnabled() {
+        return this.objectMemoryEnabled;
+    }
 
+    public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+        this.objectMemoryEnabled = objectMemoryEnabled;
+    }    
+
     /**
      * Returns the next node
      * @return
@@ -237,11 +249,8 @@
         }
 
         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 );
-        //        }
+
+        return this.objectSource.equals( other.objectSource );
     }
 
     public Object createMemory(final RuleBaseConfiguration config) {
@@ -283,6 +292,14 @@
                                   final InternalWorkingMemory workingMemory) {
             throw new UnsupportedOperationException( "ObjectSinkAdapter onlys supports assertObject method calls" );
         }
+        
+        public boolean isObjectMemoryEnabled() {
+            throw new UnsupportedOperationException("ObjectSinkAdapters have no Object memory");
+        }
+
+        public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+            throw new UnsupportedOperationException("ObjectSinkAdapters have no Object memory");
+        }        
     }
 
 }

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -69,7 +69,7 @@
                leftInput,
                rightInput,
                joinNodeBinder );
-        this.hasLeftMemory = context.hasLeftMemory();        
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();        
     }
 
     /**
@@ -89,7 +89,7 @@
                             final InternalWorkingMemory workingMemory) {
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         
-        if ( this.hasLeftMemory ) {
+        if ( this.tupleMemoryEnabled ) {
             memory.getTupleMemory().add( leftTuple );
         }
 
@@ -131,7 +131,7 @@
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getFactHandleMemory().add( handle );
         
-        if ( !this.hasLeftMemory ) {
+        if ( !this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
             return;
         }        

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSink.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -61,4 +61,8 @@
     void retractObject(InternalFactHandle handle,
                        PropagationContext context,
                        InternalWorkingMemory workingMemory);   
+    
+    public boolean isObjectMemoryEnabled();
+
+    public void setObjectMemoryEnabled(boolean objectMemoryOn);    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -134,5 +134,4 @@
     public ObjectSinkPropagator getSinkPropagator() {
         return this.sink;
     }
-
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -77,12 +77,10 @@
     /** The parent Rete node */
     private final Rete        rete;
 
-    protected boolean         skipOnModify     = false;
+    private boolean           skipOnModify     = false;
 
-    // ------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------
-    
+    private boolean           objectMemoryEnabled;
+
     /**
      * Construct given a semantic <code>ObjectType</code> and the provided
      * unique id. All <code>ObjectTypdeNode</code> have node memory.
@@ -100,13 +98,9 @@
                context.getRuleBase().getConfiguration().getAlphaNodeHashingThreshold() );
         this.rete = (Rete) this.objectSource;
         this.objectType = objectType;
-        setHasMemory( context.hasObjectTypeMemory() );
+        setObjectMemoryEnabled( context.isObjectTypeNodeMemoryEnabled() );
     }
 
-    // ------------------------------------------------------------
-    // Instance methods
-    // ------------------------------------------------------------
-
     /**
      * Retrieve the semantic <code>ObjectType</code> differentiator.
      * 
@@ -128,11 +122,11 @@
     public boolean matches(final Object object) {
         return this.objectType.matches( object );
     }
-    
+
     public boolean isAssignableFrom(final Object object) {
         return this.objectType.isAssignableFrom( object );
     }
-    
+
     /**
      * Propagate the <code>FactHandleimpl</code> through the <code>Rete</code> network. All
      * <code>FactHandleImpl</code> should be remembered in the node memory, so that later runtime rule attachmnents
@@ -153,7 +147,7 @@
             return;
         }
 
-        if ( !workingMemory.isSequential() ) {
+        if ( this.objectMemoryEnabled) {
             final FactHashTable memory = (FactHashTable) workingMemory.getNodeMemory( this );
             memory.add( handle,
                         false );
@@ -209,7 +203,7 @@
      */
     public void attach() {
         this.rete.addObjectSink( this );
-    }    
+    }
 
     public void attach(final InternalWorkingMemory[] workingMemories) {
         attach();
@@ -260,6 +254,14 @@
         return new FactHashTable();
     }
 
+    public boolean isObjectMemoryEnabled() {
+        return this.objectMemoryEnabled;
+    }
+
+    public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+        this.objectMemoryEnabled = objectMemoryEnabled;
+    }
+
     public String toString() {
         return "[ObjectTypeNode(" + this.id + ") objectType=" + this.objectType + "]";
     }
@@ -292,8 +294,6 @@
         super.addObjectSink( objectSink );
         this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
     }
-    
-    
 
     /**
      * @inheritDoc

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -52,6 +52,7 @@
     private final Rule         rule;
     private final GroupElement subrule;
     private final TupleSource  tupleSource;
+    private boolean          tupleMemoryEnabled;    
     
     private TupleSinkNode      previousTupleSinkNode;
     private TupleSinkNode      nextTupleSinkNode;    
@@ -76,6 +77,7 @@
         this.rule = rule;
         this.subrule = subrule;
         this.tupleSource = source;
+        this.tupleMemoryEnabled = false; //hard coded to false
     }
 
     // ------------------------------------------------------------
@@ -166,10 +168,17 @@
     }
 
     public Object createMemory(final RuleBaseConfiguration config) {
-        //return new QueryTerminalNodeMemory();
         return new LinkedList();
     }
 
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
+
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }
+    
     /**
      * @return the subrule
      */

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -324,7 +324,15 @@
         //            }
         //        }
     }
+    
+    public boolean isObjectMemoryEnabled() {
+        throw new UnsupportedOperationException("Rete has no Object memory");
+    }
 
+    public void setObjectMemoryEnabled(boolean objectMemoryEnabled) {
+        throw new UnsupportedOperationException("ORete has no Object memory");
+    }     
+
     public static interface ObjectTypeConf {
         public ObjectTypeNode[] getObjectTypeNodes();
 
@@ -359,13 +367,13 @@
                                                          ((ReteooRuleBase) ruleBase.getRete().getRuleBase()).getReteooBuilder().getIdGenerator() );
                 if ( context.getRuleBase().getConfiguration().isSequential() ) {
                     // We are in sequential mode, so no nodes should have memory
-                    context.setHasLeftMemory( false );
-                    context.setHasObjectTypeMemory( false );
-                    context.setHasTerminalNodeMemory( false );
+                    context.setTupleMemoryEnabled( false );
+                    context.setObjectTypeNodeMemoryEnabled( false );
+                    context.setTerminalNodeMemoryEnabled( false );
                 } else {
-                    context.setHasLeftMemory( true );
-                    context.setHasObjectTypeMemory( true );
-                    context.setHasTerminalNodeMemory( true );
+                    context.setTupleMemoryEnabled( true );
+                    context.setObjectTypeNodeMemoryEnabled( true );
+                    context.setTerminalNodeMemoryEnabled( true );
                 }
                 // there must exist an ObjectTypeNode for this concrete class                
                 this.concreteObjectTypeNode = PatternBuilder.attachObjectTypeNode( context,
@@ -431,18 +439,18 @@
                 BuildContext context = new BuildContext( ruleBase,
                                                          ((ReteooRuleBase) ruleBase.getRete().getRuleBase()).getReteooBuilder().getIdGenerator() );
                 if ( DroolsQuery.class == clazz ) {
-                    context.setHasLeftMemory( false );
-                    context.setHasObjectTypeMemory( false );
-                    context.setHasTerminalNodeMemory( false );
+                    context.setTupleMemoryEnabled( false );
+                    context.setObjectTypeNodeMemoryEnabled( false );
+                    context.setTerminalNodeMemoryEnabled( false );
                 } else if ( context.getRuleBase().getConfiguration().isSequential() ) {
                     // We are in sequential mode, so no nodes should have memory
-                    context.setHasLeftMemory( false );
-                    context.setHasObjectTypeMemory( false );
-                    context.setHasTerminalNodeMemory( false );
+                    context.setTupleMemoryEnabled( false );
+                    context.setObjectTypeNodeMemoryEnabled( false );
+                    context.setTerminalNodeMemoryEnabled( false );
                 } else {
-                    context.setHasLeftMemory( true );
-                    context.setHasObjectTypeMemory( true );
-                    context.setHasTerminalNodeMemory( true );
+                    context.setTupleMemoryEnabled( true );
+                    context.setObjectTypeNodeMemoryEnabled( true );
+                    context.setTerminalNodeMemoryEnabled( true );
                 }
                 // there must exist an ObjectTypeNode for this concrete class
                 this.concreteObjectTypeNode = PatternBuilder.attachObjectTypeNode( context,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -22,6 +22,7 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.NodeMemory;
 import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
 import org.drools.spi.PropagationContext;
 import org.drools.util.Iterator;
 import org.drools.util.ObjectHashMap;
@@ -45,6 +46,8 @@
     private static final long serialVersionUID = 400L;
 
     private final TupleSource tupleSource;
+    
+    protected boolean          tupleMemoryEnabled;      
 
     /**
      * Constructor specifying the unique id of the node in the Rete network, the position of the propagating <code>FactHandleImpl</code> in
@@ -56,10 +59,11 @@
      *      The <code>TupleSource</code> which propagates the received <code>ReteTuple</code>
      */
     public RightInputAdapterNode(final int id,
-                                 final TupleSource source) {
+                                 final TupleSource source,
+                                 final BuildContext context) {
         super( id );
         this.tupleSource = source;
-        this.setHasMemory( true );
+        this.tupleMemoryEnabled = context.isTupleMemoryEnabled();
     }
 
     /**
@@ -87,7 +91,7 @@
         // creating a dummy fact handle to wrap the tuple
         final InternalFactHandle handle = workingMemory.getFactHandleFactory().newFactHandle( tuple );
         
-        if ( !workingMemory.isSequential() ) {
+        if ( this.tupleMemoryEnabled ) {
             final ObjectHashMap memory = (ObjectHashMap) workingMemory.getNodeMemory( this );
             // add it to a memory mapping
             memory.put( tuple,
@@ -167,5 +171,13 @@
         this.tupleSource.remove( this,
                                  workingMemories );
     }
+    
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
 
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }      
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -79,6 +79,8 @@
 
     private TupleSinkNode      previousTupleSinkNode;
     private TupleSinkNode      nextTupleSinkNode;
+    
+    protected boolean          tupleMemoryEnabled;    
 
     // ------------------------------------------------------------
     // Constructors
@@ -101,7 +103,7 @@
         this.rule = rule;
         this.tupleSource = source;
         this.subrule = subrule;
-        this.hasMemory = buildContext.hasTerminalNodeMemory();
+        this.tupleMemoryEnabled = buildContext.isTerminalNodeMemoryEnabled();
     }
 
     // ------------------------------------------------------------
@@ -194,7 +196,7 @@
             agenda.scheduleItem( item );
             tuple.setActivation( item );
             
-            if ( this.hasMemory ) {
+            if ( this.tupleMemoryEnabled ) {
                 memory.getTupleMemory().add( tuple );
             }
 
@@ -235,7 +237,7 @@
                                                     this.rule,
                                                     this.subrule );
             
-            if ( this.hasMemory ) {
+            if ( this.tupleMemoryEnabled ) {
                 item.setSequenence( this.sequence );
             }
 
@@ -468,7 +470,15 @@
     public Object createMemory(final RuleBaseConfiguration config) {
         return new TerminalNodeMemory();
     }
+    
+    public boolean isTupleMemoryEnabled() {
+        return tupleMemoryEnabled;
+    }
 
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
+    }     
+
     /**
      * Returns the next node
      * @return

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSink.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -52,4 +52,8 @@
     void retractTuple(ReteTuple tuple,
                       PropagationContext context,
                       InternalWorkingMemory workingMemory);
+    
+    public boolean isTupleMemoryEnabled();
+
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled);       
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -112,6 +112,5 @@
 
     public abstract void updateSink(TupleSink sink,
                                     PropagationContext context,
-                                    InternalWorkingMemory workingMemory);
-
+                                    InternalWorkingMemory workingMemory);    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -73,7 +73,8 @@
             // attach right input adapter node to convert tuple source into an object source
             context.setObjectSource( (ObjectSource) utils.attachNode( context,
                                                                       new RightInputAdapterNode( context.getNextId(),
-                                                                                                 context.getTupleSource() ) ) );
+                                                                                                 context.getTupleSource(),
+                                                                                                 context ) ) );
 
             // restore tuple source from before the start of the sub network
             context.setTupleSource( tupleSource );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildContext.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -68,14 +68,14 @@
     // alpha constraints from the last pattern attached
     private List                      alphaConstraints;
     
-    private boolean                   hasLeftMemory;
+    private boolean                   tupleMemoryEnabled;
     
-    private boolean                   hasObjectTypeMemory;    
+    private boolean                   objectTypeNodeMemoryEnabled;    
     
-    private boolean                   hasTerminalNodeMemory;
+    private boolean                   terminalNodeMemoryEnabled;
     
     /** This one is slightly different as alphaMemory can be adaptive, only turning on for new rule attachments */
-    private boolean                   alphaMemoryAllowed;
+    private boolean                   alphaNodeMemoryAllowed;
 
     public BuildContext(final InternalRuleBase rulebase,
                         final ReteooBuilder.IdGenerator idGenerator) {
@@ -93,9 +93,9 @@
 
         this.currentPatternOffset = 0;
         
-        this.hasLeftMemory = true;
+        this.tupleMemoryEnabled = true;
         
-        this.hasObjectTypeMemory = true;
+        this.objectTypeNodeMemoryEnabled = true;
     }
 
     /**
@@ -297,36 +297,36 @@
         this.alphaConstraints = alphaConstraints;
     }
 
-    public boolean hasLeftMemory() {
-        return this.hasLeftMemory;
+    public boolean isTupleMemoryEnabled() {
+        return this.tupleMemoryEnabled;
     }
 
-    public void setHasLeftMemory(boolean hasLeftMemory) {
-        this.hasLeftMemory = hasLeftMemory;
+    public void setTupleMemoryEnabled(boolean hasLeftMemory) {
+        this.tupleMemoryEnabled = hasLeftMemory;
     }
 
-    public boolean hasObjectTypeMemory() {
-        return hasObjectTypeMemory;
+    public boolean isObjectTypeNodeMemoryEnabled() {
+        return objectTypeNodeMemoryEnabled;
     }
 
-    public void setHasObjectTypeMemory(boolean hasObjectTypeMemory) {
-        this.hasObjectTypeMemory = hasObjectTypeMemory;
+    public void setObjectTypeNodeMemoryEnabled(boolean hasObjectTypeMemory) {
+        this.objectTypeNodeMemoryEnabled = hasObjectTypeMemory;
     }
 
-    public boolean hasTerminalNodeMemory() {
-        return hasTerminalNodeMemory;
+    public boolean isTerminalNodeMemoryEnabled() {
+        return terminalNodeMemoryEnabled;
     }
 
-    public void setHasTerminalNodeMemory(boolean hasTerminalNodeMemory) {
-        this.hasTerminalNodeMemory = hasTerminalNodeMemory;
+    public void setTerminalNodeMemoryEnabled(boolean hasTerminalNodeMemory) {
+        this.terminalNodeMemoryEnabled = hasTerminalNodeMemory;
     }     
     
-    public void setAlphaMemoryAllowed(boolean alphaMemoryAllowed) {
-        this.alphaMemoryAllowed = alphaMemoryAllowed;
+    public void setAlphaNodeMemoryAllowed(boolean alphaMemoryAllowed) {
+        this.alphaNodeMemoryAllowed = alphaMemoryAllowed;
     }
     
     public boolean isAlphaMemoryAllowed() {
-        return this.alphaMemoryAllowed;
+        return this.alphaNodeMemoryAllowed;
     }
         
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -71,7 +71,8 @@
             // attach right input adapter node to convert tuple source into an object source
             context.setObjectSource( (ObjectSource) utils.attachNode( context,
                                                                       new RightInputAdapterNode( context.getNextId(),
-                                                                                                 context.getTupleSource() ) ) );
+                                                                                                 context.getTupleSource(),
+                                                                                                 context ) ) );
 
             // restore tuple source from before the start of the sub network
             context.setTupleSource( tupleSource );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/EvalBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -42,7 +42,8 @@
         context.setTupleSource( (TupleSource) utils.attachNode( context,
                                                                 new EvalConditionNode( context.getNextId(),
                                                                                        context.getTupleSource(),
-                                                                                       eval ) ) );
+                                                                                       eval,
+                                                                                       context ) ) );
 
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -119,7 +119,8 @@
                     // adapt it to a Tuple source
                     context.setTupleSource( (TupleSource) utils.attachNode( context,
                                                                             new LeftInputAdapterNode( context.getNextId(),
-                                                                                                      context.getObjectSource() ) ) );
+                                                                                                      context.getObjectSource(),
+                                                                                                      context ) ) );
 
                     context.setObjectSource( null );
                 }
@@ -218,7 +219,8 @@
                 // attach right input adapter node to convert tuple source into an object source
                 context.setObjectSource( (ObjectSource) utils.attachNode( context,
                                                                           new RightInputAdapterNode( context.getNextId(),
-                                                                                                     context.getTupleSource() ) ) );
+                                                                                                     context.getTupleSource(),
+                                                                                                     context ) ) );
 
                 // restore tuple source from before the start of the sub network
                 context.setTupleSource( tupleSource );
@@ -294,7 +296,8 @@
                 // attach right input adapter node to convert tuple source into an object source
                 context.setObjectSource( (ObjectSource) utils.attachNode( context,
                                                                           new RightInputAdapterNode( context.getNextId(),
-                                                                                                     context.getTupleSource() ) ) );
+                                                                                                     context.getTupleSource(),
+                                                                                                     context ) ) );
 
                 // restore tuple source from before the start of the sub network
                 context.setTupleSource( tupleSource );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/PatternBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -172,16 +172,16 @@
         // Drools Query ObjectTypeNode never has memory, but other ObjectTypeNode/AlphaNoesNodes may (if not in sequential), 
         //so need to preserve, so we can resotre after this node is added. LeftMemory  and Terminal remain the same once set.
         
-        boolean objectMemory = context.hasObjectTypeMemory(); 
+        boolean objectMemory = context.isObjectTypeNodeMemoryEnabled(); 
         boolean alphaMemory = context.isAlphaMemoryAllowed();
                 
         if ( pattern.getObjectType() instanceof ClassObjectType ) {
             // Is this the query node, if so we don't want any memory
             if ( DroolsQuery.class == ((ClassObjectType) pattern.getObjectType()).getClassType() ) {
-                context.setHasLeftMemory( false );
-                context.setHasObjectTypeMemory( false );
-                context.setHasTerminalNodeMemory( false );
-                context.setAlphaMemoryAllowed( false );
+                context.setTupleMemoryEnabled( false );
+                context.setObjectTypeNodeMemoryEnabled( false );
+                context.setTerminalNodeMemoryEnabled( false );
+                context.setAlphaNodeMemoryAllowed( false );
             }
         }
 
@@ -201,8 +201,8 @@
         }
         
         // now restore back to original values
-        context.setHasObjectTypeMemory( objectMemory );
-        context.setAlphaMemoryAllowed( alphaMemory );
+        context.setObjectTypeNodeMemoryEnabled( objectMemory );
+        context.setAlphaNodeMemoryAllowed( alphaMemory );
 
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -107,15 +107,15 @@
                                                            idGenerator );
            
             if ( rulebase.getConfiguration().isSequential() ) {
-                context.setHasLeftMemory( false );
-                context.setHasObjectTypeMemory( false );
-                context.setHasTerminalNodeMemory( false );
-                context.setAlphaMemoryAllowed( false );
+                context.setTupleMemoryEnabled( false );
+                context.setObjectTypeNodeMemoryEnabled( false );
+                context.setTerminalNodeMemoryEnabled( false );
+                context.setAlphaNodeMemoryAllowed( false );
             } else {
-                context.setHasLeftMemory( true );
-                context.setHasObjectTypeMemory( true );
-                context.setHasTerminalNodeMemory( true );
-                context.setAlphaMemoryAllowed( true );                
+                context.setTupleMemoryEnabled( true );
+                context.setObjectTypeNodeMemoryEnabled( true );
+                context.setTerminalNodeMemoryEnabled( true );
+                context.setAlphaNodeMemoryAllowed( true );                
             }
             
             // adds subrule

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -412,7 +412,7 @@
         ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
         BuildContext buildContext = new BuildContext( ruleBase,
                                                       ruleBase.getReteooBuilder().getIdGenerator() );
-        buildContext.setHasLeftMemory( false );
+        buildContext.setTupleMemoryEnabled( false );
         // overide the original node, so we an set the BuildContext
         this.node = new AccumulateNode( 15,
                                         this.tupleSource,

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -393,7 +393,7 @@
                                                       (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
         
         this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
-        this.node.hasLeftMemory = false;
+        this.node.setTupleMemoryEnabled( false );
 
         final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
         final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/EvalConditionNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -21,25 +21,30 @@
 import org.drools.RuleBaseFactory;
 import org.drools.common.DefaultFactHandle;
 import org.drools.common.PropagationContextImpl;
+import org.drools.reteoo.builder.BuildContext;
 import org.drools.spi.PropagationContext;
 import org.drools.util.TupleHashTable;
 
 public class EvalConditionNodeTest extends DroolsTestCase {
     private PropagationContext  context;
     private ReteooWorkingMemory workingMemory;
+    private ReteooRuleBase ruleBase;
+    private BuildContext buildContext;    
 
     public EvalConditionNodeTest(final String name) {
         super( name );
     }
 
     public void setUp() {
+        this.ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
+        this.buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+        
         this.context = new PropagationContextImpl( 0,
                                                    PropagationContext.ASSERTION,
                                                    null,
                                                    null );
 
-        this.workingMemory = new ReteooWorkingMemory( 1,
-                                                      (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
+        this.workingMemory = ( ReteooWorkingMemory ) this.ruleBase.newStatefulSession();
     }
 
     public void testAttach() throws Exception {
@@ -47,7 +52,8 @@
 
         final EvalConditionNode node = new EvalConditionNode( 18,
                                                               source,
-                                                              new MockEvalCondition( true ) );
+                                                              new MockEvalCondition( true ),
+                                                              buildContext );
 
         assertEquals( 18,
                       node.getId() );
@@ -70,7 +76,8 @@
 
         final EvalConditionNode node = new EvalConditionNode( 18,
                                                               source,
-                                                              new MockEvalCondition( true ) );
+                                                              new MockEvalCondition( true ),
+                                                              buildContext );
 
         final TupleHashTable memory = (TupleHashTable) workingMemory.getNodeMemory( node );
 
@@ -89,7 +96,8 @@
         // Create a test node that always returns false 
         final EvalConditionNode node = new EvalConditionNode( 1,
                                                               new MockTupleSource( 15 ),
-                                                              eval );
+                                                              eval,
+                                                              buildContext );
 
         final MockTupleSink sink = new MockTupleSink();
         node.addTupleSink( sink );
@@ -134,7 +142,8 @@
         // Create a test node that always returns false 
         final EvalConditionNode node = new EvalConditionNode( 1,
                                                               new MockTupleSource( 15 ),
-                                                              eval );
+                                                              eval,
+                                                              buildContext );
 
         final MockTupleSink sink = new MockTupleSink();
         node.addTupleSink( sink );
@@ -207,7 +216,8 @@
         // Create a test node that always returns false 
         final EvalConditionNode node = new EvalConditionNode( 1,
                                                               new MockTupleSource( 15 ),
-                                                              eval );
+                                                              eval,
+                                                              buildContext );
 
         final MockTupleSink sink = new MockTupleSink();
         node.addTupleSink( sink );
@@ -259,7 +269,8 @@
         /* Create a test node that always returns true */
         final EvalConditionNode node = new EvalConditionNode( 1,
                                                               new MockTupleSource( 15 ),
-                                                              new MockEvalCondition( true ) );
+                                                              new MockEvalCondition( true ),
+                                                              buildContext );
 
         // Add the first tuple sink and assert a tuple and object
         // The sink has no memory

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	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -192,8 +192,8 @@
 
         ReteooRuleBase ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
         BuildContext buildContext = new BuildContext( ruleBase, ruleBase.getReteooBuilder().getIdGenerator() );
-        buildContext.setHasLeftMemory( false );
-        buildContext.setHasObjectTypeMemory( false );
+        buildContext.setTupleMemoryEnabled( false );
+        buildContext.setObjectTypeNodeMemoryEnabled( false );
         
         // override setup, so its working in sequential mode
         this.node = new JoinNode( 15,

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/LeftInputAdapterNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -26,16 +26,25 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.common.PropagationContextImpl;
 import org.drools.reteoo.ReteooBuilder.IdGenerator;
+import org.drools.reteoo.builder.BuildContext;
 import org.drools.spi.PropagationContext;
 import org.drools.spi.Tuple;
 import org.drools.util.FactHashTable;
 
 public class LeftInputAdapterNodeTest extends DroolsTestCase {
-
+    private ReteooRuleBase ruleBase;
+    private BuildContext buildContext;
+    
+    protected void setUp() throws Exception {
+        this.ruleBase = ( ReteooRuleBase ) RuleBaseFactory.newRuleBase();
+        this.buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+    }
+    
     public void testLeftInputAdapterNode() {
         final MockObjectSource source = new MockObjectSource( 15 );
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 23,
-                                                                       source );
+                                                                       source,
+                                                                       buildContext );
         assertEquals( 23,
                       liaNode.getId() );
 
@@ -54,7 +63,8 @@
         final MockObjectSource source = new MockObjectSource( 15 );
 
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
-                                                                       source );
+                                                                       source,
+                                                                       buildContext );
         final Field field = ObjectSource.class.getDeclaredField( "sink" );
         field.setAccessible( true );
         ObjectSinkPropagator sink = (ObjectSinkPropagator) field.get( source );
@@ -89,7 +99,8 @@
                                                                            (ReteooRuleBase) RuleBaseFactory.newRuleBase() );
 
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
-                                                                       new MockObjectSource( 15 ) );
+                                                                       new MockObjectSource( 15 ),
+                                                                       buildContext );
         final MockTupleSink sink = new MockTupleSink();
         liaNode.addTupleSink( sink );
 
@@ -126,16 +137,13 @@
         final InternalWorkingMemory workingMemory = ( InternalWorkingMemory ) ruleBase.newStatefulSession();                
 
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( idGenerator.getNextId(),
-                                                                       new MockObjectSource( idGenerator.getNextId() ));
+                                                                       new MockObjectSource( idGenerator.getNextId() ),
+                                                                       buildContext );
 
         final MockTupleSink sink = new MockTupleSink();
         liaNode.addTupleSink( sink );
 
-        //force liaNode to have memory
-        final Field field = BaseNode.class.getDeclaredField( "hasMemory" );
-        field.setAccessible( true );
-        field.set( liaNode,
-                   new Boolean( true ) );
+        liaNode.setObjectMemoryEnabled( true );
 
         final Object string1 = "cheese";
 
@@ -195,7 +203,8 @@
         final MockObjectSource source = new MockObjectSource( 15 );
 
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 1,
-                                                                       source );
+                                                                       source,
+                                                                       buildContext );
         final MockTupleSink sink = new MockTupleSink();
         liaNode.addTupleSink( sink );
 
@@ -230,12 +239,10 @@
         final InternalWorkingMemory workingMemory = ( InternalWorkingMemory ) ruleBase.newStatefulSession();                
 
         final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( idGenerator.getNextId(),
-                                                                       new MockObjectSource( idGenerator.getNextId() ));
+                                                                       new MockObjectSource( idGenerator.getNextId() ),
+                                                                       buildContext );
         //force liaNode to have memory
-        final Field field = BaseNode.class.getDeclaredField( "hasMemory" );
-        field.setAccessible( true );
-        field.set( liaNode,
-                   new Boolean( true ) );
+        liaNode.setObjectMemoryEnabled( true );
 
         final MockTupleSink sink = new MockTupleSink();
         liaNode.addTupleSink( sink );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -87,4 +87,14 @@
     public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
         this.previousObjectSinkNode = previous;
     }
+
+    public boolean isObjectMemoryEnabled() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public void setObjectMemoryEnabled(boolean objectMemoryOn) {
+        // TODO Auto-generated method stub
+        
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockTupleSink.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -76,10 +76,6 @@
         // TODO Auto-generated method stub
     }
 
-    public void setHasMemory(final boolean hasMemory) {
-        this.hasMemory = hasMemory;
-    }
-
     public int getId() {
         return this.id;
     }
@@ -153,4 +149,14 @@
         this.previousTupleSinkNode = previous;
     }
 
+    public boolean isTupleMemoryEnabled() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public void setTupleMemoryEnabled(boolean tupleMemoryEnabled) {
+        // TODO Auto-generated method stub
+        
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -337,9 +337,9 @@
         BuildContext buildContext = new BuildContext( ruleBase,
                                                       ruleBase.getReteooBuilder().getIdGenerator() );
         
-        buildContext.setHasLeftMemory( false );
-        buildContext.setHasObjectTypeMemory( false );
-        buildContext.setHasTerminalNodeMemory( false );
+        buildContext.setTupleMemoryEnabled( false );
+        buildContext.setObjectTypeNodeMemoryEnabled( false );
+        buildContext.setTerminalNodeMemoryEnabled( false );
 
         // override setup, so its working in sequential mode
         this.node = new NotNode( 15,

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ObjectTypeNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -133,6 +133,7 @@
         conf.setSequential( true );
         final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf );
         buildContext = new BuildContext( ruleBase, ((ReteooRuleBase)ruleBase).getReteooBuilder().getIdGenerator() );
+        buildContext.setObjectTypeNodeMemoryEnabled( false );
         
         final ReteooWorkingMemory workingMemory = new ReteooWorkingMemory( 1,
                                                                            ruleBase );

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java	2007-09-08 21:33:30 UTC (rev 14955)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/QueryTerminalNodeTest.java	2007-09-09 04:04:25 UTC (rev 14956)
@@ -53,7 +53,7 @@
     
     public void testQueryTerminalNode() {
         final ClassObjectType queryObjectType = new ClassObjectType( DroolsQuery.class );
-        final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( 1,
+        final ObjectTypeNode queryObjectTypeNode = new ObjectTypeNode( this.buildContext.getNextId(),
                                                                        queryObjectType,
                                                                        buildContext );
         queryObjectTypeNode.attach();
@@ -69,18 +69,19 @@
                                                               evaluator,
                                                               field );
 
-        AlphaNode alphaNode = new AlphaNode( 2,
+        AlphaNode alphaNode = new AlphaNode( this.buildContext.getNextId(),
                                              constraint,
                                              queryObjectTypeNode,
                                              buildContext  );
         alphaNode.attach();
 
-        final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( 3,
-                                                                       alphaNode );
+        final LeftInputAdapterNode liaNode = new LeftInputAdapterNode( this.buildContext.getNextId(),
+                                                                       alphaNode,
+                                                                       this.buildContext );
         liaNode.attach();
 
         final ClassObjectType cheeseObjectType = new ClassObjectType( Cheese.class );
-        final ObjectTypeNode cheeseObjectTypeNode = new ObjectTypeNode( 4,
+        final ObjectTypeNode cheeseObjectTypeNode = new ObjectTypeNode( this.buildContext.getNextId(),
                                                                         cheeseObjectType,
                                                                         buildContext );
         cheeseObjectTypeNode.attach();
@@ -95,16 +96,16 @@
                                             evaluator,
                                             field );
 
-        alphaNode = new AlphaNode( 5,
+        alphaNode = new AlphaNode( this.buildContext.getNextId(),
                                    constraint,
                                    cheeseObjectTypeNode,
                                    buildContext  );
         alphaNode.attach();
 
         BuildContext buildContext = new BuildContext( ruleBase, ruleBase.getReteooBuilder().getIdGenerator() );
-        buildContext.setHasLeftMemory( false );
+        buildContext.setTupleMemoryEnabled( false );
         
-        final JoinNode joinNode = new JoinNode( 6,
+        final JoinNode joinNode = new JoinNode( this.buildContext.getNextId(),
                                                 liaNode,
                                                 alphaNode,
                                                 EmptyBetaConstraints.getInstance(),
@@ -113,7 +114,7 @@
 
         final Query query = new Query( "query-1" );
 
-        final QueryTerminalNode queryNode = new QueryTerminalNode( 7,
+        final QueryTerminalNode queryNode = new QueryTerminalNode( this.buildContext.getNextId(),
                                                                    joinNode,
                                                                    query,
                                                                    query.getLhs() );




More information about the jboss-svn-commits mailing list