[jboss-svn-commits] JBL Code SVN: r9410 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/semantics/java/builder and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 9 06:59:41 EST 2007
Author: tirelli
Date: 2007-02-09 06:59:41 -0500 (Fri, 09 Feb 2007)
New Revision: 9410
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/BuildUtils.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Primitives.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Log:
JBRULES-641: fixing suport for array binding
Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java (from rev 9409, labs/jbossrules/branches/3.0.x/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/DeclarationTypeFixer.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package org.drools.semantics.java;
+
+import org.drools.rule.Declaration;
+
+/**
+ * @author fburlet
+ * @author gdupriez
+ *
+ */
+public class DeclarationTypeFixer {
+
+ public String fix(Declaration declaration) {
+ Class classType = declaration.getExtractor().getExtractToClass();
+ if (classType.isArray()) {
+ return classType.getComponentType().getName().concat("[]");
+ } else {
+ // Does this replacement usefull in the declaration type ??
+ return classType.getName().replace('$', '.');
+ }
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-09 11:33:36 UTC (rev 9409)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -111,6 +111,7 @@
this.utils = new BuildUtils( functionFixer,
new KnowledgeHelperFixer(),
+ new DeclarationTypeFixer(),
new JavaExprAnalyzer(),
typeResolver,
cache,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/BuildUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/BuildUtils.java 2007-02-09 11:33:36 UTC (rev 9409)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/BuildUtils.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -30,6 +30,7 @@
import org.drools.compiler.RuleError;
import org.drools.lang.descr.BaseDescr;
import org.drools.rule.Declaration;
+import org.drools.semantics.java.DeclarationTypeFixer;
import org.drools.semantics.java.FunctionFixer;
import org.drools.semantics.java.JavaExprAnalyzer;
import org.drools.semantics.java.KnowledgeHelperFixer;
@@ -52,6 +53,8 @@
private final KnowledgeHelperFixer knowledgeHelperFixer;
private final FunctionFixer functionFixer;
+
+ private final DeclarationTypeFixer typeFixer;
private final JavaExprAnalyzer analyzer;
@@ -63,12 +66,14 @@
public BuildUtils(final FunctionFixer functionFixer,
final KnowledgeHelperFixer knowledgeHelperFixer,
+ final DeclarationTypeFixer typeFixer,
final JavaExprAnalyzer analyzer,
final TypeResolver typeResolver,
final ClassFieldExtractorCache classFieldExtractorCache,
final Map builders ) {
this.functionFixer = functionFixer;
this.knowledgeHelperFixer = knowledgeHelperFixer;
+ this.typeFixer = typeFixer;
this.analyzer = analyzer;
this.typeResolver = typeResolver;
this.classFieldExtractorCache = classFieldExtractorCache;
@@ -124,8 +129,7 @@
final String[] globals) {
final String[] declarationTypes = new String[declarations.length];
for ( int i = 0, size = declarations.length; i < size; i++ ) {
- declarationTypes[i] = declarations[i].getExtractor().getExtractToClass().getName().replace( '$',
- '.' );
+ declarationTypes[i] = this.typeFixer.fix( declarations[i] );
}
final List globalTypes = new ArrayList( globals.length );
@@ -220,4 +224,11 @@
return (ConditionalElementBuilder) builders.get( descr );
}
+ /**
+ * @return the typeFixer
+ */
+ public DeclarationTypeFixer getTypeFixer() {
+ return typeFixer;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java 2007-02-09 11:33:36 UTC (rev 9409)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -381,8 +381,7 @@
final String[] localDeclarationTypes = new String[localDeclarations.length];
for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
- localDeclarationTypes[i] = localDeclarations[i].getExtractor().getExtractToClass().getName().replace( '$',
- '.' );
+ localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
}
st.setAttribute( "localDeclarations",
@@ -599,8 +598,7 @@
final String[] localDeclarationTypes = new String[localDeclarations.length];
for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
- localDeclarationTypes[i] = localDeclarations[i].getExtractor().getExtractToClass().getName().replace( '$',
- '.' );
+ localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
}
st.setAttribute( "localDeclarations",
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Primitives.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Primitives.java 2007-02-09 11:33:36 UTC (rev 9409)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Primitives.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -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/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-02-09 11:33:36 UTC (rev 9409)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-02-09 11:59:41 UTC (rev 9410)
@@ -3848,5 +3848,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());
+
+ }
+
}
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl (from rev 9409, labs/jbossrules/branches/3.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_primitiveArray.drl 2007-02-09 11:59:41 UTC (rev 9410)
@@ -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
More information about the jboss-svn-commits
mailing list