[jboss-svn-commits] JBL Code SVN: r19235 - 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
Wed Mar 26 08:08:15 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-03-26 08:08:15 -0400 (Wed, 26 Mar 2008)
New Revision: 19235

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java
Log:
JBRULES-1520 RightTuple merge for asynchronous Rete propagations
-RightInputAdapter now compiles

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	2008-03-26 11:04:57 UTC (rev 19234)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RightInputAdapterNode.java	2008-03-26 12:08:15 UTC (rev 19235)
@@ -145,16 +145,24 @@
         final ObjectHashMap memory = (ObjectHashMap) workingMemory.getNodeMemory( this );
 
         // retrieve handle from memory
-        final InternalFactHandle handle = (InternalFactHandle) memory.remove( tuple );
+        final InternalFactHandle factHandle = (InternalFactHandle) memory.remove( tuple );
 
-        // propagate a retract for it
-        this.sink.propagateRetractObject( handle,
-                                          context,
-                                          workingMemory,
-                                          true );
+        for ( RightTuple rightTuple = factHandle.getRightTuple(); rightTuple != null; rightTuple = (RightTuple) rightTuple.getHandleNext() ) {
+            rightTuple.getRightTupleSink().retractRightTuple( rightTuple,
+                                                              context,
+                                                              workingMemory );
+        }
+        factHandle.setRightTuple( null );
 
+        for ( LeftTuple leftTuple = factHandle.getLeftTuple(); leftTuple != null; leftTuple = (LeftTuple) leftTuple.getLeftParentNext() ) {
+            leftTuple.getSink().retractLeftTuple( leftTuple,
+                                                  context,
+                                                  workingMemory );
+        }
+        factHandle.setLeftTuple( null );
+
         // destroy dummy handle
-        workingMemory.getFactHandleFactory().destroyFactHandle( handle );
+        workingMemory.getFactHandleFactory().destroyFactHandle( factHandle );
     }
 
     public void attach() {




More information about the jboss-svn-commits mailing list