[jboss-svn-commits] JBL Code SVN: r18516 - in labs/jbossrules/trunk/drools-compiler/src: main/resources/org/drools/rule/builder/dialect/java and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 19 14:26:23 EST 2008
Author: tirelli
Date: 2008-02-19 14:26:23 -0500 (Tue, 19 Feb 2008)
New Revision: 18516
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateGlobals.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
Log:
JBRULES-1464: fixing accumulate problem when using only globals
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-02-19 19:11:22 UTC (rev 18515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-02-19 19:26:23 UTC (rev 18516)
@@ -380,6 +380,15 @@
}
final String[] classes = new String[this.generatedClassList.size()];
this.generatedClassList.toArray( classes );
+
+// if( true ) {
+// for( int i = 0; i < classes.length; i++ ) {
+// System.out.println("CLASS: "+classes[i]);
+// System.out.println("---------------------------");
+// System.out.println(new String( this.src.getBytes( classes[i] )));
+// System.out.println("===========================");
+// }
+// }
final CompilationResult result = this.compiler.compile( classes,
this.src,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel 2008-02-19 19:11:22 UTC (rev 18515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel 2008-02-19 19:26:23 UTC (rev 18516)
@@ -197,7 +197,7 @@
@end{}
((@{ruleClassName}.@{className})context).init(
- @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globals as identifier} @{identifier}@end{","} );
}
@@ -268,7 +268,7 @@
@end{}
return ((@{ruleClassName}.@{className})context).getResult(
- @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ @foreach{declarations as declr} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globals as identifier} @{identifier}@end{","} );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel 2008-02-19 19:11:22 UTC (rev 18515)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel 2008-02-19 19:26:23 UTC (rev 18516)
@@ -30,7 +30,7 @@
public @{className}() {
}
- public void init(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ public void init(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globalTypes as type, globals as identifier} @{type} @{identifier} @end{","}
) throws Exception {
@{initCode}
@@ -56,7 +56,7 @@
@{reverseCode}
}
- public Object getResult(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty}, at end{}
+ public Object getResult(@foreach{declarationTypes as type, declarations as declr} @{type} @{declr.identifier}@end{","}@if{globals != empty && declarations != empty}, at end{}
@foreach{globalTypes as type, globals as identifier}@{type} @{identifier} @end{","}
) throws Exception {
return ( @{resultCode} );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java 2008-02-19 19:11:22 UTC (rev 18515)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java 2008-02-19 19:26:23 UTC (rev 18516)
@@ -1124,4 +1124,34 @@
results.get( 0 ) );
}
+ public void testAccumulateGlobals() throws Exception {
+
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateGlobals.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm = ruleBase.newStatefulSession();
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+ wm.setGlobal( "globalValue",
+ new Integer(50) );
+
+ wm.insert( new Cheese( "stilton",
+ 10 ) );
+ wm.insert( new Cheese( "brie",
+ 5 ) );
+ wm.insert( new Cheese( "provolone",
+ 150 ) );
+ wm.insert( new Cheese( "brie",
+ 20 ) );
+
+ wm.fireAllRules();
+
+ assertEquals( 1,
+ results.size() );
+ assertEquals( new Integer( 100 ),
+ results.get( 0 ) );
+ }
}
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateGlobals.drl (from rev 18515, labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateGlobals.drl)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateGlobals.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateGlobals.drl 2008-02-19 19:26:23 UTC (rev 18516)
@@ -0,0 +1,16 @@
+package org.drools;
+
+global java.util.List results;
+global Integer globalValue;
+
+rule "Accumulate globals"
+ when
+ $totalAmount : Number() from accumulate( Cheese( type == "brie" ),
+ init( int total = 0; ),
+ action( total += globalValue.intValue(); ),
+ reverse( total -= globalValue.intValue(); ),
+ result( new Integer( total ) ) );
+ then
+ results.add($totalAmount);
+end
+
More information about the jboss-svn-commits
mailing list