[jboss-svn-commits] JBL Code SVN: r32525 - 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
Mon Apr 12 23:07:19 EDT 2010


Author: mark.proctor at jboss.com
Date: 2010-04-12 23:07:18 -0400 (Mon, 12 Apr 2010)
New Revision: 32525

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/NotNode.java
Log:
JBRULES-2240 True modify
-Make sure that ModifyRightTuple still updates the correct buckets, even for queries with no left memory.

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	2010-04-12 21:37:43 UTC (rev 32524)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java	2010-04-13 03:07:18 UTC (rev 32525)
@@ -365,13 +365,17 @@
 
     public void modifyRightTuple(RightTuple rightTuple,
                                  PropagationContext context,
-                                 InternalWorkingMemory workingMemory) {
+                                 InternalWorkingMemory workingMemory) {        
+        final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+        
         if ( !this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+            
+            //normally do this at the end, but as we are exiting early, make sure the buckets are still correct.
+            memory.getRightTupleMemory().remove( rightTuple );
+            memory.getRightTupleMemory().add( rightTuple );            
             return;
-        }
-        
-        final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
+        }        
 
         // TODO: wtd with behaviours?
         //        if ( !behavior.assertRightTuple( memory.getBehaviorContext(),

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	2010-04-12 21:37:43 UTC (rev 32524)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/NotNode.java	2010-04-13 03:07:18 UTC (rev 32525)
@@ -304,14 +304,17 @@
 
     public void modifyRightTuple(RightTuple rightTuple,
                                  PropagationContext context,
-                                 InternalWorkingMemory workingMemory) {
+                                 InternalWorkingMemory workingMemory) {        
+        final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );               
         if ( !this.tupleMemoryEnabled ) {
             // do nothing here, as we know there are no left tuples at this stage in sequential mode.
+            
+            //normally do this at the end, but as we are exiting early, make sure the buckets are still correct.
+            memory.getRightTupleMemory().remove( rightTuple );
+            memory.getRightTupleMemory().add( rightTuple );               
             return;
         }
         
-        final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );               
-
         // TODO: wtd with behaviours?
         //        if ( !behavior.assertRightTuple( memory.getBehaviorContext(),
         //                                         rightTuple,



More information about the jboss-svn-commits mailing list