[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