[jboss-svn-commits] JBL Code SVN: r13515 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/rule/builder and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 14 19:55:04 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-07-14 19:55:03 -0400 (Sat, 14 Jul 2007)
New Revision: 13515

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java
Removed:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.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/java/JavaEvalBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
   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/MVELEvalBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
Log:
JBRULES-1010 pluggeable Dialect Configuration.

Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java (from rev 13482, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/Dialect.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -0,0 +1,119 @@
+package org.drools.compiler;
+
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.TypeResolver;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Package;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.PatternBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.QueryBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.SalienceBuilder;
+
+public interface Dialect {
+    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 
+    String getExpressionDialectName();
+
+    Map getBuilders();
+
+    TypeResolver getTypeResolver();
+
+    ClassFieldExtractorCache getClassFieldExtractorCache();
+
+    SalienceBuilder getSalienceBuilder();
+
+    PatternBuilder getPatternBuilder();
+
+    QueryBuilder getQueryBuilder();
+
+    RuleConditionBuilder getEvalBuilder();
+
+    AccumulateBuilder getAccumulateBuilder();
+
+    PredicateBuilder getPredicateBuilder();
+
+    ReturnValueBuilder getReturnValueBuilder();
+
+    ConsequenceBuilder getConsequenceBuilder();
+
+    RuleClassBuilder getRuleClassBuilder();
+
+    FromBuilder getFromBuilder();
+
+    RuleConditionBuilder getBuilder(Class clazz);
+
+    AnalysisResult analyzeExpression(final RuleBuildContext context,
+                                     final BaseDescr descr,
+                                     final Object content);
+
+    AnalysisResult analyzeBlock(final RuleBuildContext context,
+                                final BaseDescr descr,
+                                final String text);
+
+    void compileAll();
+
+    void addRule(final RuleBuildContext context);
+
+    void addFunction(final FunctionDescr functionDescr,
+                     TypeResolver typeResolver);
+
+    public void addImport(String importEntry);
+
+    public void addStaticImport(String importEntry);
+
+    List getResults();
+
+    void init(Package pkg);
+
+    void init(RuleDescr ruleDescr);
+
+    /**
+     * An interface with the results from the expression/block analysis
+     * 
+     * @author etirelli
+     */
+    public static interface AnalysisResult {
+
+        /**
+         * 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();
+
+        /**
+         * Returns the list<String> of declared local variables
+         * 
+         * @return
+         */
+        public List getLocalVariables();
+
+    }
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectConfiguration.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -0,0 +1,10 @@
+package org.drools.compiler;
+
+public interface DialectConfiguration {    
+    
+    public void init(PackageBuilderConfiguration  configuration);
+    
+    public Dialect getDialect();
+    
+    public PackageBuilderConfiguration getPackageBuilderConfiguration();
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DialectRegistry.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -6,7 +6,6 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.rule.builder.Dialect;
 
 public class DialectRegistry {
     private Map map;
@@ -15,20 +14,27 @@
         this.map = new HashMap();
     }
 
-    public void addDialect(final String name,
-                           final Dialect dialect) {
+    public void addDialectConfiguration(final String name,
+                           final DialectConfiguration dialect) {
         this.map.put( name,
                       dialect );
     }
 
-    public Dialect getDialect(final String name) {
-        return (Dialect) this.map.get( name );
+    public DialectConfiguration getDialectConfiguration(final String name) {
+        return (DialectConfiguration) this.map.get( name );
     }
     
+    public void initAll(PackageBuilder builder) {
+        for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
+            DialectConfiguration dialect = ( DialectConfiguration ) it.next();
+            dialect.getDialect().init( builder );
+        }        
+    }
+    
     public void compileAll() {
         for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
-            Dialect dialect = ( Dialect ) it.next();
-            dialect.compileAll();
+            DialectConfiguration dialect = ( DialectConfiguration ) it.next();
+            dialect.getDialect().compileAll();
         }
     }
     
@@ -41,23 +47,26 @@
             list = new ArrayList();
         }
         for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
-            Dialect dialect = ( Dialect ) it.next();
-            list.addAll( dialect.getResults() );
+            DialectConfiguration dialect = ( DialectConfiguration ) it.next();
+            List results = dialect.getDialect().getResults();
+            if ( results != null ) {
+                list.addAll( results );
+            }
         }        
         return list;
     }
 
     public void addImport(String importEntry) {
         for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
-            Dialect dialect = ( Dialect ) it.next();
-            dialect.addImport( importEntry );
+            DialectConfiguration dialect = ( DialectConfiguration ) it.next();
+            dialect.getDialect().addImport( importEntry );
         }
     }
     
     public void addStaticImport(String staticImportEntry) {
         for ( Iterator it = this.map.values().iterator(); it.hasNext(); ) {
-            Dialect dialect = ( Dialect ) it.next();
-            dialect.addStaticImport( staticImportEntry );
+            DialectConfiguration dialect = ( DialectConfiguration ) it.next();
+            dialect.getDialect().addStaticImport( staticImportEntry );
         }        
     }
     

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	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -44,7 +44,6 @@
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.RuleBuilder;
 import org.drools.ruleflow.common.core.Process;
@@ -72,7 +71,7 @@
 
     private Dialect                     dialect;
 
-    private DialectRegistry             dialects;
+//    private DialectRegistry             dialects;
 
     private ProcessBuilder              processBuilder;
 
@@ -126,9 +125,13 @@
             this.typeResolver = new ClassTypeResolver( new ArrayList(),
                                                        this.configuration.getClassLoader() );
         }
+        this.configuration.getDialectRegistry().initAll( this );
+        if ( this.pkg != null ) {
+            initDialectPackage( pkg );            
+        }
+        
+        this.dialect = this.configuration.getDefaultDialect();
 
-        this.dialects = configuration.buildDialectRegistry( this );
-        this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
     }
 
     /**
@@ -226,18 +229,15 @@
         
         // The Package does not have a default dialect, so set it
         if ( dialectName == null && this.dialect == null ) {
-                dialectName = configuration.getDefaultDialect();
-                this.dialect = this.dialects.getDialect( dialectName );     
+                this.dialect = this.configuration.getDefaultDialect();
         } 
             
         if ( dialectName != null ) {
-            this.dialect = this.dialects.getDialect( dialectName );
+            this.dialect = this.configuration.getDialectRegistry().getDialectConfiguration( dialectName ).getDialect();
         } else if ( this.dialect == null ) {
-            this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );               
+            this.dialect = this.configuration.getDefaultDialect();
         }
-        
-           
-
+                   
         if ( this.pkg != null ) {
             // mergePackage( packageDescr ) ;
             mergePackage( this.pkg,
@@ -273,8 +273,8 @@
             }
         }
 
-        this.dialects.compileAll();
-        this.results = this.dialects.addResults( this.results );
+        this.configuration.getDialectRegistry().compileAll();
+        this.results = this.configuration.getDialectRegistry().addResults( this.results );
     }
 
     private void validatePackageName(final PackageDescr packageDescr) {
@@ -308,16 +308,21 @@
         final Package pkg = new Package( packageDescr.getName(),
                                          this.configuration.getClassLoader() );       
 
-        for ( Iterator it = this.dialects.iterator(); it.hasNext(); ) {
-            Dialect dialect = ( Dialect ) it.next();
-            dialect.init( pkg );
-        }
+       initDialectPackage( pkg );
 
         mergePackage( pkg,
                       packageDescr );
 
         return pkg;
     }
+    
+    private void initDialectPackage(Package pkg) {
+        for ( Iterator it = this.configuration.getDialectRegistry().iterator(); it.hasNext(); ) {
+            Dialect dialect = (( DialectConfiguration ) it.next()).getDialect();
+            dialect.init( pkg );
+        }
+        
+    }
 
     private void mergePackage(final Package pkg,
                               final PackageDescr packageDescr) {
@@ -332,12 +337,12 @@
             String importEntry = ((ImportDescr) it.next()).getTarget();
             pkg.addImport( importEntry );
             this.typeResolver.addImport( importEntry );            
-            this.dialects.addImport( importEntry );
+            this.configuration.getDialectRegistry().addImport( importEntry );
         }
 
         for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
             String importEntry = ((FunctionImportDescr) it.next()).getTarget();
-            this.dialects.addStaticImport( importEntry );
+            this.configuration.getDialectRegistry().addStaticImport( importEntry );
             pkg.addStaticImport( importEntry );
         }
 
@@ -399,7 +404,7 @@
         RuleBuildContext context = new RuleBuildContext( this.configuration,
                                                          pkg,
                                                          ruleDescr,
-                                                         this.dialects,
+                                                         this.configuration.getDialectRegistry(),
                                                          this.dialect );
         this.builder.build( context );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -27,7 +27,6 @@
 
 import org.drools.RuntimeDroolsException;
 import org.drools.base.accumulators.AccumulateFunction;
-import org.drools.rule.builder.Dialect;
 import org.drools.util.ChainedProperties;
 
 /**
@@ -44,22 +43,18 @@
  * system property "drools.compiler.lnglevel". Valid values are 1.4, 1.5 and 1.6.
  */
 public class PackageBuilderConfiguration {
-    public static final int      ECLIPSE                    = 0;
-    public static final int      JANINO                     = 1;
 
-    public static final String[] LANGUAGE_LEVELS            = new String[]{"1.4", "1.5", "1.6"};
 
     private static final String  ACCUMULATE_FUNCTION_PREFIX = "drools.accumulate.function.";
 
     private Map                  dialects;
+    
+    private DialectRegistry      dialectRegistry;
 
     private String               defaultDialect;
 
-    private int                  compiler;
-
     private ClassLoader          classLoader;
 
-    private String               languageLevel;
 
     private ChainedProperties    chainedProperties;
 
@@ -105,41 +100,24 @@
 
         if ( properties != null ) {
             this.chainedProperties.addProperties( properties );
-        }
+        }              
 
-        setJavaLanguageLevel( getDefaultLanguageLevel() );
-
-        setCompiler( getDefaultCompiler() );                
-
         this.dialects = new HashMap();
         this.chainedProperties.mapStartsWith( this.dialects,
-                                              "drools.dialect" );
+                                              "drools.dialect",
+                                              false );
         setDefaultDialect( (String) this.dialects.remove( "drools.dialect.default" ) );
+        
+        this.dialectRegistry = buildDialectRegistry( );
 
         buildAccumulateFunctionsMap();
     }
-
-    public int getCompiler() {
-        return this.compiler;
+    
+    public ChainedProperties getChainedProperties() {
+        return this.chainedProperties;
     }
 
-    public String getJavaLanguageLevel() {
-        return this.languageLevel;
-    }
-
-    /**
-     * You cannot set language level below 1.5, as we need static imports, 1.5 is now the default.
-     * @param level
-     */
-    public void setJavaLanguageLevel(final String languageLevel) {
-        if ( Arrays.binarySearch( LANGUAGE_LEVELS,
-                                  languageLevel ) < 0 ) {
-            throw new RuntimeDroolsException( "value '" + languageLevel + "' is not a valid language level" );
-        }
-        this.languageLevel = languageLevel;
-    }
-
-    public DialectRegistry buildDialectRegistry(PackageBuilder packageBuilder) {
+    public DialectRegistry buildDialectRegistry() {
         DialectRegistry registry = new DialectRegistry();
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         for ( Iterator it = this.dialects.entrySet().iterator(); it.hasNext(); ) {
@@ -149,40 +127,37 @@
             String dialectClass = (String) entry.getValue();
             try {
                 Class cls = classLoader.loadClass( dialectClass );
-                Constructor cons = cls.getConstructor( new Class[]{PackageBuilder.class} );
-                registry.addDialect( dialectName,
-                                     (Dialect) cons.newInstance( new Object[]{packageBuilder} ) );
+                DialectConfiguration dialectConf = ( DialectConfiguration ) cls.newInstance();
+                dialectConf.init( this );
+                registry.addDialectConfiguration( dialectName,
+                                     dialectConf );
             } catch ( Exception e ) {
-                throw new RuntimeDroolsException( "Unable to load dialect '" + dialectClass + ":" + dialectName + "'" );
+                throw new RuntimeDroolsException( "Unable to load dialect '" + dialectClass + ":" + dialectName + "'", e );
             }
         }
         return registry;
     }
+    
+    public DialectRegistry getDialectRegistry() {
+        return this.dialectRegistry;
+    }
 
-    public String getDefaultDialect() {
-        return this.defaultDialect;
+    public Dialect getDefaultDialect() {
+        return this.dialectRegistry.getDialectConfiguration( this.defaultDialect ).getDialect();
     }
 
     public void setDefaultDialect(String defaultDialect) {
         this.defaultDialect = defaultDialect;
     }
-
-    /** 
-     * Set the compiler to be used when building the rules semantic code blocks.
-     * This overrides the default, and even what was set as a system property. 
-     */
-    public void setCompiler(final int compiler) {
-        switch ( compiler ) {
-            case PackageBuilderConfiguration.ECLIPSE :
-                this.compiler = PackageBuilderConfiguration.ECLIPSE;
-                break;
-            case PackageBuilderConfiguration.JANINO :
-                this.compiler = PackageBuilderConfiguration.JANINO;
-                break;
-            default :
-                throw new RuntimeDroolsException( "value '" + compiler + "' is not a valid compiler" );
-        }
+    
+    public DialectConfiguration getDialectConfiguration(String name) {
+        return ( DialectConfiguration ) this.dialectRegistry.getDialectConfiguration( name );
     }
+    
+    public void setDialectConfiguration(String name, DialectConfiguration configuration) {
+        this.dialects.put( name, 
+                           configuration );
+    }
 
     public ClassLoader getClassLoader() {
         return this.classLoader;
@@ -195,59 +170,12 @@
         }
     }
 
-    /**
-     * This will attempt to read the System property to work out what default to set.
-     * This should only be done once when the class is loaded. After that point, you will have
-     * to programmatically override it.
-     */
-    private int getDefaultCompiler() {
-        try {
-            final String prop = this.chainedProperties.getProperty( "drools.compiler",
-                                                                    "ECLIPSE" );
-            if ( prop.equals( "ECLIPSE".intern() ) ) {
-                return PackageBuilderConfiguration.ECLIPSE;
-            } else if ( prop.equals( "JANINO" ) ) {
-                return PackageBuilderConfiguration.JANINO;
-            } else {
-                System.err.println( "Drools config: unable to use the drools.compiler property. Using default. It was set to:" + prop );
-                return PackageBuilderConfiguration.ECLIPSE;
-            }
-        } catch ( final SecurityException e ) {
-            System.err.println( "Drools config: unable to read the drools.compiler property. Using default." );
-            return PackageBuilderConfiguration.ECLIPSE;
-        }
-    }
-
-    private String getDefaultLanguageLevel() {
-        String level = this.chainedProperties.getProperty( "drools.compiler.lnglevel",
-                                                           null );
-
-        if ( level == null ) {
-            String version = System.getProperty( "java.version" );
-            if ( version.startsWith( "1.4" ) ) {
-                level = "1.4";
-            } else if ( version.startsWith( "1.5" ) ) {
-                level = "1.5";
-            } else if ( version.startsWith( "1.6" ) ) {
-                level = "1.6";
-            } else {
-                level = "1.4";
-            }
-        }
-
-        if ( Arrays.binarySearch( LANGUAGE_LEVELS,
-                                  level ) < 0 ) {
-            throw new RuntimeDroolsException( "value '" + level + "' is not a valid language level" );
-        }
-
-        return level;
-    }
-
     private void buildAccumulateFunctionsMap() {
         this.accumulateFunctions = new HashMap();
         Map temp = new HashMap();
         this.chainedProperties.mapStartsWith( temp,
-                                              ACCUMULATE_FUNCTION_PREFIX );
+                                              ACCUMULATE_FUNCTION_PREFIX,
+                                              true );
         for ( Iterator it = temp.entrySet().iterator(); it.hasNext(); ) {
             Map.Entry entry = (Map.Entry) it.next();
             String identifier = ((String) entry.getKey()).trim().substring( ACCUMULATE_FUNCTION_PREFIX.length() );

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -1,106 +0,0 @@
-package org.drools.rule.builder;
-
-import java.util.List;
-import java.util.Map;
-
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.TypeResolver;
-import org.drools.lang.descr.BaseDescr;
-import org.drools.lang.descr.FunctionDescr;
-import org.drools.lang.descr.RuleDescr;
-import org.drools.rule.Package;
-
-public interface Dialect {
-    // this is needed because some dialects use other dialects
-    // to build complex expressions. Example: java dialect uses MVEL
-    // to execute complex expressions 
-    String getExpressionDialectName();
-
-    Map getBuilders();
-
-    TypeResolver getTypeResolver();
-
-    ClassFieldExtractorCache getClassFieldExtractorCache();
-
-    SalienceBuilder getSalienceBuilder();
-
-    PatternBuilder getPatternBuilder();
-
-    QueryBuilder getQueryBuilder();
-
-    RuleConditionBuilder getEvalBuilder();
-
-    AccumulateBuilder getAccumulateBuilder();
-
-    PredicateBuilder getPredicateBuilder();
-
-    ReturnValueBuilder getReturnValueBuilder();
-
-    ConsequenceBuilder getConsequenceBuilder();
-
-    RuleClassBuilder getRuleClassBuilder();
-
-    FromBuilder getFromBuilder();
-
-    RuleConditionBuilder getBuilder(Class clazz);
-
-    AnalysisResult analyzeExpression(final RuleBuildContext context,
-                                     final BaseDescr descr,
-                                     final Object content);
-
-    AnalysisResult analyzeBlock(final RuleBuildContext context,
-                                final BaseDescr descr,
-                                final String text);
-
-    void compileAll();
-
-    void addRule(final RuleBuildContext context);
-
-    void addFunction(final FunctionDescr functionDescr,
-                     TypeResolver typeResolver);
-
-    public void addImport(String importEntry);
-
-    public void addStaticImport(String importEntry);
-
-    List getResults();
-
-    void init(Package pkg);
-
-    void init(RuleDescr ruleDescr);
-
-    /**
-     * An interface with the results from the expression/block analysis
-     * 
-     * @author etirelli
-     */
-    public static interface AnalysisResult {
-
-        /**
-         * 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();
-
-        /**
-         * Returns the list<String> of declared local variables
-         * 
-         * @return
-         */
-        public List getLocalVariables();
-
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -25,6 +25,7 @@
 import org.drools.base.FieldFactory;
 import org.drools.base.ValueType;
 import org.drools.base.evaluators.Operator;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.facttemplates.FactTemplate;
 import org.drools.facttemplates.FactTemplateFieldExtractor;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -25,6 +25,8 @@
 import java.util.Stack;
 
 import org.drools.base.evaluators.DateFactory;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.AttributeDescr;
@@ -119,7 +121,7 @@
                        ruleDescr.getAttributes() );
 
         this.dialectRegistry = dialectRegistry;
-        this.dialect = (this.rule.getDialect() != null) ? this.dialectRegistry.getDialect( this.rule.getDialect() ) : defaultDialect;
+        this.dialect = (this.rule.getDialect() != null) ? this.dialectRegistry.getDialectConfiguration( this.rule.getDialect() ).getDialect() : defaultDialect;
 
         getDialect().init( ruleDescr );
     }
@@ -136,7 +138,7 @@
     }
 
     public Dialect getDialect(String dialectName) {
-        return (Dialect) this.dialectRegistry.getDialect( dialectName );
+        return ( (DialectConfiguration) this.dialectRegistry.getDialectConfiguration( dialectName ) ).getDialect();
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -25,6 +25,7 @@
 
 import org.drools.base.accumulators.AccumulateFunction;
 import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
+import org.drools.compiler.Dialect;
 import org.drools.lang.descr.AccumulateDescr;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.PatternDescr;
@@ -33,7 +34,6 @@
 import org.drools.rule.Pattern;
 import org.drools.rule.RuleConditionElement;
 import org.drools.rule.builder.AccumulateBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.PatternBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaAnalysisResult.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -22,7 +22,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.rule.builder.Dialect.AnalysisResult;
+import org.drools.compiler.Dialect.AnalysisResult;
 import org.drools.rule.builder.dialect.java.parser.JavaLocalDeclarationDescr;
 
 /**

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -20,11 +20,11 @@
 import java.util.List;
 import java.util.Map;
 
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.PatternExtractor;
 

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	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -17,6 +17,7 @@
 import org.drools.commons.jci.problems.CompilationProblem;
 import org.drools.commons.jci.readers.MemoryResourceReader;
 import org.drools.commons.jci.readers.ResourceReader;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.RuleError;
@@ -44,7 +45,6 @@
 import org.drools.rule.builder.AccumulateBuilder;
 import org.drools.rule.builder.CollectBuilder;
 import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.ForallBuilder;
 import org.drools.rule.builder.FromBuilder;
 import org.drools.rule.builder.FunctionBuilder;
@@ -79,11 +79,11 @@
     private final JavaFunctionBuilder      function                = new JavaFunctionBuilder();
 
     // 
-    private final KnowledgeHelperFixer     knowledgeHelperFixer;
-    private final DeclarationTypeFixer     typeFixer;
-    private final JavaExprAnalyzer         analyzer;
+    private KnowledgeHelperFixer     knowledgeHelperFixer;
+    private DeclarationTypeFixer     typeFixer;
+    private JavaExprAnalyzer         analyzer;
 
-    private PackageBuilderConfiguration    configuration;
+    private JavaDialectConfiguration       configuration;
 
     private Package                        pkg;
     private JavaCompiler                   compiler;
@@ -96,15 +96,19 @@
     // the class name for the rule    
     private String                         ruleClass;
 
-    private final TypeResolver             typeResolver;
-    private final ClassFieldExtractorCache classFieldExtractorCache;
+    private TypeResolver             typeResolver;
+    private ClassFieldExtractorCache classFieldExtractorCache;
 
     // a map of registered builders
     private Map                            builders;
 
-    public JavaDialect(final PackageBuilder builder) {
+    public JavaDialect() {
+
+    }
+    
+    public void init(PackageBuilder builder) {
         this.pkg = builder.getPackage();
-        this.configuration = builder.getPackageBuilderConfiguration();
+        this.configuration = (JavaDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "java" );
         this.typeResolver = builder.getTypeResolver();
         this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
 
@@ -471,11 +475,11 @@
 
     private void loadCompiler() {
         switch ( this.configuration.getCompiler() ) {
-            case PackageBuilderConfiguration.JANINO : {
+            case JavaDialectConfiguration.JANINO : {
                 this.compiler = JavaCompilerFactory.getInstance().createCompiler( "janino" );
                 break;
             }
-            case PackageBuilderConfiguration.ECLIPSE :
+            case JavaDialectConfiguration.ECLIPSE :
             default : {
                 this.compiler = JavaCompilerFactory.getInstance().createCompiler( "eclipse" );
                 JavaCompilerSettings settings = this.compiler.createDefaultSettings();    

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialectConfiguration.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -0,0 +1,134 @@
+package org.drools.rule.builder.dialect.java;
+
+import java.util.Arrays;
+import java.util.Properties;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+public class JavaDialectConfiguration
+    implements
+    DialectConfiguration {
+    public static final int             ECLIPSE         = 0;
+    public static final int             JANINO          = 1;
+
+    public static final String[]        LANGUAGE_LEVELS = new String[]{"1.4", "1.5", "1.6"};
+
+    private String                      languageLevel;
+
+    private PackageBuilderConfiguration conf;
+
+    private int                         compiler;
+
+    private JavaDialect                 dialect;
+
+    public JavaDialectConfiguration() {
+    }
+
+    public void init(final PackageBuilderConfiguration conf) {
+        this.conf = conf;
+
+        setCompiler( getDefaultCompiler() );
+        setJavaLanguageLevel( getDefaultLanguageLevel() );
+    }
+
+    public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+        return this.conf;
+    }
+
+    public Dialect getDialect() {
+        if ( this.dialect == null ) {
+            this.dialect = new JavaDialect();
+        }
+        return this.dialect;
+    }
+
+    public String getJavaLanguageLevel() {
+        return this.languageLevel;
+    }
+
+    /**
+     * You cannot set language level below 1.5, as we need static imports, 1.5 is now the default.
+     * @param level
+     */
+    public void setJavaLanguageLevel(final String languageLevel) {
+        if ( Arrays.binarySearch( LANGUAGE_LEVELS,
+                                  languageLevel ) < 0 ) {
+            throw new RuntimeDroolsException( "value '" + languageLevel + "' is not a valid language level" );
+        }
+        this.languageLevel = languageLevel;
+    }
+
+    /** 
+     * Set the compiler to be used when building the rules semantic code blocks.
+     * This overrides the default, and even what was set as a system property. 
+     */
+    public void setCompiler(final int compiler) {
+        switch ( compiler ) {
+            case JavaDialectConfiguration.ECLIPSE :
+                this.compiler = JavaDialectConfiguration.ECLIPSE;
+                break;
+            case JavaDialectConfiguration.JANINO :
+                this.compiler = JavaDialectConfiguration.JANINO;
+                break;
+            default :
+                throw new RuntimeDroolsException( "value '" + compiler + "' is not a valid compiler" );
+        }
+    }
+
+    public int getCompiler() {
+        return this.compiler;
+    }
+
+    /**
+     * This will attempt to read the System property to work out what default to set.
+     * This should only be done once when the class is loaded. After that point, you will have
+     * to programmatically override it.
+     */
+    private int getDefaultCompiler() {
+        try {
+            final String prop = this.conf.getChainedProperties().getProperty( "drools.dialect.java.compiler",
+                                                                              "ECLIPSE" );
+            if ( prop.equals( "ECLIPSE".intern() ) ) {
+                return JavaDialectConfiguration.ECLIPSE;
+            } else if ( prop.equals( "JANINO" ) ) {
+                return JavaDialectConfiguration.JANINO;
+            } else {
+                System.err.println( "Drools config: unable to use the drools.compiler property. Using default. It was set to:" + prop );
+                return JavaDialectConfiguration.ECLIPSE;
+            }
+        } catch ( final SecurityException e ) {
+            System.err.println( "Drools config: unable to read the drools.compiler property. Using default." );
+            return JavaDialectConfiguration.ECLIPSE;
+        }
+    }
+
+    private String getDefaultLanguageLevel() {
+        String level = this.conf.getChainedProperties().getProperty( "drools.dialect.java.compiler.lnglevel",
+                                                                     null );
+
+        if ( level == null ) {
+            String version = System.getProperty( "java.version" );
+            if ( version.startsWith( "1.4" ) ) {
+                level = "1.4";
+            } else if ( version.startsWith( "1.5" ) ) {
+                level = "1.5";
+            } else if ( version.startsWith( "1.6" ) ) {
+                level = "1.6";
+            } else {
+                level = "1.4";
+            }
+        }
+
+        if ( Arrays.binarySearch( LANGUAGE_LEVELS,
+                                  level ) < 0 ) {
+            throw new RuntimeDroolsException( "value '" + level + "' is not a valid language level" );
+        }
+
+        return level;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaEvalBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -19,13 +19,13 @@
 import java.util.List;
 import java.util.Map;
 
+import org.drools.compiler.Dialect;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.EvalDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.EvalCondition;
 import org.drools.rule.Pattern;
 import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.RuleConditionBuilder;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -24,6 +24,7 @@
 import org.drools.base.accumulators.MVELAccumulatorFunctionExecutor;
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.MVELAccumulator;
+import org.drools.compiler.Dialect;
 import org.drools.lang.descr.AccumulateDescr;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.PatternDescr;
@@ -32,7 +33,6 @@
 import org.drools.rule.Pattern;
 import org.drools.rule.RuleConditionElement;
 import org.drools.rule.builder.AccumulateBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.PatternBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.Accumulator;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -21,7 +21,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.drools.rule.builder.Dialect.AnalysisResult;
+import org.drools.compiler.Dialect.AnalysisResult;
 
 /**
  * An analysis result implementation for the MVEL dialect

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -7,9 +7,9 @@
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
 import org.drools.base.mvel.MVELConsequence;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.KnowledgeHelper;
 import org.mvel.ASTNode;

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	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -14,6 +14,7 @@
 import org.drools.base.TypeResolver;
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.DroolsMVELKnowledgeHelper;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.ImportError;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -34,7 +35,6 @@
 import org.drools.rule.Package;
 import org.drools.rule.builder.AccumulateBuilder;
 import org.drools.rule.builder.ConsequenceBuilder;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.FromBuilder;
 import org.drools.rule.builder.GroupElementBuilder;
 import org.drools.rule.builder.PatternBuilder;
@@ -61,35 +61,35 @@
     implements
     Dialect {
 
-    private final static String                     EXPRESSION_DIALECT_NAME = "MVEL";
+    private final static String               EXPRESSION_DIALECT_NAME = "MVEL";
 
-    private final PatternBuilder                    pattern                 = new PatternBuilder();
-    private final QueryBuilder                      query                   = new QueryBuilder();
-    private final MVELAccumulateBuilder             accumulate              = new MVELAccumulateBuilder();
-    private final SalienceBuilder                   salience                = new MVELSalienceBuilder();
-    private final MVELEvalBuilder                   eval                    = new MVELEvalBuilder();
-    private final MVELPredicateBuilder              predicate               = new MVELPredicateBuilder();
-    private final MVELReturnValueBuilder            returnValue             = new MVELReturnValueBuilder();
-    private final MVELConsequenceBuilder            consequence             = new MVELConsequenceBuilder();
+    private final PatternBuilder              pattern                 = new PatternBuilder();
+    private final QueryBuilder                query                   = new QueryBuilder();
+    private final MVELAccumulateBuilder       accumulate              = new MVELAccumulateBuilder();
+    private final SalienceBuilder             salience                = new MVELSalienceBuilder();
+    private final MVELEvalBuilder             eval                    = new MVELEvalBuilder();
+    private final MVELPredicateBuilder        predicate               = new MVELPredicateBuilder();
+    private final MVELReturnValueBuilder      returnValue             = new MVELReturnValueBuilder();
+    private final MVELConsequenceBuilder      consequence             = new MVELConsequenceBuilder();
     //private final JavaRuleClassBuilder            rule        = new JavaRuleClassBuilder();
-    private final MVELFromBuilder                   from                    = new MVELFromBuilder();
+    private final MVELFromBuilder             from                    = new MVELFromBuilder();
 
-    private final Map                               interceptors;
+    private Map                               interceptors;
 
-    private List                                    results;
+    private List                              results;
     //private final JavaFunctionBuilder             function    = new JavaFunctionBuilder();
 
-    private Package                                 pkg;
-    private PackageBuilderConfiguration             configuration;
-    private final TypeResolver                      typeResolver;
-    private final ClassFieldExtractorCache          classFieldExtractorCache;
-    private final MVELExprAnalyzer                  analyzer;
+    private Package                           pkg;
+    private MVELDialectConfiguration          configuration;
+    private TypeResolver                      typeResolver;
+    private ClassFieldExtractorCache          classFieldExtractorCache;
+    private MVELExprAnalyzer                  analyzer;
 
-    private final StaticMethodImportResolverFactory staticImportFactory;
-    private final ClassImportResolverFactory        importFactory;
-    
-    private boolean strictMode;
+    private StaticMethodImportResolverFactory staticImportFactory;
+    private ClassImportResolverFactory        importFactory;
 
+    private boolean                           strictMode;
+
     public void addFunction(FunctionDescr functionDescr,
                             TypeResolver typeResolver) {
         throw new UnsupportedOperationException( "MVEL does not support functions" );
@@ -99,14 +99,17 @@
     // a map of registered builders
     private Map builders;
 
-    public MVELDialect(final PackageBuilder builder) {
+    public MVELDialect() {
+    }
+
+    public void init(PackageBuilder builder) {
         AbstractParser.setLanguageLevel( 4 );
 
         this.pkg = builder.getPackage();
-        this.configuration = builder.getPackageBuilderConfiguration();
+        this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
         this.typeResolver = builder.getTypeResolver();
         this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
-        this.strictMode = true;
+        this.strictMode = this.configuration.isStrict();
 
         this.analyzer = new MVELExprAnalyzer();
 
@@ -205,7 +208,7 @@
                                                          index + 1 );
 
         try {
-            Class cls = configuration.getClassLoader().loadClass( className );
+            Class cls = this.configuration.getPackageBuilderConfiguration().getClassLoader().loadClass( className );
             Method[] methods = cls.getDeclaredMethods();
             for ( int i = 0; i < methods.length; i++ ) {
                 if ( methods[i].equals( "methodName" ) ) {
@@ -226,7 +229,7 @@
     public ClassImportResolverFactory getClassImportResolverFactory() {
         return this.importFactory;
     }
-        
+
     public boolean isStrictMode() {
         return strictMode;
     }
@@ -309,7 +312,7 @@
                                                                null );
 
         //this.configuration.get
-        
+
         parserContext.setStrictTypeEnforcement( strictMode );
         if ( interceptors != null ) {
             parserContext.setInterceptors( interceptors );
@@ -331,24 +334,23 @@
                                     (Class) globalTypes.get( identifier ) );
         }
 
-        
-        Map mvelVars = ((MVELAnalysisResult)analysis).getMvelVariables();
+        Map mvelVars = ((MVELAnalysisResult) analysis).getMvelVariables();
         if ( mvelVars != null ) {
             for ( Iterator it = mvelVars.entrySet().iterator(); it.hasNext(); ) {
                 Entry entry = (Entry) it.next();
-                parserContext.addInput( (String)entry.getKey(),
+                parserContext.addInput( (String) entry.getKey(),
                                         (Class) entry.getValue() );
-            }        
+            }
         }
-        
+
         if ( outerDeclarations != null ) {
             for ( Iterator it = outerDeclarations.entrySet().iterator(); it.hasNext(); ) {
                 Entry entry = (Entry) it.next();
-                parserContext.addInput( (String)entry.getKey(),
+                parserContext.addInput( (String) entry.getKey(),
                                         ((Declaration) entry.getValue()).getExtractor().getExtractToClass() );
             }
         }
-        
+
         parserContext.addInput( "drools",
                                 KnowledgeHelper.class );
 

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialectConfiguration.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -0,0 +1,48 @@
+package org.drools.rule.builder.dialect.mvel;
+
+import org.drools.compiler.Dialect;
+import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+
+public class MVELDialectConfiguration
+    implements
+    DialectConfiguration {
+
+    private MVELDialect                 dialect;
+    private PackageBuilderConfiguration conf;
+
+    private boolean                     strict;
+
+    public Dialect getDialect() {
+        if ( this.dialect == null ) {
+            this.dialect = new MVELDialect();
+        }
+        return this.dialect;
+    }
+
+    public void init(PackageBuilderConfiguration conf) {
+        this.conf = conf;
+        setStrict( getStrict() );
+    }
+
+    public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+        return this.conf;
+    }
+
+    public void setStrict(boolean strict) {
+        this.strict = strict;
+    }
+
+    public boolean isStrict() {
+        return this.strict;
+    }
+
+    private boolean getStrict() {
+        final String prop = this.conf.getChainedProperties().getProperty( "drools.dialect.mvel.strict",
+                                                                          "true" );
+        return Boolean.valueOf( prop ).booleanValue();
+
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -23,6 +23,7 @@
 
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.MVELEvalExpression;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.lang.descr.BaseDescr;
 import org.drools.lang.descr.EvalDescr;
@@ -30,7 +31,6 @@
 import org.drools.rule.EvalCondition;
 import org.drools.rule.Pattern;
 import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.RuleConditionBuilder;
 import org.drools.spi.DeclarationScopeResolver;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -20,6 +20,7 @@
 
 import org.drools.base.dataproviders.MVELDataProvider;
 import org.drools.base.mvel.DroolsMVELFactory;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.lang.descr.AccessorDescr;
 import org.drools.lang.descr.BaseDescr;
@@ -27,7 +28,6 @@
 import org.drools.rule.From;
 import org.drools.rule.Pattern;
 import org.drools.rule.RuleConditionElement;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.FromBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.DataProvider;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -23,11 +23,11 @@
 
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.MVELPredicateExpression;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
 import org.drools.lang.descr.PredicateDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.PredicateConstraint;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.PredicateBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.mvel.ExpressionCompiler;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -23,10 +23,10 @@
 
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.MVELReturnValueExpression;
+import org.drools.compiler.Dialect;
 import org.drools.lang.descr.ReturnValueRestrictionDescr;
 import org.drools.rule.Declaration;
 import org.drools.rule.ReturnValueRestriction;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.ReturnValueBuilder;
 import org.drools.rule.builder.RuleBuildContext;
 import org.mvel.ExpressionCompiler;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -4,8 +4,8 @@
 
 import org.drools.base.mvel.DroolsMVELFactory;
 import org.drools.base.mvel.MVELSalienceExpression;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.RuleError;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.SalienceBuilder;
 import org.mvel.ExpressionCompiler;

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/META-INF/drools.default.packagebuilder.conf	2007-07-14 23:55:03 UTC (rev 13515)
@@ -1,7 +1,10 @@
 drools.dialect.default = java
-drools.dialect.java = org.drools.rule.builder.dialect.java.JavaDialect
-drools.dialect.mvel = org.drools.rule.builder.dialect.mvel.MVELDialect
-drools.compiler = ECLIPSE
+drools.dialect.java = org.drools.rule.builder.dialect.java.JavaDialectConfiguration
+drools.dialect.java.compiler = ECLIPSE
+
+drools.dialect.mvel = org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration
+drools.dialect.mvel.strict = true
+
 drools.accumulate.function.average = org.drools.base.accumulators.AverageAccumulateFunction
 drools.accumulate.function.max = org.drools.base.accumulators.MaxAccumulateFunction
 drools.accumulate.function.min = org.drools.base.accumulators.MinAccumulateFunction

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -3,6 +3,7 @@
 import java.io.InputStreamReader;
 
 import org.drools.DroolsTestCase;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 
 public class Java5Test extends DroolsTestCase {
 
@@ -15,16 +16,19 @@
             return;
         }
         final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        conf.setCompiler( PackageBuilderConfiguration.ECLIPSE );
-        conf.setJavaLanguageLevel( "1.5" );
-        final PackageBuilder builder = new PackageBuilder( conf );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.ECLIPSE );
+        javaConf.setJavaLanguageLevel( "1.5" );
+        
+        final PackageBuilder builder = new PackageBuilder( );
         builder.addPackageFromDrl( new InputStreamReader( this.getClass().getResourceAsStream( "java5_rule.drl" ) ) );
         assertFalse( builder.hasErrors() );
     }
 
     public void testJava14Defaults() throws Exception {
         final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        conf.setCompiler( PackageBuilderConfiguration.JANINO );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.JANINO );
         final PackageBuilder builder = new PackageBuilder( conf );
         builder.addPackageFromDrl( new InputStreamReader( this.getClass().getResourceAsStream( "java5_rule.drl" ) ) );
         assertTrue( builder.hasErrors() );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderConfigurationTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -1,84 +1,366 @@
 package org.drools.compiler;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
+import org.drools.EventManager;
+import org.drools.WorkingMemory;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.TypeResolver;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.FunctionDescr;
+import org.drools.lang.descr.FunctionImportDescr;
+import org.drools.lang.descr.ImportDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.Package;
+import org.drools.rule.Pattern;
+import org.drools.rule.Rule;
+import org.drools.rule.RuleConditionElement;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.GroupElementBuilder;
+import org.drools.rule.builder.PatternBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.QueryBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.RuleConditionBuilder;
+import org.drools.rule.builder.SalienceBuilder;
+import org.drools.rule.builder.dialect.java.JavaDialect;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
+import org.drools.rule.builder.dialect.mvel.MVELDialect;
+import org.drools.spi.EvalExpression;
+import org.drools.spi.Tuple;
+
 import junit.framework.TestCase;
 
 public class PackageBuilderConfigurationTest extends TestCase {
 
     public void testSystemProperties() {
         PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
-        assertEquals( PackageBuilderConfiguration.ECLIPSE,
-                      cfg.getCompiler() );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) cfg.getDialectConfiguration( "java" );
+        assertEquals( JavaDialectConfiguration.ECLIPSE,
+                      javaConf.getCompiler() );
 
-        System.setProperty( "drools.compiler",
+        System.setProperty( "drools.dialect.java.compiler",
                             "JANINO" );
         cfg = new PackageBuilderConfiguration();
-        assertEquals( PackageBuilderConfiguration.JANINO,
-                      cfg.getCompiler() );
+        javaConf = ( JavaDialectConfiguration ) cfg.getDialectConfiguration( "java" );
+        assertEquals( JavaDialectConfiguration.JANINO,
+                      javaConf.getCompiler() );
 
-        final PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration();
-        assertEquals( cfg.getCompiler(),
-                      cfg2.getCompiler() );
+        PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration();
+        JavaDialectConfiguration javaConf2 = ( JavaDialectConfiguration ) cfg2.getDialectConfiguration( "java" );
+        assertEquals( javaConf.getCompiler(),
+                      javaConf2.getCompiler() );
 
-        System.setProperty( "drools.compiler",
+        System.setProperty( "drools.dialect.java.compiler",
                             "ECLIPSE" );
         cfg = new PackageBuilderConfiguration();
-        assertEquals( PackageBuilderConfiguration.ECLIPSE,
-                      cfg.getCompiler() );
+        javaConf = ( JavaDialectConfiguration ) cfg.getDialectConfiguration( "java" );
+        assertEquals( JavaDialectConfiguration.ECLIPSE,
+                      javaConf.getCompiler() );
 
-        cfg2.setCompiler( PackageBuilderConfiguration.ECLIPSE );
-        assertEquals( PackageBuilderConfiguration.ECLIPSE,
-                      cfg2.getCompiler() );
+        javaConf2.setCompiler( JavaDialectConfiguration.ECLIPSE );
+        assertEquals( JavaDialectConfiguration.ECLIPSE,
+                      javaConf2.getCompiler() );
 
-        cfg2.setCompiler( PackageBuilderConfiguration.JANINO );
-        assertEquals( PackageBuilderConfiguration.JANINO,
-                      cfg2.getCompiler() );
+        javaConf2.setCompiler( JavaDialectConfiguration.JANINO );
+        assertEquals( JavaDialectConfiguration.JANINO,
+                      javaConf2.getCompiler() );
 
         final PackageBuilderConfiguration cfg3 = new PackageBuilderConfiguration();
-
-        assertEquals( cfg.getCompiler(),
-                      cfg3.getCompiler() );
+        JavaDialectConfiguration javaConf3 = ( JavaDialectConfiguration ) cfg3.getDialectConfiguration( "java" );
+        assertEquals( javaConf.getCompiler(),
+                      javaConf3.getCompiler() );
         
-        System.getProperties().remove( "drools.compiler" );
+        System.getProperties().remove( "drools.dialect.java.compiler" );
 
     }
 
     public void testProgrammaticProperties() {
         PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
-        assertEquals( "java",
-                      cfg.getDefaultDialect() );
+        assertTrue( cfg.getDefaultDialect() instanceof JavaDialect );
 
         Properties properties = new Properties();
         properties.setProperty( "drools.dialect.default",
-                                "tea" );
+                                "mvel" );
         PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration( properties );
-        assertEquals( "tea",
-                      cfg1.getDefaultDialect() );
+        assertTrue( cfg1.getDefaultDialect() instanceof MVELDialect );
 
         final PackageBuilderConfiguration cfg2 = new PackageBuilderConfiguration(properties);
-        assertEquals( cfg1.getDefaultDialect(),
-                      cfg2.getDefaultDialect() );
+        assertEquals( cfg1.getDefaultDialect().getClass(),
+                      cfg2.getDefaultDialect().getClass() );        
+    }
+    
+    public void testMockDialect() {
+        Package pkg = new Package("org.pkg1");
 
-        properties = new Properties();
-        properties.setProperty( "drools.dialect.default",
-                                "coke" );
-        PackageBuilderConfiguration cfg3 = new PackageBuilderConfiguration( properties );
-        assertEquals( "coke",
-                      cfg3.getDefaultDialect() );
+        PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration();
+        MockDialectConfiguration mockConf = new MockDialectConfiguration();
+        cfg1.getDialectRegistry().addDialectConfiguration( "mock", mockConf );        
+        cfg1.setDefaultDialect( "mock" );
+        
+        PackageBuilder builder = new PackageBuilder( pkg,
+                                                     cfg1 );        
+        
+        MockDialect mockDialect2 = ( MockDialect ) builder.getPackageBuilderConfiguration().getDefaultDialect();
+        assertSame( mockConf.getDialect(), mockDialect2);
+        
+        assertSame(builder, mockDialect2.getPackageBuilder() );
+        assertSame(pkg, mockDialect2.getPkg() );
+        assertNull( mockDialect2.getRuleDescr() );
+        
+        
+        RuleDescr ruleDescr = new RuleDescr("test rule");
+        ruleDescr.addAttribute( new AttributeDescr("dialect", "mock") );
+        ruleDescr.setLhs( new AndDescr() );
+        EvalDescr evalDescr = new EvalDescr();
+        ruleDescr.getLhs().addDescr( evalDescr  );
 
-        cfg2.setDefaultDialect( "orange" );
-        assertEquals( "orange",
-                      cfg2.getDefaultDialect() );
+        PackageDescr pkgDescr = new PackageDescr("org.pkg1");
+        pkgDescr.addImport( new ImportDescr("java.util.HashMap") );
+        FunctionImportDescr functionImportDescr = new FunctionImportDescr();
+        functionImportDescr.setTarget( "System.out.println" );
+        pkgDescr.addFunctionImport( functionImportDescr );
+        
+        pkgDescr.addRule( ruleDescr );
+        
+        builder.addPackage( pkgDescr );
+        
+        assertSame( ruleDescr, mockDialect2.getRuleDescr() );
+        assertTrue( mockDialect2.getImport().contains( "java.util.HashMap" ) );
+        assertTrue( mockDialect2.getStaticImport().contains( "System.out.println" ) );
+        assertEquals( "eval was built", evalDescr.getContent() );
+        assertEquals( "consequence was built", ruleDescr.getConsequence() );
+        assertTrue( mockDialect2.isCompileAll() );
+        
+        assertNotNull( pkg.getRule( "test rule" ) );
+                        
+    }
+    
+    public static class MockDialectConfiguration implements DialectConfiguration {
+        private MockDialect dialect = new MockDialect();
+        private PackageBuilderConfiguration conf;
 
-        cfg2.setDefaultDialect( "lemonade" );
-        assertEquals( "lemonade",
-                      cfg2.getDefaultDialect() );
+        public Dialect getDialect() {
+            return this.dialect;
+        }
 
-        final PackageBuilderConfiguration cfg4 = new PackageBuilderConfiguration();
+        public PackageBuilderConfiguration getPackageBuilderConfiguration() {
+            return this.conf;
+        }
 
-        assertEquals( cfg.getDefaultDialect(),
-                      cfg4.getDefaultDialect() );
+        public void init(PackageBuilderConfiguration configuration) {
+            this.conf = configuration;            
+        }
         
     }
+    
+    public static class MockDialect implements Dialect {
+        private PackageBuilder builder;
+        private Package pkg;
+        private RuleDescr ruleDescr;
+        private Rule rule;
+        
+        private List imports = new ArrayList();
+        private List staticImports = new ArrayList();
+        
+        private boolean compileAll = false;
+        
+        public void init(PackageBuilder builder) {
+            this.builder = builder;
+            
+        }
+
+        public void init(Package pkg) {
+            this.pkg = pkg;
+        }
+
+        public void init(RuleDescr ruleDescr) {
+            this.ruleDescr = ruleDescr;
+        }
+                
+        
+        public PackageBuilder getPackageBuilder() {
+            return builder;
+        }
+
+        public Package getPkg() {
+            return pkg;
+        }
+
+        public RuleDescr getRuleDescr() {
+            return ruleDescr;
+        }
+
+        public void addFunction(FunctionDescr functionDescr,
+                                TypeResolver typeResolver) {
+            // TODO Auto-generated method stub
+            
+        }
+
+        public void addImport(String importEntry) {
+            this.imports.add( importEntry );           
+        }
+        
+        public List getImport() {
+            return this.imports;
+        }
+        
+        public void addStaticImport(String importEntry) {
+            this.imports.add( importEntry );
+        }       
+        
+        public List getStaticImport() {
+            return this.imports;
+        }
+
+        public void addRule(RuleBuildContext context) {
+             this.rule = context.getRule();            
+        }
+        
+        public Rule getRule() {
+            return this.rule;
+        }
+
+        public AnalysisResult analyzeBlock(RuleBuildContext context,
+                                           BaseDescr descr,
+                                           String text) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public AnalysisResult analyzeExpression(RuleBuildContext context,
+                                                BaseDescr descr,
+                                                Object content) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public void compileAll() {
+            this.compileAll = true;            
+        }
+        
+        public boolean isCompileAll() {
+            return this.compileAll;
+        }
+
+        public AccumulateBuilder getAccumulateBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public RuleConditionBuilder getBuilder(Class clazz) {
+            if ( clazz == EvalDescr.class ) {
+                return getEvalBuilder();
+            } else if ( clazz == AndDescr.class ) {
+                return new GroupElementBuilder();
+            } else {
+                throw new RuntimeException( "clazz " + clazz + " is not yet configured " ); 
+            }
+        }
+
+        public Map getBuilders() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public ClassFieldExtractorCache getClassFieldExtractorCache() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public ConsequenceBuilder getConsequenceBuilder() {
+            return new MockConsequenceBuilder();
+        }
+
+        public RuleConditionBuilder getEvalBuilder() {
+            return new MockEvalBuilder();
+        }
+
+        public String getExpressionDialectName() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public FromBuilder getFromBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public PatternBuilder getPatternBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public PredicateBuilder getPredicateBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public QueryBuilder getQueryBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public List getResults() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public ReturnValueBuilder getReturnValueBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public RuleClassBuilder getRuleClassBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public SalienceBuilder getSalienceBuilder() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        public TypeResolver getTypeResolver() {
+            // TODO Auto-generated method stub
+            return null;
+        }        
+    }    
+    
+    public static class MockEvalBuilder implements RuleConditionBuilder {
+
+        public RuleConditionElement build(RuleBuildContext context,
+                                          BaseDescr descr) {
+            EvalDescr evalDescr = ( EvalDescr ) descr;
+            evalDescr.setContent( "eval was built" );            
+            return null;
+        }
+
+        public RuleConditionElement build(RuleBuildContext context,
+                                          BaseDescr descr,
+                                          Pattern prefixPattern) {
+            return null;
+        }
+        
+    }
+    
+    public static class MockConsequenceBuilder implements ConsequenceBuilder {
+
+        public void build(RuleBuildContext context) {
+            context.getRuleDescr().setConsequence( "consequence was built" );
+        }
+        
+    }
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -81,6 +81,7 @@
 import org.drools.rule.ReturnValueConstraint;
 import org.drools.rule.Rule;
 import org.drools.rule.builder.dialect.java.JavaDialect;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 import org.drools.ruleflow.common.core.Process;
 import org.drools.ruleflow.core.impl.RuleFlowProcessImpl;
 import org.drools.spi.Activation;
@@ -1010,7 +1011,8 @@
 
         // test JANINO with property settings
         PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        conf.setCompiler( PackageBuilderConfiguration.JANINO );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.JANINO );
         builder = new PackageBuilder( conf );
         dialect = (JavaDialect) dialectField.get( builder );
         compiler = (JavaCompiler) compilerField.get( dialect );
@@ -1019,7 +1021,8 @@
 
         // test eclipse jdt core with property settings and default source level
         conf = new PackageBuilderConfiguration();
-        conf.setCompiler( PackageBuilderConfiguration.ECLIPSE );
+        javaConf = ( JavaDialectConfiguration ) conf.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.ECLIPSE );
         builder = new PackageBuilder( conf );
         dialect = (JavaDialect) dialectField.get( builder );
         compiler = (JavaCompiler) compilerField.get( dialect );
@@ -1241,7 +1244,8 @@
     
     public void testJaninoWithStaticImports() throws Exception {
         PackageBuilderConfiguration cfg = new PackageBuilderConfiguration();
-        cfg.setCompiler( PackageBuilderConfiguration.JANINO );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) cfg.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.JANINO );
         
         
         PackageBuilder bldr = new PackageBuilder(cfg);

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -94,6 +94,7 @@
 import org.drools.rule.InvalidRulePackage;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
+import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
 import org.drools.xml.XmlDumper;
 
 /** Run all the tests with the ReteOO engine implementation */
@@ -642,7 +643,9 @@
 
     public void testJaninoEval() throws Exception {
         final PackageBuilderConfiguration config = new PackageBuilderConfiguration();
-        config.setCompiler( PackageBuilderConfiguration.JANINO );
+        JavaDialectConfiguration javaConf = ( JavaDialectConfiguration ) config.getDialectConfiguration( "java" );
+        javaConf.setCompiler( JavaDialectConfiguration.JANINO );
+        
         final PackageBuilder builder = new PackageBuilder( config );
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "eval_rule_test.drl" ) ) );
         final Package pkg = builder.getPackage();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaAccumulateBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -4,6 +4,7 @@
 
 import junit.framework.TestCase;
 
+import org.drools.compiler.Dialect;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -13,7 +14,6 @@
 import org.drools.lang.descr.PatternDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Accumulate;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 
 public class JavaAccumulateBuilderTest extends TestCase {
@@ -43,13 +43,13 @@
         accumDescr.setResultCode( "new Integer( x )" );
         
         org.drools.rule.Package pkg = new org.drools.rule.Package( "org.drools" );
-        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
-        DialectRegistry registry = new DialectRegistry();
-        Dialect java = new JavaDialect(pkgBuilder);
-        registry.addDialect( "java", java );
+        final PackageBuilder pkgBulider = new PackageBuilder(pkg);
+        final PackageBuilderConfiguration conf = pkgBulider.getPackageBuilderConfiguration();
+        Dialect dialect = pkgBulider.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "java" ).getDialect();
+        
+        
         RuleDescr ruleDescr = new RuleDescr("test rule");
-        PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        RuleBuildContext context = new RuleBuildContext( conf, pkg, ruleDescr, registry, java);
+        RuleBuildContext context = new RuleBuildContext( conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
         
         Accumulate accumulate = (Accumulate) builder.build( context, accumDescr );
         

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -27,6 +27,7 @@
 
 import org.drools.base.ClassTypeResolver;
 import org.drools.base.TypeResolver;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.PackageBuilder;
@@ -84,14 +85,13 @@
         typeResolver.addImport( pkgDescr.getName() + ".*" );
         typeResolver.addImport( "java.lang.*" );
 
-        final RuleBuilder builder = new RuleBuilder( );        
+        final RuleBuilder builder = new RuleBuilder( );                
         
-        JavaDialect dialect =  new JavaDialect( new PackageBuilder(pkg) ) ;  
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "java", dialect );
+        final PackageBuilder pkgBulider = new PackageBuilder(pkg);
+        final PackageBuilderConfiguration conf = pkgBulider.getPackageBuilderConfiguration();
+        Dialect dialect = pkgBulider.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "java" ).getDialect();
         
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-        RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, registry, dialect);
+        RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
       
         builder.build( context );
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -3,11 +3,11 @@
  */
 package org.drools.rule.builder.dialect.mvel;
 
+import org.drools.compiler.Dialect;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Package;
-import org.drools.rule.builder.Dialect;
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.spi.DeclarationScopeResolver;
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -2,6 +2,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
 
 import junit.framework.TestCase;
 
@@ -14,6 +15,7 @@
 import org.drools.common.AgendaItem;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.PropagationContextImpl;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -35,16 +37,14 @@
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
         ruleDescr.setConsequence( "modify (cheese) {price = 5 }; retract (cheese)" );
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "mvel",
-                             mvelDialect );
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
 
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
 
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
@@ -100,16 +100,17 @@
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
         ruleDescr.setConsequence( "if (cheese.price == 10) { cheese.price = 5; }" );
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "default",
-                             mvelDialect );
+        Properties properties = new Properties();
+        properties.setProperty( "drools.dialect.default",
+                                "mvel" );        
+        PackageBuilderConfiguration cfg1 = new PackageBuilderConfiguration( properties );
+        MVELDialect mvelDialect = ( MVELDialect) cfg1.getDefaultDialect();
         final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
 
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
 
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -12,6 +12,7 @@
 import org.drools.base.ClassFieldExtractorCache;
 import org.drools.base.ClassObjectType;
 import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -32,17 +33,15 @@
     public void testSimpleExpression() {
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+               
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "mvel",
-                             mvelDialect );
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
-
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
 
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -14,6 +14,7 @@
 import org.drools.base.ClassObjectType;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -36,16 +37,14 @@
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "mvel",
-                             mvelDialect );
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
 
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
         
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -16,6 +16,7 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -38,16 +39,14 @@
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "mvel",
-                             mvelDialect );
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
 
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
         
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java	2007-07-14 23:52:32 UTC (rev 13514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java	2007-07-14 23:55:03 UTC (rev 13515)
@@ -11,6 +11,7 @@
 import org.drools.WorkingMemory;
 import org.drools.base.ClassObjectType;
 import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DialectConfiguration;
 import org.drools.compiler.DialectRegistry;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
@@ -30,16 +31,14 @@
         ruleDescr.setSalience( "p.age + 20" );
         ruleDescr.setConsequence( "" );
 
-        MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
-        DialectRegistry registry = new DialectRegistry();
-        registry.addDialect( "mvel",
-                             mvelDialect );
-        final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        MVELDialect mvelDialect = ( MVELDialect ) ( (DialectConfiguration) conf.getDialectConfiguration( "mvel" ) ).getDialect();
 
         final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
                                                                                pkg,
                                                                                ruleDescr,
-                                                                               registry,
+                                                                               conf.getDialectRegistry(),
                                                                                mvelDialect );
 
         final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();




More information about the jboss-svn-commits mailing list