Index: drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java =================================================================== --- drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java (revision 0) +++ drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java (revision 0) @@ -0,0 +1,25 @@ +/** + * + */ +package org.drools.semantics.java; + +import org.drools.base.ClassObjectType; +import org.drools.rule.Declaration; + +/** + * @author fburlet + * @author gdupriez + * + */ +public class DeclarationTypeFixer { + + public String fix(Declaration declaration) { + Class classType = ((ClassObjectType) declaration.getObjectType()).getClassType(); + if (classType.isArray()) { + return classType.getComponentType().getName().concat("[]"); + } else { + // Does this replacement usefull in the declaration type ?? + return classType.getName().replace('$', '.'); + } + } +} Index: drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java =================================================================== --- drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java (revision 9334) +++ drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java (working copy) @@ -112,6 +112,7 @@ private static final KnowledgeHelperFixer knowledgeHelperFixer = new KnowledgeHelperFixer(); private static final FunctionFixer functionFixer = new FunctionFixer(); + private static final DeclarationTypeFixer declarationTypeFixer = new DeclarationTypeFixer(); // @todo move to an interface so it can work as a decorator private final JavaExprAnalyzer analyzer = new JavaExprAnalyzer(); @@ -680,8 +681,7 @@ st.setAttribute( "declaration", declaration ); st.setAttribute( "declarationType", - ((ClassObjectType) declaration.getObjectType()).getClassType().getName().replace( '$', - '.' ) ); + RuleBuilder.declarationTypeFixer.fix(declaration)); setStringTemplateAttributes( st, declarations, @@ -711,8 +711,7 @@ st.setAttribute( "declaration", declaration ); st.setAttribute( "declarationType", - ((ClassObjectType) declaration.getObjectType()).getClassType().getName().replace( '$', - '.' ) ); + RuleBuilder.declarationTypeFixer.fix(declaration)); setStringTemplateAttributes( st, declarations, @@ -896,8 +895,7 @@ final String text) { final String[] declarationTypes = new String[declarations.length]; for ( int i = 0, size = declarations.length; i < size; i++ ) { - declarationTypes[i] = ((ClassObjectType) declarations[i].getObjectType()).getClassType().getName().replace( '$', - '.' ); + declarationTypes[i] = declarationTypeFixer.fix(declarations[i]); } final List globalTypes = new ArrayList( globals.length );