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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue May 29 11:18:10 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-05-29 11:18:10 -0400 (Tue, 29 May 2007)
New Revision: 12215

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/dialect/mvel/MVELFromBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.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/mvel/MVELSalienceBuilderTest.java
Log:
JBRULES-708 MVEL Integration
-salience and from builders now request the MVEL dialect specifcally from the context, to avoid casting issues - as they can be re-used by the java dialect.

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -80,14 +80,16 @@
     // a simple counter for generated names
     private int                      counter;
 
-    private Dialect                  dialect;
+    private DialectRegistry          dialectRegistry;
 
+    private String                   defaultDialectName;
+
     /**
      * Default constructor
      */
     public RuleBuildContext(final Package pkg,
                             final RuleDescr ruleDescr,
-                            final DialectRegistry registry) {
+                            final DialectRegistry dialectRegistry) {
         this.pkg = pkg;
 
         this.methods = new ArrayList();
@@ -112,14 +114,20 @@
                        ruleDescr.getAttributes() );
 
         String dialectName = (this.rule.getDialect() != null) ? this.rule.getDialect() : "default";
-        this.dialect = registry.getDialect( dialectName );
+        this.defaultDialectName = dialectName;
+        this.dialectRegistry = dialectRegistry;
+        
 
-        this.dialect.init( ruleDescr );
+        dialectRegistry.getDialect( this.defaultDialectName ).init( ruleDescr );
     }
 
     public Dialect getDialect() {
-        return this.dialect;
+        return this.dialectRegistry.getDialect( this.defaultDialectName );
     }
+    
+    public Dialect getDialect(String dialectName) {
+        return (Dialect) this.dialectRegistry.getDialect( dialectName );
+    }
 
     /**
      * Returns the list of errors found while building the current context

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -34,6 +34,7 @@
 import org.drools.rule.builder.FromBuilder;
 import org.drools.spi.DataProvider;
 import org.mvel.MVEL;
+import org.mvel.integration.impl.ClassImportResolverFactory;
 
 /**
  * A builder for "from" conditional element
@@ -53,7 +54,7 @@
         final FromDescr fromDescr = (FromDescr) descr;
 
         final PatternBuilder patternBuilder = (PatternBuilder) context.getDialect().getBuilder( PatternDescr.class );
-        
+
         final Pattern pattern = patternBuilder.build( context,
                                                       fromDescr.getReturnedPattern() );
 
@@ -64,11 +65,17 @@
         final AccessorDescr accessor = (AccessorDescr) fromDescr.getDataSource();
         DataProvider dataProvider = null;
         try {
-            final DroolsMVELFactory factory = new DroolsMVELFactory(context.getDeclarationResolver().getDeclarations(), null,  context.getPkg().getGlobals() );
-            factory.setNextFactory( ((MVELDialect)context.getDialect()).getClassImportResolverFactory() );            
+            final DroolsMVELFactory factory = new DroolsMVELFactory( context.getDeclarationResolver().getDeclarations(),
+                                                                     null,
+                                                                     context.getPkg().getGlobals() );
 
+            // This builder is re-usable in other dialects, so specify by name
+            final ClassImportResolverFactory classImportResolverFactory = ((MVELDialect) context.getDialect( "mvel" )).getClassImportResolverFactory();
+            factory.setNextFactory( classImportResolverFactory );
+
             //parser.setValueHandlerFactory( factory );
-            final Serializable compiled = MVEL.compileExpression( accessor.toString(), ((MVELDialect)context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+            final Serializable compiled = MVEL.compileExpression( accessor.toString(),
+                                                                  classImportResolverFactory.getImportedClasses() );
 
             dataProvider = new MVELDataProvider( compiled,
                                                  factory );

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -9,29 +9,37 @@
 import org.drools.rule.builder.RuleBuildContext;
 import org.drools.rule.builder.SalienceBuilder;
 import org.mvel.MVEL;
+import org.mvel.integration.impl.ClassImportResolverFactory;
 
-public class MVELSalienceBuilder implements SalienceBuilder {
+public class MVELSalienceBuilder
+    implements
+    SalienceBuilder {
 
-    public void build(RuleBuildContext context) {   
+    public void build(RuleBuildContext context) {
         // pushing consequence LHS into the stack for variable resolution
         context.getBuildStack().push( context.getRule().getLhs() );
-        
-        try {        
-        final DroolsMVELFactory factory = new DroolsMVELFactory(context.getDeclarationResolver().getDeclarations(), null, context.getPkg().getGlobals());
-        factory.setNextFactory( ((MVELDialect)context.getDialect()).getClassImportResolverFactory() );        
-        
 
-        final Serializable expr = MVEL.compileExpression( (String) context.getRuleDescr().getSalience(), ((MVELDialect)context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+        try {
+            final DroolsMVELFactory factory = new DroolsMVELFactory( context.getDeclarationResolver().getDeclarations(),
+                                                                     null,
+                                                                     context.getPkg().getGlobals() );
+            // This builder is re-usable in other dialects, so specify by name
+            final ClassImportResolverFactory classImportResolverFactory = ((MVELDialect) context.getDialect( "mvel" )).getClassImportResolverFactory();
+            factory.setNextFactory( classImportResolverFactory );
 
-        MVELSalienceExpression salience = new MVELSalienceExpression(expr, factory);
-        
-        context.getRule().setSalience( salience );
+            final Serializable expr = MVEL.compileExpression( (String) context.getRuleDescr().getSalience(),
+                                                              classImportResolverFactory.getImportedClasses() );
+
+            MVELSalienceExpression salience = new MVELSalienceExpression( expr,
+                                                                          factory );
+
+            context.getRule().setSalience( salience );
         } catch ( final Exception e ) {
             context.getErrors().add( new RuleError( context.getRule(),
                                                     context.getRuleDescr(),
                                                     null,
                                                     "Unable to build expression for 'salience' node '" + context.getRuleDescr().getSalience() + "'" ) );
-        }        
+        }
     }
 
 }

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/Java5Test.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -22,8 +22,7 @@
         assertFalse( builder.hasErrors() );
     }
 
-    //@FIXME
-    public void FIXME_testJava14Defaults() throws Exception {
+    public void testJava14Defaults() throws Exception {
         final PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
         conf.setCompiler( PackageBuilderConfiguration.JANINO );
         final PackageBuilder builder = new PackageBuilder( conf );

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -78,9 +78,8 @@
                              "Rule 2",
                              list.get( 1 ) );
     }
-    
-    // @FIXME    
-    public void FIXMEtestSalienceExpression() throws Exception {
+     
+    public void testSalienceExpression() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_salienceExpressionRule.drl" ) ) );
         final Package pkg = builder.getPackage();

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -787,8 +787,7 @@
                       list.get( 3 ) );
     }
 
-    // @FIXME
-    public void FIXMEtestBasicFrom() throws Exception {
+    public void testBasicFrom() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_From.drl" ) ) );
         final Package pkg = builder.getPackage();
@@ -843,8 +842,7 @@
                       list3.get( 0 ) );
     }
 
-    // @FIXME
-    public void FIXME_testFromWithParams() throws Exception {
+    public void testFromWithParams() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_FromWithParams.drl" ) ) );
         final Package pkg = builder.getPackage();

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-05-29 14:34:28 UTC (rev 12214)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java	2007-05-29 15:18:10 UTC (rev 12215)
@@ -35,14 +35,16 @@
 import org.mvel.MVEL;
 
 public class MVELSalienceBuilderTest extends TestCase {
-    public void test1() {        
+    public void testSimpleExpression() {        
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
         ruleDescr.setSalience( "p.age + 20" );
         ruleDescr.setConsequence( "" );
 
-        DialectRegistry registry = new DialectRegistry(); 
+        DialectRegistry registry = new DialectRegistry();
         registry.addDialect( "default",
+                             new MVELDialect( new PackageBuilder( pkg ) ) );        
+        registry.addDialect( "mvel",
                              new MVELDialect( new PackageBuilder( pkg ) ) );           
         final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
                                                                                ruleDescr,




More information about the jboss-svn-commits mailing list