[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