[jboss-svn-commits] JBL Code SVN: r19367 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo/builder and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 1 15:36:13 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-04-01 15:36:12 -0400 (Tue, 01 Apr 2008)
New Revision: 19367

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/LeftTuple.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
Log:
JBRULES-1520 RightTuple merge for asymmetrical Rete propagations
-'from' node now can have tuple memory enabled or disabled.

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-01 19:17:09 UTC (rev 19366)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java	2008-04-01 19:36:12 UTC (rev 19367)
@@ -48,13 +48,14 @@
                     final DataProvider dataProvider,
                     final LeftTupleSource tupleSource,
                     final AlphaNodeFieldConstraint[] constraints,
-                    final BetaConstraints binder) {
+                    final BetaConstraints binder,
+                    final boolean tupleMemoryEnabled) {
         super( id );
         this.dataProvider = dataProvider;
         this.tupleSource = tupleSource;
         this.alphaConstraints = constraints;
         this.betaConstraints = (binder == null) ? EmptyBetaConstraints.getInstance() : binder;
-        this.tupleMemoryEnabled = false;
+        this.tupleMemoryEnabled = tupleMemoryEnabled;
     }
 
     public void readExternal(ObjectInput in) throws IOException,
@@ -88,8 +89,9 @@
                                 final InternalWorkingMemory workingMemory) {
         final FromMemory memory = (FromMemory) workingMemory.getNodeMemory( this );
 
-        memory.betaMemory.getLeftTupleMemory().add( leftTuple );
-        //final LinkedList list = new LinkedList();
+        if ( this.tupleMemoryEnabled ) {
+            memory.betaMemory.getLeftTupleMemory().add( leftTuple );
+        }
         
         this.betaConstraints.updateFromTuple( memory.betaMemory.getContext(),
                                               workingMemory,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java	2008-04-01 19:17:09 UTC (rev 19366)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftTuple.java	2008-04-01 19:36:12 UTC (rev 19367)
@@ -78,15 +78,16 @@
         h ^= (h >>> 10);
         this.hashCode = h;
 
-        this.sink = sink;
-
-        LeftTuple currentFirst = handle.getLeftTuple();
-        if ( currentFirst != null ) {
-            currentFirst.leftParentPrevious = this;
-            this.leftParentNext = currentFirst;
+        if ( leftTupleMemoryEnabled ) {
+            this.sink = sink;
+            LeftTuple currentFirst = handle.getLeftTuple();
+            if ( currentFirst != null ) {
+                currentFirst.leftParentPrevious = this;
+                this.leftParentNext = currentFirst;
+            }
+    
+            handle.setLeftTuple( this );
         }
-
-        handle.setLeftTuple( this );
     }
 
     public LeftTuple(final LeftTuple leftTuple,
@@ -98,13 +99,15 @@
         this.handle = leftTuple.handle;
         this.hashCode = leftTuple.hashCode();
 
-        this.leftParent = leftTuple;
-        this.leftParentNext = leftTuple.children;
-        if ( this.leftParentNext != null ) {
-            this.leftParentNext.leftParentPrevious = this;
+        if ( leftTupleMemoryEnabled ) {
+            this.leftParent = leftTuple;
+            this.leftParentNext = leftTuple.children;
+            if ( this.leftParentNext != null ) {
+                this.leftParentNext.leftParentPrevious = this;
+            }
+            this.leftParent.children = this;
+            this.sink = sink;
         }
-        this.leftParent.children = this;
-        this.sink = sink;
     }
 
     public LeftTuple(final LeftTuple leftTuple,
@@ -117,20 +120,22 @@
         this.recency = leftTuple.recency + this.handle.getRecency();
         this.hashCode = leftTuple.hashCode ^ (handle.hashCode() * 31);
 
-        this.rightParent = rightTuple;
-        this.rightParentNext = this.rightParent.getBetaChildren();
-        if ( this.rightParentNext != null ) {
-            this.rightParentNext.rightParentPrevious = this;
+        if ( leftTupleMemoryEnabled ) {
+            this.rightParent = rightTuple;
+            this.rightParentNext = this.rightParent.getBetaChildren();
+            if ( this.rightParentNext != null ) {
+                this.rightParentNext.rightParentPrevious = this;
+            }
+            this.rightParent.setBetaChildren( this );
+    
+            this.leftParent = leftTuple;
+            this.leftParentNext = leftTuple.children;
+            if ( this.leftParentNext != null ) {
+                this.leftParentNext.leftParentPrevious = this;
+            }
+            this.leftParent.children = this;
+            this.sink = sink;
         }
-        this.rightParent.setBetaChildren( this );
-
-        this.leftParent = leftTuple;
-        this.leftParentNext = leftTuple.children;
-        if ( this.leftParentNext != null ) {
-            this.leftParentNext.leftParentPrevious = this;
-        }
-        this.leftParent.children = this;
-        this.sink = sink;
     }
 
     public void unlinkFromLeftParent() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java	2008-04-01 19:17:09 UTC (rev 19366)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java	2008-04-01 19:36:12 UTC (rev 19367)
@@ -48,7 +48,8 @@
                                                                               from.getDataProvider(),
                                                                               context.getTupleSource(),
                                                                               (AlphaNodeFieldConstraint[]) context.getAlphaConstraints().toArray( new AlphaNodeFieldConstraint[context.getAlphaConstraints().size()] ),
-                                                                              betaConstraints ) ) );
+                                                                              betaConstraints,
+                                                                              context.isTupleMemoryEnabled() ) ) );
         context.setAlphaConstraints( null );
         context.setBetaconstraints( null );
     }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java	2008-04-01 19:17:09 UTC (rev 19366)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/FromNodeTest.java	2008-04-01 19:36:12 UTC (rev 19367)
@@ -70,7 +70,8 @@
                                             dataProvider,
                                             null,
                                             new AlphaNodeFieldConstraint[]{constraint},
-                                            null );
+                                            null,
+                                            true );
         final MockLeftTupleSink sink = new MockLeftTupleSink( 5 );
         from.addTupleSink( sink );
 
@@ -180,7 +181,8 @@
                                             dataProvider,
                                             null,
                                             new AlphaNodeFieldConstraint[0],
-                                            betaConstraints );
+                                            betaConstraints,
+                                            true );
         final MockLeftTupleSink sink = new MockLeftTupleSink( 5 );
         from.addTupleSink( sink );
 
@@ -273,7 +275,8 @@
                                             dataProvider,
                                             null,
                                             new AlphaNodeFieldConstraint[]{constraint},
-                                            null );
+                                            null,
+                                            true );
         final MockLeftTupleSink sink = new MockLeftTupleSink( 5 );
         from.addTupleSink( sink );
 




More information about the jboss-svn-commits mailing list