[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