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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 26 18:31:35 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-02-26 18:31:35 -0500 (Mon, 26 Feb 2007)
New Revision: 9773

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaPredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaReturnValueBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/PredicateBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ReturnValueBuilder.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/dialect/mvel/MVELEvalBuilderTest.java
Log:
JBRULES-708 MVEL Integration
-Refactoring the api to allow pluggeable implementations for return value and predicate

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java	2007-02-26 22:57:00 UTC (rev 9772)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ColumnBuilder.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -124,7 +124,7 @@
 
         Column column;
         if ( columnDescr.getIdentifier() != null && !columnDescr.getIdentifier().equals( "" ) ) {
-            
+
             if ( context.getDeclarationResolver().isDuplicated( columnDescr.getIdentifier() ) ) {
                 // This declaration already  exists, so throw an Exception
                 context.getErrors().add( new RuleError( context.getRule(),
@@ -354,11 +354,6 @@
                        final BuildUtils utils,
                        final Column column,
                        final PredicateDescr predicateDescr) {
-        // generate 
-        // generate Invoker
-        final String className = "predicate" + context.getNextId();
-        predicateDescr.setClassMethodName( className );
-
         final List[] usedIdentifiers = utils.getUsedIdentifiers( context,
                                                                  predicateDescr,
                                                                  predicateDescr.getText() );
@@ -380,64 +375,16 @@
                                                                                  localDeclarations );
         column.addConstraint( predicateConstraint );
 
-        StringTemplate st = utils.getRuleGroup().getInstanceOf( "predicateMethod" );
+        JavaPredicateBuilder builder = new JavaPredicateBuilder();
 
-        utils.setStringTemplateAttributes( context,
-                                           st,
-                                           previousDeclarations,
-                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+        builder.build( context,
+                       utils,
+                       usedIdentifiers,
+                       previousDeclarations,
+                       localDeclarations,
+                       predicateConstraint,
+                       predicateDescr );
 
-        final String[] localDeclarationTypes = new String[localDeclarations.length];
-        for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
-            localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
-        }
-
-        st.setAttribute( "localDeclarations",
-                         localDeclarations );
-        st.setAttribute( "localDeclarationTypes",
-                         localDeclarationTypes );
-
-        st.setAttribute( "methodName",
-                         className );
-
-        final String predicateText = predicateDescr.getText();
-        
-        st.setAttribute( "text",
-                         predicateText );
-
-        context.getMethods().add( st.toString() );
-
-        st = utils.getInvokerGroup().getInstanceOf( "predicateInvoker" );
-
-        st.setAttribute( "package",
-                         context.getPkg().getName() );
-        st.setAttribute( "ruleClassName",
-                         utils.ucFirst( context.getRuleDescr().getClassName() ) );
-        st.setAttribute( "invokerClassName",
-                         context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
-        st.setAttribute( "methodName",
-                         className );
-
-        utils.setStringTemplateAttributes( context,
-                                           st,
-                                           previousDeclarations,
-                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
-
-        st.setAttribute( "localDeclarations",
-                         localDeclarations );
-        st.setAttribute( "localDeclarationTypes",
-                         localDeclarationTypes );
-
-        st.setAttribute( "hashCode",
-                         predicateText.hashCode() );
-
-        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
-        context.getInvokers().put( invokerClassName,
-                                   st.toString() );
-        context.getInvokerLookups().put( invokerClassName,
-                                         predicateConstraint );
-        context.getDescrLookups().put( invokerClassName,
-                                       predicateDescr );
     }
 
     private Restriction buildRestriction(final BuildContext context,
@@ -564,9 +511,6 @@
                                                     final FieldExtractor extractor,
                                                     final FieldConstraintDescr fieldConstraintDescr,
                                                     final ReturnValueRestrictionDescr returnValueRestrictionDescr) {
-        final String className = "returnValue" + context.getNextId();
-        returnValueRestrictionDescr.setClassMethodName( className );
-
         final List[] usedIdentifiers = utils.getUsedIdentifiers( context,
                                                                  returnValueRestrictionDescr,
                                                                  returnValueRestrictionDescr.getText() );
@@ -597,64 +541,16 @@
                                                                                           localDeclarations,
                                                                                           evaluator );
 
-        StringTemplate st = utils.getRuleGroup().getInstanceOf( "returnValueMethod" );
+        JavaReturnValueBuilder builder = new JavaReturnValueBuilder();
 
-        utils.setStringTemplateAttributes( context,
-                                           st,
-                                           previousDeclarations,
-                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+        builder.build( context,
+                       utils,
+                       usedIdentifiers,
+                       previousDeclarations,
+                       localDeclarations,
+                       returnValueRestriction,
+                       returnValueRestrictionDescr );
 
-        final String[] localDeclarationTypes = new String[localDeclarations.length];
-        for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
-            localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
-        }
-
-        st.setAttribute( "localDeclarations",
-                         localDeclarations );
-        st.setAttribute( "localDeclarationTypes",
-                         localDeclarationTypes );
-
-        st.setAttribute( "methodName",
-                         className );
-
-        final String returnValueText = returnValueRestrictionDescr.getText();
-        st.setAttribute( "text",
-                         returnValueText );
-
-        context.getMethods().add( st.toString() );
-
-        st = utils.getInvokerGroup().getInstanceOf( "returnValueInvoker" );
-
-        st.setAttribute( "package",
-                         context.getPkg().getName() );
-        st.setAttribute( "ruleClassName",
-                         utils.ucFirst( context.getRuleDescr().getClassName() ) );
-        st.setAttribute( "invokerClassName",
-                         context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
-        st.setAttribute( "methodName",
-                         className );
-
-        utils.setStringTemplateAttributes( context,
-                                           st,
-                                           previousDeclarations,
-                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
-
-        st.setAttribute( "localDeclarations",
-                         localDeclarations );
-        st.setAttribute( "localDeclarationTypes",
-                         localDeclarationTypes );
-
-        st.setAttribute( "hashCode",
-                         returnValueText.hashCode() );
-
-        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
-        context.getInvokers().put( invokerClassName,
-                                   st.toString() );
-        context.getInvokerLookups().put( invokerClassName,
-                                         returnValueRestriction );
-        context.getDescrLookups().put( invokerClassName,
-                                       returnValueRestrictionDescr );
-
         return returnValueRestriction;
     }
 

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaPredicateBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaPredicateBuilder.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -0,0 +1,86 @@
+package org.drools.semantics.java.builder;
+
+import java.util.List;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.PredicateConstraint;
+
+public class JavaPredicateBuilder
+    implements
+    PredicateBuilder {
+
+    public void build(final BuildContext context,
+                      final BuildUtils utils,
+                      final List[] usedIdentifiers,
+                      final Declaration[] previousDeclarations,
+                      final Declaration[] localDeclarations,
+                      final PredicateConstraint predicateConstraint,
+                      final PredicateDescr predicateDescr) {
+        // generate 
+        // generate Invoker
+        final String className = "predicate" + context.getNextId();
+        predicateDescr.setClassMethodName( className );
+
+        StringTemplate st = utils.getRuleGroup().getInstanceOf( "predicateMethod" );
+
+        utils.setStringTemplateAttributes( context,
+                                           st,
+                                           previousDeclarations,
+                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+
+        final String[] localDeclarationTypes = new String[localDeclarations.length];
+        for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
+            localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
+        }
+
+        st.setAttribute( "localDeclarations",
+                         localDeclarations );
+        st.setAttribute( "localDeclarationTypes",
+                         localDeclarationTypes );
+
+        st.setAttribute( "methodName",
+                         className );
+
+        final String predicateText = predicateDescr.getText();
+
+        st.setAttribute( "text",
+                         predicateText );
+
+        context.getMethods().add( st.toString() );
+
+        st = utils.getInvokerGroup().getInstanceOf( "predicateInvoker" );
+
+        st.setAttribute( "package",
+                         context.getPkg().getName() );
+        st.setAttribute( "ruleClassName",
+                         utils.ucFirst( context.getRuleDescr().getClassName() ) );
+        st.setAttribute( "invokerClassName",
+                         context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
+        st.setAttribute( "methodName",
+                         className );
+
+        utils.setStringTemplateAttributes( context,
+                                           st,
+                                           previousDeclarations,
+                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+
+        st.setAttribute( "localDeclarations",
+                         localDeclarations );
+        st.setAttribute( "localDeclarationTypes",
+                         localDeclarationTypes );
+
+        st.setAttribute( "hashCode",
+                         predicateText.hashCode() );
+
+        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
+        context.getInvokers().put( invokerClassName,
+                                   st.toString() );
+        context.getInvokerLookups().put( invokerClassName,
+                                         predicateConstraint );
+        context.getDescrLookups().put( invokerClassName,
+                                       predicateDescr );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaReturnValueBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/JavaReturnValueBuilder.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -0,0 +1,79 @@
+package org.drools.semantics.java.builder;
+
+import java.util.List;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.drools.lang.descr.ReturnValueRestrictionDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.ReturnValueRestriction;
+
+public class JavaReturnValueBuilder {
+    public void build(final BuildContext context,
+                      final BuildUtils utils,
+                      final List[] usedIdentifiers,
+                      final Declaration[] previousDeclarations,
+                      final Declaration[] localDeclarations,
+                      final ReturnValueRestriction returnValueRestriction,
+                      final ReturnValueRestrictionDescr returnValueRestrictionDescr) {
+        final String className = "returnValue" + context.getNextId();
+        returnValueRestrictionDescr.setClassMethodName( className );
+
+        StringTemplate st = utils.getRuleGroup().getInstanceOf( "returnValueMethod" );
+
+        utils.setStringTemplateAttributes( context,
+                                           st,
+                                           previousDeclarations,
+                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+
+        final String[] localDeclarationTypes = new String[localDeclarations.length];
+        for ( int i = 0, size = localDeclarations.length; i < size; i++ ) {
+            localDeclarationTypes[i] = utils.getTypeFixer().fix( localDeclarations[i] );
+        }
+
+        st.setAttribute( "localDeclarations",
+                         localDeclarations );
+        st.setAttribute( "localDeclarationTypes",
+                         localDeclarationTypes );
+
+        st.setAttribute( "methodName",
+                         className );
+
+        final String returnValueText = returnValueRestrictionDescr.getText();
+        st.setAttribute( "text",
+                         returnValueText );
+
+        context.getMethods().add( st.toString() );
+
+        st = utils.getInvokerGroup().getInstanceOf( "returnValueInvoker" );
+
+        st.setAttribute( "package",
+                         context.getPkg().getName() );
+        st.setAttribute( "ruleClassName",
+                         utils.ucFirst( context.getRuleDescr().getClassName() ) );
+        st.setAttribute( "invokerClassName",
+                         context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker" );
+        st.setAttribute( "methodName",
+                         className );
+
+        utils.setStringTemplateAttributes( context,
+                                           st,
+                                           previousDeclarations,
+                                           (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
+
+        st.setAttribute( "localDeclarations",
+                         localDeclarations );
+        st.setAttribute( "localDeclarationTypes",
+                         localDeclarationTypes );
+
+        st.setAttribute( "hashCode",
+                         returnValueText.hashCode() );
+
+        final String invokerClassName = context.getPkg().getName() + "." + context.getRuleDescr().getClassName() + utils.ucFirst( className ) + "Invoker";
+        context.getInvokers().put( invokerClassName,
+                                   st.toString() );
+        context.getInvokerLookups().put( invokerClassName,
+                                         returnValueRestriction );
+        context.getDescrLookups().put( invokerClassName,
+                                       returnValueRestrictionDescr );
+    }
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/PredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/PredicateBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/PredicateBuilder.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -0,0 +1,17 @@
+package org.drools.semantics.java.builder;
+
+import java.util.List;
+
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.PredicateConstraint;
+
+public interface PredicateBuilder {
+    public void build(final BuildContext context,
+                      final BuildUtils utils,
+                      final List[] usedIdentifiers,
+                      final Declaration[] previousDeclarations,
+                      final Declaration[] localDeclarations,
+                      final PredicateConstraint predicateConstraint,
+                      final PredicateDescr predicateDescr);
+}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ReturnValueBuilder.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/builder/ReturnValueBuilder.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -0,0 +1,17 @@
+package org.drools.semantics.java.builder;
+
+import java.util.List;
+
+import org.drools.lang.descr.ReturnValueRestrictionDescr;
+import org.drools.rule.Declaration;
+import org.drools.rule.ReturnValueRestriction;
+
+public interface ReturnValueBuilder {
+    public void build(final BuildContext context,
+                      final BuildUtils utils,
+                      final List[] usedIdentifiers,
+                      final Declaration[] previousDeclarations,
+                      final Declaration[] localDeclarations,
+                      final ReturnValueRestriction returnValueRestriction,
+                      final ReturnValueRestrictionDescr returnValueRestrictionDescr);
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/dialect/mvel/MVELEvalBuilderTest.java	2007-02-26 22:57:00 UTC (rev 9772)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/dialect/mvel/MVELEvalBuilderTest.java	2007-02-26 23:31:35 UTC (rev 9773)
@@ -28,7 +28,7 @@
     public void setUp() {     
     }
 
-    public void test1() {
+    public void testSimpleExpression() {
         Package pkg = new Package( "pkg1" );
         RuleDescr ruleDescr = new RuleDescr( "rule 1" );
 




More information about the jboss-svn-commits mailing list