[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