[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