[jboss-svn-commits] JBL Code SVN: r19407 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/reteoo and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 3 19:54:32 EDT 2008
Author: tirelli
Date: 2008-04-03 19:54:32 -0400 (Thu, 03 Apr 2008)
New Revision: 19407
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java
Log:
JBRULES-1520: fixing updateSink for NotNode
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-04-03 23:46:54 UTC (rev 19406)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-04-03 23:54:32 UTC (rev 19407)
@@ -762,6 +762,7 @@
builder1.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesWithSubnetwork.drl" ) ) );
ruleBaseWM.addPackage( SerializationHelper.serializeObject( builder1.getPackage() ) );
workingMemory.fireAllRules();
+ results = (List) workingMemory.getGlobal( "results" );
assertEquals( 1, results.size() );
assertEquals( 3, ((List) results.get(0)).size() );
results.clear();
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 23:46:54 UTC (rev 19406)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2008-04-03 23:54:32 UTC (rev 19407)
@@ -91,6 +91,11 @@
memory.betaMemory.getLeftTupleMemory().add( leftTuple );
}
+ if ( this.sink.size() == 0 ) {
+ // nothing to do
+ return;
+ }
+
this.betaConstraints.updateFromTuple( memory.betaMemory.getContext(),
workingMemory,
leftTuple );
@@ -202,20 +207,26 @@
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 );
-
+ if( this.sink.size() == 1 ) {
+ // means we had no sink before, so no calculated matches
+ assertLeftTuple( leftTuple, context, workingMemory );
+ } else {
+ // we previously calculated matches, so, just re-use them
+ 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();
}
- child = child.getLeftParentNext();
}
}
}
More information about the jboss-svn-commits
mailing list