[jboss-svn-commits] JBL Code SVN: r19402 - 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 Apr 3 19:00:35 EDT 2008


Author: tirelli
Date: 2008-04-03 19:00:35 -0400 (Thu, 03 Apr 2008)
New Revision: 19402

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/JoinNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java
Log:
JBRULES-1520: fixing dynamic rules propagation

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	2008-04-03 22:25:53 UTC (rev 19401)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-04-03 23:00:35 UTC (rev 19402)
@@ -1,9 +1,9 @@
 package org.drools.reteoo;
 
-import java.io.Serializable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.io.Serializable;
 
 import org.drools.RuleBaseConfiguration;
 import org.drools.common.BaseNode;
@@ -18,8 +18,6 @@
 import org.drools.spi.DataProvider;
 import org.drools.spi.PropagationContext;
 import org.drools.util.Iterator;
-import org.drools.util.LinkedList;
-import org.drools.util.LinkedListEntry;
 import org.drools.util.LeftTupleList;
 
 public class FromNode extends LeftTupleSource
@@ -201,22 +199,25 @@
                            final InternalWorkingMemory workingMemory) {
 
         final FromMemory memory = (FromMemory) workingMemory.getNodeMemory( this );
-        // @TODO
-//
-//        final Iterator tupleIter = memory.betaMemory.getLeftTupleMemory().iterator();
-//        for ( LeftTuple tuple = (LeftTuple) tupleIter.next(); tuple != null; tuple = (LeftTuple) tupleIter.next() ) {
-//            final LinkedList list = (LinkedList) memory.betaMemory.getCreatedHandles().remove( tuple );
-//            if ( list == null ) {
-//                continue;
-//            }
-//            for ( LinkedListEntry entry = (LinkedListEntry) list.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
-//                final InternalFactHandle handle = (InternalFactHandle) entry.getObject();
-//                this.sink.propagateAssertLeftTuple( tuple,
-//                                                    handle,
-//                                                    context,
-//                                                    workingMemory );
-//            }
-//        }
+
+        final Iterator tupleIter = memory.betaMemory.getLeftTupleMemory().iterator();
+        for ( LeftTuple leftTuple = (LeftTuple) tupleIter.next(); leftTuple != null; leftTuple = (LeftTuple) tupleIter.next() ) {
+            LeftTuple child = leftTuple.getBetaChildren();
+            RightTuple match = null;
+            while( child != null ) {
+                if( match != child.getRightParent() ) {
+                    match = child.getRightParent();
+                    sink.assertLeftTuple( new LeftTuple( leftTuple,
+                                                         match,
+                                                         sink,
+                                                         this.tupleMemoryEnabled ),
+                                          context,
+                                          workingMemory );
+                    
+                }
+                child = child.getLeftParentNext();
+            }
+        }
     }
 
     public Object createMemory(final RuleBaseConfiguration config) {

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	2008-04-03 22:25:53 UTC (rev 19401)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2008-04-03 23:00:35 UTC (rev 19402)
@@ -235,7 +235,7 @@
                                                            rightTuple.getFactHandle() ) ) {
                     sink.assertLeftTuple( new LeftTuple( leftTuple,
                                                          rightTuple,
-                                                         this,
+                                                         sink,
                                                          this.tupleMemoryEnabled  ),
                                           context,
                                           workingMemory );

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	2008-04-03 22:25:53 UTC (rev 19401)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/RuleTerminalNode.java	2008-04-03 23:00:35 UTC (rev 19402)
@@ -182,7 +182,6 @@
                             final PropagationContext context,
                             final InternalWorkingMemory workingMemory,
                             final boolean fireActivationCreated) {
-
         //check if the rule is effective
         if ( !this.rule.isEffective( workingMemory.getTimeMachine() ) ) {
             return;




More information about the jboss-svn-commits mailing list