[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