[jboss-svn-commits] JBL Code SVN: r9409 - in labs/jbossrules/branches/3.0.x/drools-compiler/src: test/java/org/drools and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 9 06:33:37 EST 2007
Author: tirelli
Date: 2007-02-09 06:33:36 -0500 (Fri, 09 Feb 2007)
New Revision: 9409
Added:
labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java
labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl
Modified:
labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/Primitives.java
labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Log:
JBRULES-641: Fixing bug in generated code when binding arrays
Added: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java (rev 0)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java 2007-02-09 11:33:36 UTC (rev 9409)
@@ -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('$', '.');
+ }
+ }
+}
Property changes on: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ id author date revision
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-09 07:24:55 UTC (rev 9408)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-09 11:33:36 UTC (rev 9409)
@@ -29,7 +29,6 @@
import org.antlr.stringtemplate.StringTemplateGroup;
import org.antlr.stringtemplate.language.AngleBracketTemplateLexer;
import org.drools.RuntimeDroolsException;
-import org.drools.base.ClassFieldExtractor;
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.ClassObjectType;
import org.drools.base.EvaluatorFactory;
@@ -112,7 +111,8 @@
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();
private ClassFieldExtractorCache classFieldExtractorCache;
@@ -680,8 +680,7 @@
st.setAttribute( "declaration",
declaration );
st.setAttribute( "declarationType",
- ((ClassObjectType) declaration.getObjectType()).getClassType().getName().replace( '$',
- '.' ) );
+ RuleBuilder.declarationTypeFixer.fix(declaration) );
setStringTemplateAttributes( st,
declarations,
@@ -711,8 +710,7 @@
st.setAttribute( "declaration",
declaration );
st.setAttribute( "declarationType",
- ((ClassObjectType) declaration.getObjectType()).getClassType().getName().replace( '$',
- '.' ) );
+ RuleBuilder.declarationTypeFixer.fix(declaration) );
setStringTemplateAttributes( st,
declarations,
@@ -896,8 +894,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] = RuleBuilder.declarationTypeFixer.fix(declarations[i]);
}
final List globalTypes = new ArrayList( globals.length );
Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/Primitives.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/Primitives.java 2007-02-09 07:24:55 UTC (rev 9408)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/Primitives.java 2007-02-09 11:33:36 UTC (rev 9409)
@@ -29,6 +29,7 @@
private float floatPrimitive;
private float doublePrimitive;
private Object[] arrayAttribute;
+ private int[] primitiveArrayAttribute;
public boolean isBooleanPrimitive() {
return this.booleanPrimitive;
@@ -102,4 +103,18 @@
this.arrayAttribute = arrayAttribute;
}
+ /**
+ * @return the primitiveArrayAttribute
+ */
+ public int[] getPrimitiveArrayAttribute() {
+ return primitiveArrayAttribute;
+ }
+
+ /**
+ * @param primitiveArrayAttribute the primitiveArrayAttribute to set
+ */
+ public void setPrimitiveArrayAttribute(int[] primitiveArrayAttribute) {
+ this.primitiveArrayAttribute = primitiveArrayAttribute;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-02-09 07:24:55 UTC (rev 9408)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-02-09 11:33:36 UTC (rev 9409)
@@ -3136,5 +3136,29 @@
}
+ public void testPrimitiveArray() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_primitiveArray.drl" ) ) );
+ final Package pkg = builder.getPackage();
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+ final List result = new ArrayList();
+ workingMemory.setGlobal( "result",
+ result );
+
+ final Primitives p1 = new Primitives();
+ p1.setPrimitiveArrayAttribute( new int[] { 1, 2, 3 } );
+
+ workingMemory.assertObject( p1 );
+
+ workingMemory.fireAllRules();
+ assertEquals( 1,
+ result.size() );
+ assertEquals( 3,
+ ((Integer)result.get( 0 )).intValue());
+
+ }
+
}
Added: labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl
===================================================================
--- labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl (rev 0)
+++ labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl 2007-02-09 11:33:36 UTC (rev 9409)
@@ -0,0 +1,10 @@
+package org.drools;
+
+global java.util.List result;
+
+rule "Test Array"
+ when
+ Primitives( $array : primitiveArrayAttribute -> (($array != null) && ($array.length > 0)))
+ then
+ result.add( new Integer( $array.length ) );
+end
\ No newline at end of file
Property changes on: labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list