[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