[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