[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