[jboss-svn-commits] JBL Code SVN: r19197 - 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
Fri Mar 21 17:31:12 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-03-21 17:31:12 -0400 (Fri, 21 Mar 2008)
New Revision: 19197

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java
Log:
JBRULES-1520 RightTuple merge for asynchronous Rete propagations
-removed old, incorrect code, in CompositeLeftTuplesinkAdapter.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java	2008-03-21 21:23:11 UTC (rev 19196)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeLeftTupleSinkAdapter.java	2008-03-21 21:31:12 UTC (rev 19197)
@@ -1,13 +1,13 @@
 package org.drools.reteoo;
 
-import org.drools.common.InternalFactHandle;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.spi.PropagationContext;
-
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
 public class CompositeLeftTupleSinkAdapter
     implements
     LeftTupleSinkPropagator {
@@ -17,15 +17,6 @@
         this.sinks = new LeftTupleSinkNodeList();
     }
 
-    public void readExternal(ObjectInput in) throws IOException,
-                                            ClassNotFoundException {
-        sinks = (LeftTupleSinkNodeList) in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject( sinks );
-    }
-
     public void addTupleSink(final LeftTupleSink sink) {
         this.sinks.add( (LeftTupleSinkNode) sink );
     }
@@ -34,55 +25,48 @@
         this.sinks.remove( (LeftTupleSinkNode) sink );
     }
 
-    public void propagateAssertLeftTuple(final LeftTuple tuple,
-                                         final RightTuple rightTuple,
-                                         final PropagationContext context,
-                                         final InternalWorkingMemory workingMemory) {
+    public void propagateAssertLeftTuple(final LeftTuple leftTuple,
+                                     final RightTuple rightTuple,
+                                     final PropagationContext context,
+                                     final InternalWorkingMemory workingMemory) {
 
         for ( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
-            sink.assertLeftTuple( new LeftTuple( tuple,
-                                                 rightTuple,
-                                                 sink ),
-                                  context,
-                                  workingMemory );
+            sink.assertLeftTuple( new LeftTuple( leftTuple,
+                                             rightTuple,
+                                             sink ),
+                              context,
+                              workingMemory );
         }
     }
 
     public void propagateAssertLeftTuple(final LeftTuple tuple,
-                                         final PropagationContext context,
-                                         final InternalWorkingMemory workingMemory) {
+                                     final PropagationContext context,
+                                     final InternalWorkingMemory workingMemory) {
         for ( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
             sink.assertLeftTuple( new LeftTuple( tuple,
-                                                 sink ),
-                                  context,
-                                  workingMemory );
+                                             sink ),
+                              context,
+                              workingMemory );
         }
     }
 
-    public void propagateRetractLeftTuple(final LeftTuple tuple,
-                                          final RightTuple rightTuple,
+    public void propagateRetractLeftTuple(final LeftTuple leftTuple,
                                           final PropagationContext context,
                                           final InternalWorkingMemory workingMemory) {
-        for ( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
-            sink.retractLeftTuple( new LeftTuple( tuple,
-                                                  rightTuple,
-                                                  sink ),
-                                   context,
-                                   workingMemory );
+        LeftTuple child = leftTuple.getBetaChildren();
+        while ( child != null ) {
+            LeftTuple temp = child.getLeftParentNext();
+            //child.unlinkFromParents();
+            child.getSink().retractLeftTuple( child,
+                                          context,
+                                          workingMemory );
+            child.unlinkFromRightParent();            
+            //child = child.getLeftParentNext();
+            child = temp;
         }
+        leftTuple.setBetaChildren( null );
     }
 
-    public void propagateRetractLeftTuple(final LeftTuple tuple,
-                                          final PropagationContext context,
-                                          final InternalWorkingMemory workingMemory) {
-        for ( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
-            sink.retractLeftTuple( new LeftTuple( tuple,
-                                                  sink ),
-                                   context,
-                                   workingMemory );
-        }
-    }
-
     public void propagateRetractRightTuple(final RightTuple rightTuple,
                                            final PropagationContext context,
                                            final InternalWorkingMemory workingMemory) {
@@ -91,9 +75,9 @@
             LeftTuple temp = child.getRightParentNext();
             //child.unlinkFromParents();
             child.getSink().retractLeftTuple( child,
-                                              context,
-                                              workingMemory );
-            child.unlinkFromLeftParent();
+                                          context,
+                                          workingMemory );
+            child.unlinkFromLeftParent();            
             //child = child.getRightParentNext();
             child = temp;
         }
@@ -101,13 +85,13 @@
     }
 
     public void createAndPropagateAssertLeftTuple(final InternalFactHandle factHandle,
-                                                  final PropagationContext context,
-                                                  final InternalWorkingMemory workingMemory) {
+                                              final PropagationContext context,
+                                              final InternalWorkingMemory workingMemory) {
         for ( LeftTupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextLeftTupleSinkNode() ) {
             sink.assertLeftTuple( new LeftTuple( factHandle,
-                                                 sink ),
-                                  context,
-                                  workingMemory );
+                                             sink ),
+                              context,
+                              workingMemory );
         }
     }
 
@@ -190,4 +174,15 @@
     public int size() {
         return this.sinks.size();
     }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        // TODO Auto-generated method stub
+        
+    }
 }




More information about the jboss-svn-commits mailing list