[jboss-svn-commits] JBL Code SVN: r13109 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jul 5 10:18:11 EDT 2007


Author: tirelli
Date: 2007-07-05 10:18:11 -0400 (Thu, 05 Jul 2007)
New Revision: 13109

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/CollectNode.java
Log:
JBRULES-967: adding support to sequential mode into collect and accumulate node

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-07-05 13:05:54 UTC (rev 13108)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2007-07-05 14:18:11 UTC (rev 13109)
@@ -29,7 +29,6 @@
 import org.drools.util.Entry;
 import org.drools.util.FactEntry;
 import org.drools.util.Iterator;
-import org.drools.util.AbstractHashTable.FactEntryImpl;
 import org.drools.util.ObjectHashMap.ObjectEntry;
 
 /**
@@ -119,13 +118,15 @@
 
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
 
-        memory.getTupleMemory().add( leftTuple );
-
         AccumulateResult accresult = new AccumulateResult();
-        memory.getCreatedHandles().put( leftTuple,
-                                        accresult,
-                                        false );
 
+        if ( !workingMemory.isSequential() ) {
+            memory.getTupleMemory().add( leftTuple );
+            memory.getCreatedHandles().put( leftTuple,
+                                            accresult,
+                                            false );
+        }
+
         final Object accContext = this.accumulate.createContext();
 
         accresult.context = accContext;
@@ -223,6 +224,11 @@
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getFactHandleMemory().add( handle );
 
+        if ( workingMemory.isSequential() ) {
+            // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+            return;
+        }        
+
         this.constraints.updateFromFactHandle( workingMemory,
                                                handle );
 

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-07-05 13:05:54 UTC (rev 13108)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2007-07-05 14:18:11 UTC (rev 13109)
@@ -30,7 +30,6 @@
 import org.drools.util.Entry;
 import org.drools.util.FactEntry;
 import org.drools.util.Iterator;
-import org.drools.util.AbstractHashTable.FactEntryImpl;
 import org.drools.util.ObjectHashMap.ObjectEntry;
 
 /**
@@ -130,17 +129,21 @@
 
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
 
-        memory.getTupleMemory().add( leftTuple );
-
         final Collection result = this.collect.instantiateResultObject();
         final InternalFactHandle resultHandle = workingMemory.getFactHandleFactory().newFactHandle( result );
         CollectResult colresult = new CollectResult();
         colresult.handle = resultHandle;
         colresult.propagated = false;
-        memory.getCreatedHandles().put( leftTuple,
-                                        colresult,
-                                        false );
+        
+        // do not add tuple and result to the memory in sequential mode
+        if( ! workingMemory.isSequential() ) {
+            memory.getTupleMemory().add( leftTuple );
+            memory.getCreatedHandles().put( leftTuple,
+                                            colresult,
+                                            false );
+        }
 
+
         final Iterator it = memory.getFactHandleMemory().iterator( leftTuple );
         this.constraints.updateFromTuple( workingMemory,
                                           leftTuple );
@@ -217,6 +220,11 @@
 
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
         memory.getFactHandleMemory().add( handle );
+        
+        if ( workingMemory.isSequential() ) {
+            // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+            return;
+        }        
 
         this.constraints.updateFromFactHandle( workingMemory,
                                                handle );




More information about the jboss-svn-commits mailing list