[jboss-svn-commits] JBL Code SVN: r5052 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/resources/org/drools/integrationtests drools-core/src/main/java/org/drools/reteoo
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 12 17:17:41 EDT 2006
Author: tirelli
Date: 2006-07-12 17:17:29 -0400 (Wed, 12 Jul 2006)
New Revision: 5052
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JoinNodeModifyObject.drl
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
Log:
Fixing JBRULES-318
* Fixing JoinNode.modifyObject()
* Updating test cases
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-07-12 19:40:12 UTC (rev 5051)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-07-12 21:17:29 UTC (rev 5052)
@@ -49,6 +49,7 @@
import org.drools.TestParam;
import org.drools.WorkingMemory;
import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.audit.WorkingMemoryLogger;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsError;
import org.drools.compiler.DroolsParserException;
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JoinNodeModifyObject.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JoinNodeModifyObject.drl 2006-07-12 19:40:12 UTC (rev 5051)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JoinNodeModifyObject.drl 2006-07-12 21:17:29 UTC (rev 5052)
@@ -7,18 +7,29 @@
global java.util.List orderedNumbers;
global java.util.List errors;
-rule "Order"
-salience 200
+rule "Order1"
+salience 210
when
- #Doesnt work
+ # testing join node + eval
n1 : IndexedNumber($nb1 : number);
n2 : IndexedNumber(number < $nb1);
eval(n1.getIndex() < n2.getIndex());
-
then
if ( ! (n1.getIndex() < n2.getIndex())) {
- errors.add("Shouldn't fire for: " + n1 + " " + n2);
+ errors.add("{1} Shouldn't fire for: " + n1 + " " + n2);
}
+end
+
+rule "Order2"
+salience 200
+ when
+ #testing pure join nodes
+ n1 : IndexedNumber($nb1 : number, $index : index);
+ n2 : IndexedNumber(number < $nb1, index > $index );
+ then
+ if ( ! (n1.getIndex() < n2.getIndex())) {
+ errors.add("{2} Shouldn't fire for: " + n1 + " " + n2);
+ }
swap(n1, n2);
modify(n1);
modify(n2);
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 2006-07-12 19:40:12 UTC (rev 5051)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/JoinNode.java 2006-07-12 21:17:29 UTC (rev 5052)
@@ -308,7 +308,7 @@
final PropagationContext context,
final ReteooWorkingMemory workingMemory) {
final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
-
+
// Remove and re-add the FactHandle from memory, ensures that its the latest on the list
final ObjectMatches objectMatches = memory.remove( workingMemory,
handle );
@@ -323,7 +323,11 @@
final ReteTuple leftTuple = (ReteTuple) it.next();
if ( tupleMatch != null && tupleMatch.getTuple() == leftTuple ) {
// has previous match so need to decide whether to continue
- // modify or retract
+ // modify or retract
+
+ // Need to get the "next" tuple match before messing with references
+ // using objectMatches.remove( tupleMatch ); for instance.
+ TupleMatch nextTupleMatch = (TupleMatch) tupleMatch.getNext();
if ( binder.isAllowed( handle,
leftTuple,
workingMemory ) ) {
@@ -337,7 +341,7 @@
context,
workingMemory );
}
- tupleMatch = (TupleMatch) tupleMatch.getNext();
+ tupleMatch = nextTupleMatch;
} else {
// no previous join, so attempt join now
final TupleMatch newTupleMatch = attemptJoin( leftTuple,
More information about the jboss-svn-commits
mailing list