[jboss-svn-commits] JBL Code SVN: r18416 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder/dialect/java and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 8 08:23:44 EST 2008
Author: mark.proctor at jboss.com
Date: 2008-02-08 08:23:44 -0500 (Fri, 08 Feb 2008)
New Revision: 18416
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
Log:
JBRULES-1450 De-couple drools-core from the java dialect's PackageCompilationData
-Added a preAddFunction method as we need to add static imports to the pakage before hand, for the java dialect to work.
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java 2008-02-08 13:14:19 UTC (rev 18415)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java 2008-02-08 13:23:44 UTC (rev 18416)
@@ -30,19 +30,20 @@
import org.drools.rule.builder.SalienceBuilder;
/**
- * A Dialect implementation handles the building and execution of code expressions and blocks for a rule.
- * This api is considered unstable, and subject to change. Those wishing to implement their own dialects
- * should look ove the MVEL and Java dialect implementations.
- *
+ * A Dialect implementation handles the building and execution of code
+ * expressions and blocks for a rule. This api is considered unstable, and
+ * subject to change. Those wishing to implement their own dialects should look
+ * ove the MVEL and Java dialect implementations.
+ *
*/
public interface Dialect {
String getId();
-
+
void init(PackageBuilder builder);
-
+
// this is needed because some dialects use other dialects
// to build complex expressions. Example: java dialect uses MVEL
- // to execute complex expressions
+ // to execute complex expressions
String getExpressionDialectName();
Map getBuilders();
@@ -66,13 +67,13 @@
ReturnValueBuilder getReturnValueBuilder();
ConsequenceBuilder getConsequenceBuilder();
-
+
ActionBuilder getActionBuilder();
-
+
ReturnValueEvaluatorBuilder getReturnValueEvaluatorBuilder();
RuleClassBuilder getRuleClassBuilder();
-
+
ProcessClassBuilder getProcessClassBuilder();
FromBuilder getFromBuilder();
@@ -94,7 +95,7 @@
void compileAll();
void addRule(final RuleBuildContext context);
-
+
void addProcess(final ProcessBuildContext context);
void addFunction(final FunctionDescr functionDescr,
@@ -109,7 +110,7 @@
void init(Package pkg);
void init(RuleDescr ruleDescr);
-
+
void init(ProcessDescr processDescr);
/**
@@ -121,18 +122,21 @@
/**
* Returns the list<String> of all used identifiers
+ *
* @return
*/
public List getIdentifiers();
/**
* Returns the array of lists<String> of bound identifiers
+ *
* @return
*/
public List[] getBoundIdentifiers();
/**
* Returns the list<String> of not bounded identifiers
+ *
* @return
*/
public List getNotBoundedIdentifiers();
@@ -146,7 +150,10 @@
}
- void postCompileAddFunction(FunctionDescr functionDescr,
- TypeResolver typeResolver);
+ void postCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver);
+ void preCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver);
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-02-08 13:14:19 UTC (rev 18415)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-02-08 13:23:44 UTC (rev 18416)
@@ -292,6 +292,12 @@
}
if ( !packageDescr.getFunctions().isEmpty() ) {
+
+ for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
+ FunctionDescr functionDescr = (FunctionDescr) it.next();
+ preCompileAddFunction( functionDescr );
+ }
+
// iterate and compile
for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
// inherit the dialect from the package
@@ -397,6 +403,10 @@
getTypeResolver() );
}
+ private void preCompileAddFunction(final FunctionDescr functionDescr) {
+ this.dialect.preCompileAddFunction( functionDescr, getTypeResolver() );
+ }
+
private void postCompileAddFunction(final FunctionDescr functionDescr) {
this.dialect.postCompileAddFunction( functionDescr, getTypeResolver() );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-02-08 13:14:19 UTC (rev 18415)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2008-02-08 13:23:44 UTC (rev 18416)
@@ -78,9 +78,9 @@
implements
Dialect {
- public static final String ID = "java";
+ public static final String ID = "java";
- private final static String EXPRESSION_DIALECT_NAME = "mvel";
+ private final static String EXPRESSION_DIALECT_NAME = "mvel";
// builders
private static final PatternBuilder pattern = new PatternBuilder();
private static final QueryBuilder query = new QueryBuilder();
@@ -101,23 +101,23 @@
private static final EntryPointBuilder entrypoint = new EntryPointBuilder();
//
- private KnowledgeHelperFixer knowledgeHelperFixer;
- private DeclarationTypeFixer typeFixer;
- private JavaExprAnalyzer analyzer;
+ private KnowledgeHelperFixer knowledgeHelperFixer;
+ private DeclarationTypeFixer typeFixer;
+ private JavaExprAnalyzer analyzer;
- private JavaDialectConfiguration configuration;
+ private JavaDialectConfiguration configuration;
- private Package pkg;
- private JavaCompiler compiler;
- private List generatedClassList;
- private MemoryResourceReader src;
- private PackageStore packageStoreWrapper;
- private Map errorHandlers;
- private List results;
- private PackageBuilder packageBuilder;
+ private Package pkg;
+ private JavaCompiler compiler;
+ private List generatedClassList;
+ private MemoryResourceReader src;
+ private PackageStore packageStoreWrapper;
+ private Map errorHandlers;
+ private List results;
+ private PackageBuilder packageBuilder;
- private TypeResolver typeResolver;
- private ClassFieldExtractorCache classFieldExtractorCache;
+ private TypeResolver typeResolver;
+ private ClassFieldExtractorCache classFieldExtractorCache;
// a map of registered builders
private static Map builders;
@@ -207,9 +207,10 @@
this.src = new MemoryResourceReader();
this.generatedClassList = new ArrayList();
-
+
JavaDialectData data = new JavaDialectData( this.pkg.getDialectDatas() );
- this.pkg.getDialectDatas().setDialectData( ID, data );
+ this.pkg.getDialectDatas().setDialectData( ID,
+ data );
this.packageStoreWrapper = new PackageStore( data,
this.results );
@@ -551,6 +552,9 @@
//System.out.println( functionDescr + " : " + typeResolver );
final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
functionDescr.setClassName( functionClassName );
+
+ this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
+
Function function = new Function( functionDescr.getName(),
this.ID );
this.pkg.addFunction( function );
@@ -572,17 +576,21 @@
mapping.setStartLine( functionDescr.getLine() );
mapping.setOffset( functionDescr.getOffset() );
this.pkg.getDialectDatas().getLineMappings().put( functionClassName,
- mapping );
+ mapping );
}
-
- public void postCompileAddFunction(FunctionDescr functionDescr,
- TypeResolver typeResolver) {
+
+ public void preCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
-
- this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
-
+ this.pkg.addStaticImport( functionClassName + "." + functionDescr.getName() );
+ }
+
+ public void postCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
+ final String functionClassName = this.pkg.getName() + "." + StringUtils.ucFirst( functionDescr.getName() );
+
this.packageBuilder.getDialectRegistry().addStaticImport( functionClassName + "." + functionDescr.getName() );
- }
+ }
/**
* This adds a compile "task" for when the compiler of
@@ -687,4 +695,5 @@
public String getId() {
return ID;
}
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-02-08 13:14:19 UTC (rev 18415)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-02-08 13:23:44 UTC (rev 18416)
@@ -284,12 +284,17 @@
this.data.addFunction( function );
}
}
-
- public void postCompileAddFunction(FunctionDescr functionDescr,
- TypeResolver typeResolver) {
-
- }
+ public void preCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
+
+ }
+
+ public void postCompileAddFunction(FunctionDescr functionDescr,
+ TypeResolver typeResolver) {
+
+ }
+
public void addImport(String importEntry) {
if ( importEntry.endsWith( ".*" ) ) {
importEntry = importEntry.substring( 0,
More information about the jboss-svn-commits
mailing list