[jboss-svn-commits] JBL Code SVN: r19285 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/reteoo and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 28 00:57:45 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-03-28 00:57:45 -0400 (Fri, 28 Mar 2008)
New Revision: 19285

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
Log:
JBRULES-1520 RightTuple merge for asymmetrical Rete propagations
-CollectNode no longer needs a Fact map.
-Fixed CollectNode and CollectNodeTest

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java	2008-03-28 04:00:54 UTC (rev 19284)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java	2008-03-28 04:57:45 UTC (rev 19285)
@@ -54,13 +54,6 @@
         return this.leftTupleMemory;
     }
 
-    public ObjectHashMap getCreatedHandles() {
-        if ( this.createdHandles == null ) {
-            this.createdHandles = new ObjectHashMap();
-        }
-        return this.createdHandles;
-    }
-
     /**
      * @return the context
      */

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	2008-03-28 04:00:54 UTC (rev 19284)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CollectNode.java	2008-03-28 04:57:45 UTC (rev 19285)
@@ -34,6 +34,7 @@
 import org.drools.spi.PropagationContext;
 import org.drools.util.ArrayUtils;
 import org.drools.util.Entry;
+import org.drools.util.Iterator;
 
 /**
  * @author etirelli
@@ -138,9 +139,6 @@
         // do not add tuple and result to the memory in sequential mode
         if ( this.tupleMemoryEnabled ) {
             memory.betaMemory.getLeftTupleMemory().add( leftTuple );
-            memory.betaMemory.getCreatedHandles().put( leftTuple,
-                                                       resultTuple,
-                                                       false );
         }
 
         this.constraints.updateFromTuple( memory.betaMemory.getContext(),
@@ -199,14 +197,7 @@
         final CollectMemory memory = (CollectMemory) workingMemory.getNodeMemory( this );
         memory.betaMemory.getLeftTupleMemory().remove( leftTuple );
 
-        final RightTuple resultTuple = (RightTuple) memory.betaMemory.getCreatedHandles().remove( leftTuple );
-
-        if ( leftTuple.getBetaChildren() != null ) {
-            this.sink.propagateRetractLeftTuple( leftTuple,
-                                                 context,
-                                                 workingMemory );
-        }
-        workingMemory.getFactHandleFactory().destroyFactHandle( resultTuple.getFactHandle() );
+        this.sink.propagateRetractLeftTupleDestroyRightTuple( leftTuple, context, workingMemory );
     }
 
     /**
@@ -296,7 +287,7 @@
 
         final CollectMemory memory = (CollectMemory) workingMemory.getNodeMemory( this );
 
-        RightTuple result = (RightTuple) memory.betaMemory.getCreatedHandles().get( leftTuple );
+        RightTuple result = leftTuple.getBetaChildren().getRightParent();
 
         // if tuple was propagated
         if ( leftTuple.getBetaChildren() != null ) {
@@ -353,17 +344,13 @@
     public void updateSink(final LeftTupleSink sink,
                            final PropagationContext context,
                            final InternalWorkingMemory workingMemory) {
-        //        final CollectMemory memory = (CollectMemory) workingMemory.getNodeMemory( this );
-        //
-        //        final Iterator it = memory.betaMemory.getCreatedHandles().iterator();
-        //
-        //        for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
-        //            CollectResult result = (CollectResult) entry.getValue();
-        //            sink.assertLeftTuple( new LeftTuple( (LeftTuple) entry.getKey(),
-        //                                                 result.handle ),
-        //                                  context,
-        //                                  workingMemory );
-        //        }
+                final CollectMemory memory = (CollectMemory) workingMemory.getNodeMemory( this );
+                
+                final Iterator tupleIter = memory.betaMemory.getLeftTupleMemory().iterator();
+                for ( LeftTuple leftTuple = (LeftTuple) tupleIter.next(); leftTuple != null; leftTuple = (LeftTuple) tupleIter.next() ) {
+                    RightTuple rightTuple = leftTuple.getBetaChildren().getRightParent();
+                    sink.assertLeftTuple( new LeftTuple( leftTuple, rightTuple, sink), context, workingMemory );
+                }
     }
 
     /* (non-Javadoc)

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2008-03-28 04:00:54 UTC (rev 19284)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java	2008-03-28 04:57:45 UTC (rev 19285)
@@ -50,7 +50,7 @@
     ReteooWorkingMemory workingMemory;
     MockObjectSource    objectSource;
     MockTupleSource     tupleSource;
-    MockLeftTupleSink       sink;
+    MockLeftTupleSink   sink;
     BetaNode            node;
     CollectMemory       memory;
     MockConstraint      constraint = new MockConstraint();




More information about the jboss-svn-commits mailing list