[jboss-svn-commits] JBL Code SVN: r13273 - in labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src: main/java/org/drools/rule/builder/dialect/java and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 9 16:07:56 EDT 2007


Author: pombredanne
Date: 2007-07-09 16:07:56 -0400 (Mon, 09 Jul 2007)
New Revision: 13273

Added:
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_functionCallingFunction.drl
Modified:
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
   labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
Ported r13270 from trunk to branch mvel-tooling-2007-06-30

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-07-09 19:46:06 UTC (rev 13272)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-07-09 20:07:56 UTC (rev 13273)
@@ -24,7 +24,6 @@
 import java.util.List;
 import java.util.Set;
 
-import org.drools.RuntimeDroolsException;
 import org.drools.base.ClassFieldExtractorCache;
 import org.drools.base.ClassTypeResolver;
 import org.drools.base.TypeResolver;
@@ -254,6 +253,14 @@
             for ( final Iterator it = packageDescr.getFactTemplates().iterator(); it.hasNext(); ) {
                 addFactTemplate( (FactTemplateDescr) it.next() );
             }
+            
+            // add static imports for all functions
+            for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
+                FunctionDescr functionDescr = (FunctionDescr) it.next();
+                final String functionClassName = this.pkg.getName() + "." + ucFirst( functionDescr.getName() );
+                functionDescr.setClassName( functionClassName );
+                this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
+            }
 
             // iterate and compile
             for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
@@ -582,4 +589,7 @@
 
     }
 
+    private String ucFirst(final String name) {
+        return name.toUpperCase().charAt( 0 ) + name.substring( 1 );
+    }
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2007-07-09 19:46:06 UTC (rev 13272)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2007-07-09 20:07:56 UTC (rev 13273)
@@ -434,9 +434,6 @@
                             final TypeResolver typeResolver) {
 
         final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
-        this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
-        functionDescr.setClassName( functionClassName );
-
         this.pkg.addFunction( functionDescr.getName() );
 
         final String functionSrc = getFunctionBuilder().build( this.pkg,

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-07-09 19:46:06 UTC (rev 13272)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaFunctionBuilder.java	2007-07-09 20:07:56 UTC (rev 13273)
@@ -48,6 +48,9 @@
         vars.put( "imports",
                   pkg.getImports() );
 
+        vars.put( "staticImports",
+                  pkg.getStaticImports() );
+
         vars.put( "className",
                   StringUtils.ucFirst( functionDescr.getName() ) );
 

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2007-07-09 19:46:06 UTC (rev 13272)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaFunction.mvel	2007-07-09 20:07:56 UTC (rev 13273)
@@ -4,6 +4,10 @@
 import @{importEntry};
 @end{}
 
+ at foreach{staticImports as importEntry}
+import static @{importEntry};
+ at end{}
+
 public class @{className} {
     private static final long serialVersionUID  = 400L;
         

Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-07-09 19:46:06 UTC (rev 13272)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-07-09 20:07:56 UTC (rev 13273)
@@ -64,7 +64,6 @@
 import org.drools.WorkingMemory;
 import org.drools.Cheesery.Maturity;
 import org.drools.common.AbstractWorkingMemory;
-import org.drools.common.DroolsObjectInputStream;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
@@ -533,7 +532,7 @@
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "nested_fields.drl" ) ) );
 
-        assertFalse(builder.hasErrors());
+        assertFalse(builder.getErrors().toString(), builder.hasErrors());
         
         DrlParser parser = new DrlParser();
         PackageDescr desc = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "nested_fields.drl" ) ) );
@@ -3172,5 +3171,26 @@
         assertEquals( "2", results.get( 1 ));
 
     }
+    
+    public void testFunctionCallingFunction() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_functionCallingFunction.drl" ) ) );
+        final Package pkg = builder.getPackage();
 
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+        final List list = new ArrayList();
+        workingMemory.setGlobal( "results",
+                                 list );
+
+        workingMemory.fireAllRules();
+
+        assertEquals( 1,
+                      list.size() );
+    }
+
+    
+
 }
\ No newline at end of file

Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_functionCallingFunction.drl (from rev 13270, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_functionCallingFunction.drl)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_functionCallingFunction.drl	                        (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_functionCallingFunction.drl	2007-07-09 20:07:56 UTC (rev 13273)
@@ -0,0 +1,18 @@
+package org.drools;
+
+global java.util.List results;
+
+function boolean f1() {
+    return f2();
+}
+
+function boolean f2() {
+    return true;
+}
+
+rule "X"
+when
+    eval( f1() )
+then
+    results.add( "OK" );
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list