[jboss-svn-commits] JBL Code SVN: r20746 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder/dialect/mvel and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 24 22:10:59 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-06-24 22:10:59 -0400 (Tue, 24 Jun 2008)
New Revision: 20746

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/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/MVELReturnValueEvaluatorBuilder.java
Log:
JBRULES-720 Clips Parser
-getting deffunction and builtin functions to work.

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -224,10 +224,6 @@
         this.results = new ArrayList();
         this.classFieldExtractorCache = ClassFieldAccessorCache.getInstance();
 
-        ruleBase = (ReteooRuleBase) ruleBase;
-    }
-
-    public void setRuleBase(RuleBase ruleBase) {
         this.ruleBase = (ReteooRuleBase) ruleBase;
     }
 

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	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -68,7 +68,7 @@
         context.getBuildStack().push( context.getRule().getLhs() );
 
         try {
-            MVELDialect dialect = (MVELDialect) context.getDialect();
+            MVELDialect dialect = (MVELDialect) context.getDialect( context.getDialect().getId() );
 
             String text = processMacros( (String) context.getRuleDescr().getConsequence() );
 
@@ -93,7 +93,8 @@
             
 
             context.getRule().setConsequence( new MVELConsequence( expr,
-                                                                   factory ) );
+                                                                   factory,
+                                                                   dialect.getId() ) );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                     context.getRuleDescr(),

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -41,6 +41,7 @@
 import org.drools.lang.descr.QueryDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.rule.Declaration;
+import org.drools.rule.DialectRuntimeRegistry;
 import org.drools.rule.JavaDialectRuntimeData;
 import org.drools.rule.LineMappings;
 import org.drools.rule.MVELDialectRuntimeData;
@@ -83,7 +84,7 @@
     Dialect,
     Externalizable {
 
-    public final static String                           ID                             = "mvel";
+    private String                                        id                             = "mvel";
 
     private final static String                          EXPRESSION_DIALECT_NAME        = "MVEL";
 
@@ -124,33 +125,38 @@
     protected MemoryResourceReader                       src;
 
     protected Package                                    pkg;
-    protected MVELDialectRuntimeData                     data;
     private MVELDialectConfiguration                     configuration;
-    
-    private PackageRegistry                          packageRegistry;
-    
+
+    private PackageRegistry                              packageRegistry;
+
     private ClassFieldAccessorCache                      classFieldExtractorCache;
 
     private Map                                          imports;
     private Map                                          packageImports;
 
-    
     private boolean                                      strictMode;
     private int                                          languageLevel;
-    public static final Object COMPILER_LOCK = new Object();
+    public static final Object                           COMPILER_LOCK                  = new Object();
+    
+    public MVELDialect(PackageBuilder builder,
+                       PackageRegistry pkgRegistry,
+                       Package pkg) {
+        this( builder, pkgRegistry, pkg, "mvel" );
+    }
 
     public MVELDialect(PackageBuilder builder,
                        PackageRegistry pkgRegistry,
-                       Package pkg) {
+                       Package pkg,
+                       String id) {
+        this.id = id;
         this.pkg = pkg;
         this.packageRegistry = pkgRegistry;
-        
-        this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );        
+
+        this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
         setLanguageLevel( this.configuration.getLangLevel() );
         this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
         this.strictMode = this.configuration.isStrict();
 
-
         MVEL.setThreadSafe( true );
 
         this.imports = new HashMap();
@@ -161,28 +167,27 @@
                                new ModifyInterceptor() );
 
         this.results = new ArrayList();
-        
-        
-//        this.data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
-//        
-//        this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
-//                                                             this.data );
-        
+
+        //        this.data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
+        //        
+        //        this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
+        //                                                             this.data );
+
         MVELDialectRuntimeData data = null;
         // initialise the dialect runtime data if it doesn't already exist
-        if ( pkg.getDialectRuntimeRegistry().getDialectData( ID ) == null ) {
+        if ( pkg.getDialectRuntimeRegistry().getDialectData( getId() ) == null ) {
             data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
-            this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
+            this.pkg.getDialectRuntimeRegistry().setDialectData( getId(),
                                                                  data );
-        }        
-        
-        
+        }
+
         this.results = new ArrayList();
         this.src = new MemoryResourceReader();
         if ( this.pkg != null ) {
             this.addImport( this.pkg.getName() + ".*" );
         }
     }
+        
 
     public void readExternal(ObjectInput in) throws IOException,
                                             ClassNotFoundException {
@@ -190,7 +195,7 @@
         results = (List) in.readObject();
         src = (MemoryResourceReader) in.readObject();
         pkg = (Package) in.readObject();
-        data = (MVELDialectRuntimeData) in.readObject();
+        packageRegistry = (PackageRegistry) in.readObject();
         configuration = (MVELDialectConfiguration) in.readObject();
         classFieldExtractorCache = (ClassFieldAccessorCache) in.readObject();
         imports = (Map) in.readObject();
@@ -203,7 +208,7 @@
         out.writeObject( results );
         out.writeObject( src );
         out.writeObject( pkg );
-        out.writeObject( data );
+        out.writeObject( packageRegistry );
         out.writeObject( configuration );
         out.writeObject( classFieldExtractorCache );
         out.writeObject( imports );
@@ -214,20 +219,19 @@
     public void setLanguageLevel(int languageLevel) {
         this.languageLevel = languageLevel;
     }
-    
-    
-//    public static void setLanguageLevel(int level) {        
-//        synchronized ( lang ) {
-//            // this synchronisation is needed as setLanguageLevel is not thread safe
-//            // and we do not want to be calling this while something else is being parsed.
-//            // the flag ensures it is just called once and no more.
-//            if ( languageSet.booleanValue() == false ) {
-//                languageSet = new Boolean( true );
-//                AbstractParser.setLanguageLevel( level );
-//            }
-//        }
-//    }
 
+    //    public static void setLanguageLevel(int level) {        
+    //        synchronized ( lang ) {
+    //            // this synchronisation is needed as setLanguageLevel is not thread safe
+    //            // and we do not want to be calling this while something else is being parsed.
+    //            // the flag ensures it is just called once and no more.
+    //            if ( languageSet.booleanValue() == false ) {
+    //                languageSet = new Boolean( true );
+    //                AbstractParser.setLanguageLevel( level );
+    //            }
+    //        }
+    //    }
+
     public static void initBuilder() {
         if ( builders != null ) {
             return;
@@ -330,8 +334,9 @@
         ExpressionCompiler compiler = new ExpressionCompiler( (String) functionDescr.getContent() );
         Serializable s1 = compiler.compile();
         Map<String, org.mvel.ast.Function> map = CompilerTools.extractAllDeclaredFunctions( (CompiledExpression) s1 );
+        MVELDialectRuntimeData data = (MVELDialectRuntimeData) this.packageRegistry.getDialectRuntimeRegistry().getDialectData( getId() );
         for ( org.mvel.ast.Function function : map.values() ) {
-            this.data.addFunction( function );
+            data.addFunction( function );
         }
     }
 
@@ -492,12 +497,12 @@
         if ( MVELDebugHandler.isDebugMode() ) {
             compiler.setDebugSymbols( true );
         }
-                
-        synchronized ( COMPILER_LOCK ) {            
-            AbstractParser.setLanguageLevel( languageLevel );    
+
+        synchronized ( COMPILER_LOCK ) {
+            AbstractParser.setLanguageLevel( languageLevel );
             return compiler.compile( parserContext );
         }
-    }    
+    }
 
     public ParserContext getParserContext(final Dialect.AnalysisResult analysis,
                                           final Map outerDeclarations,
@@ -647,7 +652,7 @@
     }
 
     public String getId() {
-        return ID;
+        return this.id;
     }
 
 }
\ No newline at end of file

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	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -68,10 +68,7 @@
         try {
             final DroolsMVELFactory factory = new DroolsMVELFactory( context.getDeclarationResolver().getDeclarations(),
                                                                      null,
-                                                                     context.getPkg().getGlobals() );      
-            
-            MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
-            factory.setNextFactory( data.getFunctionFactory() );            
+                                                                     context.getPkg().getGlobals() );   
 
             Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
                                                                                       evalDescr,
@@ -94,7 +91,8 @@
                                                                               context );
 
             eval.setEvalExpression( new MVELEvalExpression( expr,
-                                                            factory ) );
+                                                            factory,
+                                                            context.getDialect().getId() ) );
 
             return eval;
         } catch ( final Exception e ) {

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	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -78,7 +78,8 @@
                                                        context );
 
             dataProvider = new MVELDataProvider( expr,
-                                                 factory );
+                                                 factory,
+                                                 context.getDialect().getId() );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                           fromDescr,

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	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -64,9 +64,6 @@
                                                                      localMap,
                                                                      context.getPkg().getGlobals() );
             
-            MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
-            factory.setNextFactory( data.getFunctionFactory() );            
-
             Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
                                                                                       predicateDescr,
                                                                                       predicateDescr.getContent(),
@@ -80,7 +77,8 @@
                                                                                     context );
 
             predicate.setPredicateExpression( new MVELPredicateExpression( expr,
-                                                                           factory ) );
+                                                                           factory,
+                                                                           context.getDialect().getId()) );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                     predicateDescr,

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	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -63,9 +63,6 @@
                                                                  localMap,
                                                                  context.getPkg().getGlobals() );
 
-        MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
-        factory.setNextFactory( data.getFunctionFactory() );
-
         Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
                                                                                   returnValueRestrictionDescr,
                                                                                   returnValueRestrictionDescr.getContent(),
@@ -79,7 +76,8 @@
                                                                                 context );
 
         returnValueRestriction.setReturnValueExpression( new MVELReturnValueExpression( expr,
-                                                                                        factory ) );
+                                                                                        factory,
+                                                                                        context.getDialect().getId()) );
     }
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2008-06-25 02:10:59 UTC (rev 20746)
@@ -29,7 +29,7 @@
         String text = descr.getText();
 
         try {
-            MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
+            MVELDialect dialect = (MVELDialect)  context.getDialect();
 
             Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
                                                                     descr,
@@ -53,7 +53,7 @@
             MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
             factory.setNextFactory( data.getFunctionFactory() );            
             
-            constraintNode.setEvaluator( new MVELReturnValueEvaluator( expr, factory ) );
+            constraintNode.setEvaluator( new MVELReturnValueEvaluator( expr, factory, context.getDialect().getId() ) );
         } catch ( final Exception e ) {
             context.getErrors().add( new DescrBuildError( context.getParentDescr(),
                                                           descr,




More information about the jboss-svn-commits mailing list