[jboss-svn-commits] JBL Code SVN: r26515 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/rule/builder/dialect/java and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 13 16:41:48 EDT 2009


Author: tirelli
Date: 2009-05-13 16:41:48 -0400 (Wed, 13 May 2009)
New Revision: 26515

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
Log:
JBRULES-2058: fixing accumulate code generation

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2009-05-13 18:30:19 UTC (rev 26514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2009-05-13 20:41:48 UTC (rev 26515)
@@ -86,18 +86,18 @@
 
             final List[] usedIdentifiers = analysis.getBoundIdentifiers();
 
-            final List tupleDeclarations = new ArrayList();
+            final List<Declaration> tupleDeclarations = new ArrayList<Declaration>();
             for ( int i = 0, size = usedIdentifiers[0].size(); i < size; i++ ) {
                 tupleDeclarations.add( context.getDeclarationResolver().getDeclaration(context.getRule(), (String) usedIdentifiers[0].get( i ) ) );
             }
 
-            final Declaration[] previousDeclarations = (Declaration[]) tupleDeclarations.toArray( new Declaration[tupleDeclarations.size()] );
+            final Declaration[] previousDeclarations = tupleDeclarations.toArray( new Declaration[tupleDeclarations.size()] );
             final String[] requiredGlobals = (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] );
             final Declaration[] sourceDeclArr = (Declaration[]) source.getOuterDeclarations().values().toArray( new Declaration[0] );
 
             final String className = "accumulateExpression" + context.getNextId();
 
-            final Map map = createVariableContext( className,
+            final Map<String, Object> map = createVariableContext( className,
                                                    (String) accumDescr.getExpression(),
                                                    context,
                                                    previousDeclarations,
@@ -159,14 +159,14 @@
 
             final Declaration[] declarations = new Declaration[requiredDeclarations.size()];
             int i = 0;
-            for( Iterator it = requiredDeclarations.iterator(); it.hasNext(); i++ ) {
-                declarations[i] = context.getDeclarationResolver().getDeclaration(context.getRule(), (String) it.next() );
+            for( Iterator<String> it = requiredDeclarations.iterator(); it.hasNext(); i++ ) {
+                declarations[i] = context.getDeclarationResolver().getDeclaration(context.getRule(), it.next() );
             }
             final Declaration[] sourceDeclArr = (Declaration[]) source.getOuterDeclarations().values().toArray( new Declaration[0] );
 
-            final String[] globals = (String[]) requiredGlobals.toArray( new String[requiredGlobals.size()] );
+            final String[] globals = requiredGlobals.toArray( new String[requiredGlobals.size()] );
 
-            final Map map = createVariableContext( className,
+            final Map<String, Object> map = createVariableContext( className,
                                                    null,
                                                    context,
                                                    declarations,
@@ -188,10 +188,10 @@
             String[] attributesTypes = new String[initCodeAnalysis.getLocalVariablesMap().size()];
             String[] attributes = new String[initCodeAnalysis.getLocalVariablesMap().size()];
             int index = 0;
-            for ( Iterator it = initCodeAnalysis.getLocalVariablesMap().entrySet().iterator(); it.hasNext(); ) {
-                Map.Entry entry = (Map.Entry) it.next();
-                attributes[index] = (String) entry.getKey();
-                attributesTypes[index] = ((JavaLocalDeclarationDescr) entry.getValue()).getType();
+            for ( Map.Entry<String, JavaLocalDeclarationDescr> entry : initCodeAnalysis.getLocalVariablesMap().entrySet() ) {
+                attributes[index] = entry.getKey();
+                attributesTypes[index] = entry.getValue().getType();
+                index++;
             }
 
             map.put( "attributes",

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	2009-05-13 18:30:19 UTC (rev 26514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2009-05-13 20:41:48 UTC (rev 26515)
@@ -406,14 +406,7 @@
             for ( final Iterator iter = errors.iterator(); iter.hasNext(); ) {
                 final ErrorHandler handler = (ErrorHandler) iter.next();
                 if ( handler.isInError() ) {
-                    if ( !(handler instanceof RuleInvokerErrorHandler) ) {
-                        this.results.add( handler.getError() );
-                    } else {
-                        //we don't really want to report invoker errors.
-                        //mostly as they can happen when there is a syntax error in the RHS
-                        //and otherwise, it is a programmatic error in drools itself.
-                        //throw new RuntimeException( "Warning: An error occurred compiling a semantic invoker. Errors should have been reported elsewhere." + handler.getError() );
-                    }
+                    this.results.add( handler.getError() );
                 }
             }
         }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java	2009-05-13 18:30:19 UTC (rev 26514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java	2009-05-13 20:41:48 UTC (rev 26515)
@@ -42,7 +42,7 @@
         cheeseDescr.addConstraint( price );
         accumDescr.setInputPattern( cheeseDescr );
         
-        accumDescr.setInitCode( "int x = 0;" );
+        accumDescr.setInitCode( "int x = 0; int y = 0;" );
         accumDescr.setActionCode( "x += $price;" );
         accumDescr.setResultCode( "new Integer( x )" );
         
@@ -59,10 +59,12 @@
         RuleBuildContext context = new RuleBuildContext( pkgBuilder, ruleDescr, dialectRegistry, pkg, dialect);
         
         Accumulate accumulate = (Accumulate) builder.build( context, accumDescr );
+        String generatedCode = (String) context.getMethods().get( 0 );
         
-        dialect.compileAll();
+        assertTrue( generatedCode.contains( "private int x;" ) );
+        assertTrue( generatedCode.contains( "private int y;" ) );
+        assertTrue( generatedCode.contains( "x = 0;y = 0;" ) );
         
-        assertTrue( context.getErrors().toString(), context.getErrors().isEmpty() );
 //        System.out.println( context.getInvokers() );
 //        System.out.println( context.getMethods() );
     }




More information about the jboss-svn-commits mailing list