[jboss-svn-commits] JBL Code SVN: r13512 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jul 14 17:22:36 EDT 2007
Author: tirelli
Date: 2007-07-14 17:22:36 -0400 (Sat, 14 Jul 2007)
New Revision: 13512
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
Log:
JBRULES-1006: fixing bug on pattern offset calculation
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-14 19:47:36 UTC (rev 13511)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-14 21:22:36 UTC (rev 13512)
@@ -3357,6 +3357,33 @@
results.get(1) );
}
-
+ public void testMultipleFroms() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_multipleFroms.drl" ) ) );
+ final Package pkg = builder.getPackage();
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+
+ final Cheesery cheesery = new Cheesery();
+ cheesery.addCheese( new Cheese( "stilton", 15 ) );
+ cheesery.addCheese( new Cheese( "brie", 10 ) );
+
+ workingMemory.setGlobal( "cheesery", cheesery );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 2,
+ results.size() );
+ assertEquals( 2,
+ ((List)results.get(0)).size() );
+ assertEquals( 2,
+ ((List)results.get(1)).size() );
+ }
+
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_multipleFroms.drl 2007-07-14 21:22:36 UTC (rev 13512)
@@ -0,0 +1,16 @@
+package org.drools
+
+import java.util.ArrayList;
+
+global org.drools.Cheesery cheesery;
+global java.util.List results;
+
+rule MyRule
+ dialect "java"
+when
+ $i : ArrayList() from collect(Cheese() from cheesery.getCheeses())
+ $k : ArrayList() from collect(Cheese() from cheesery.getCheeses())
+then
+ results.add( $i );
+ results.add( $k );
+end
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-07-14 19:47:36 UTC (rev 13511)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2007-07-14 21:22:36 UTC (rev 13512)
@@ -58,8 +58,9 @@
// get builder for the pattern
final ReteooComponentBuilder builder = utils.getBuilderFor( sourcePattern );
- // save tuple source for later if needed
+ // save tuple source and current pattern offset for later if needed
final TupleSource tupleSource = context.getTupleSource();
+ final int currentPatternIndex = context.getCurrentPatternOffset();
// builds the source pattern
builder.build( context,
@@ -103,6 +104,7 @@
existSubNetwort ) ) );
// source pattern was bound, so nulling context
context.setObjectSource( null );
+ context.setCurrentPatternOffset( currentPatternIndex );
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-07-14 19:47:36 UTC (rev 13511)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2007-07-14 21:22:36 UTC (rev 13512)
@@ -56,8 +56,9 @@
// get builder for the pattern
final ReteooComponentBuilder builder = utils.getBuilderFor( sourcePattern );
- // save tuple source for later if needed
+ // save tuple source and pattern offset for later if needed
final TupleSource tupleSource = context.getTupleSource();
+ final int currentPatternIndex = context.getCurrentPatternOffset();
// builds the source pattern
builder.build( context,
@@ -97,6 +98,7 @@
existSubNetwort ) ) );
// source pattern was bound, so nulling context
context.setObjectSource( null );
+ context.setCurrentPatternOffset( currentPatternIndex );
}
/**
More information about the jboss-svn-commits
mailing list