[jboss-svn-commits] JBL Code SVN: r9868 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Feb 28 22:09:55 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-02-28 22:09:55 -0500 (Wed, 28 Feb 2007)
New Revision: 9868
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleClassBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
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/ColumnBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java
Log:
JBRULES-713 Make Dialects Pluggeable
-Moved RuleBuilder and ColumnBuilder to use the new Dialect class
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 2007-03-01 02:40:42 UTC (rev 9867)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -57,6 +57,7 @@
import org.drools.rule.Rule;
import org.drools.rule.builder.FunctionBuilder;
import org.drools.rule.builder.RuleBuilder;
+import org.drools.rule.builder.dialect.java.JavaDialect;
import org.drools.rule.builder.dialect.java.JavaFunctionBuilder;
import org.drools.rule.builder.dialect.java.PackageStore;
import org.drools.spi.FunctionResolver;
@@ -70,8 +71,6 @@
* This can be done by merging into existing binary packages, or totally from source.
*/
public class PackageBuilder {
- private static final JavaCompiler cachedJavaCompiler = null;
-
private JavaCompiler compiler;
private Package pkg;
private List results;
@@ -203,7 +202,8 @@
}
builder = new RuleBuilder( getTypeResolver(),
- this.classFieldExtractorCache );
+ this.classFieldExtractorCache,
+ new JavaDialect() );
//only try to compile if there are no parse errors
if ( !hasErrors() ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java 2007-03-01 02:40:42 UTC (rev 9867)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ColumnBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.antlr.stringtemplate.StringTemplate;
import org.apache.commons.jci.utils.ClassUtils;
@@ -70,6 +71,12 @@
*/
public class ColumnBuilder {
+ private Dialect dialect;
+
+ public ColumnBuilder(Dialect dialect) {
+ this.dialect = dialect;
+ }
+
/**
* Build a column for the given descriptor in the current
* context and using the given utils object
@@ -379,7 +386,7 @@
localDeclarations );
column.addConstraint( predicateConstraint );
- JavaPredicateBuilder builder = new JavaPredicateBuilder();
+ PredicateBuilder builder = (PredicateBuilder) dialect.getPredicateBuilder();
builder.build( context,
utils,
@@ -545,7 +552,7 @@
localDeclarations,
evaluator );
- JavaReturnValueBuilder builder = new JavaReturnValueBuilder();
+ ReturnValueBuilder builder = (ReturnValueBuilder) this.dialect.getReturnValueBuilder();
builder.build( context,
utils,
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/Dialect.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -0,0 +1,20 @@
+package org.drools.rule.builder;
+
+import org.drools.reteoo.builder.EvalBuilder;
+
+public interface Dialect {
+ ConditionalElementBuilder getEvalBuilder();
+
+ AccumulateBuilder getAccumulateBuilder();
+
+ PredicateBuilder getPredicateBuilder();
+
+ ReturnValueBuilder getReturnValueBuilder();
+
+ ConsequenceBuilder getConsequenceBuilder();
+
+ RuleClassBuilder getRuleClassBuilder();
+
+ FromBuilder getFromBuilder();
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java 2007-03-01 02:40:42 UTC (rev 9867)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -48,7 +48,7 @@
import org.drools.rule.builder.dialect.java.JavaEvalBuilder;
import org.drools.rule.builder.dialect.java.JavaExprAnalyzer;
import org.drools.rule.builder.dialect.java.KnowledgeHelperFixer;
-import org.drools.rule.builder.dialect.java.RuleClassBuilder;
+import org.drools.rule.builder.dialect.java.JavaRuleClassBuilder;
import org.drools.rule.builder.dialect.mvel.MVELFromBuilder;
/**
@@ -75,23 +75,24 @@
// the builder for the rule class
private RuleClassBuilder classBuilder;
+
+ private Dialect dialect;
// Constructor
public RuleBuilder(final TypeResolver typeResolver,
- final ClassFieldExtractorCache cache) {
+ final ClassFieldExtractorCache cache,
+ Dialect dialect) {
+ this.dialect = dialect;
+
// statically adding all builders to the map
// but in the future we can move that to a configuration
// if we want to
this.builders = new HashMap();
- builders.put( EvalDescr.class,
- new JavaEvalBuilder() );
- builders.put( FromDescr.class,
- new MVELFromBuilder() );
+
builders.put( CollectDescr.class,
- new CollectBuilder() );
- builders.put( AccumulateDescr.class,
- new JavaAccumulateBuilder() );
+ new CollectBuilder() );
+
builders.put( ForallDescr.class,
new ForallBuilder() );
GroupElementBuilder gebuilder = new GroupElementBuilder();
@@ -102,20 +103,30 @@
builders.put( NotDescr.class,
gebuilder );
builders.put( ExistsDescr.class,
- gebuilder );
+ gebuilder );
+
+ // dialect specific
+ this.columnBuilder = new ColumnBuilder( this.dialect );
+
+ builders.put( FromDescr.class,
+ this.dialect.getFromBuilder() );
+
+ builders.put( AccumulateDescr.class,
+ this.dialect.getAccumulateBuilder() );
+ builders.put( EvalDescr.class,
+ this.dialect.getEvalBuilder() );
+
+ this.consequenceBuilder = (ConsequenceBuilder) this.dialect.getConsequenceBuilder();
+
+ this.classBuilder = ( RuleClassBuilder) this.dialect.getRuleClassBuilder();
+
this.utils = new BuildUtils( new KnowledgeHelperFixer(),
new DeclarationTypeFixer(),
new JavaExprAnalyzer(),
typeResolver,
cache,
- builders );
-
- this.columnBuilder = new ColumnBuilder();
-
- this.consequenceBuilder = new JavaConsequenceBuilder();
-
- this.classBuilder = new RuleClassBuilder();
+ builders );
}
public Map getInvokers() {
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleClassBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleClassBuilder.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleClassBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -0,0 +1,12 @@
+package org.drools.rule.builder;
+
+import org.drools.lang.descr.RuleDescr;
+import org.drools.rule.builder.dialect.java.BuildUtils;
+
+public interface RuleClassBuilder {
+
+ public void buildRule(final BuildContext context,
+ final BuildUtils utils,
+ final RuleDescr ruleDescr);
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaDialect.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -0,0 +1,56 @@
+package org.drools.rule.builder.dialect.java;
+
+import org.drools.reteoo.builder.EvalBuilder;
+import org.drools.rule.builder.AccumulateBuilder;
+import org.drools.rule.builder.ConditionalElementBuilder;
+import org.drools.rule.builder.ConsequenceBuilder;
+import org.drools.rule.builder.Dialect;
+import org.drools.rule.builder.FromBuilder;
+import org.drools.rule.builder.PredicateBuilder;
+import org.drools.rule.builder.ReturnValueBuilder;
+import org.drools.rule.builder.RuleBuilder;
+import org.drools.rule.builder.RuleClassBuilder;
+import org.drools.rule.builder.dialect.mvel.MVELFromBuilder;
+
+public class JavaDialect
+ implements
+ Dialect {
+
+ private JavaAccumulateBuilder accumulate = new JavaAccumulateBuilder();
+ private JavaConsequenceBuilder consequence = new JavaConsequenceBuilder();
+ private JavaEvalBuilder eval = new JavaEvalBuilder();
+ private JavaPredicateBuilder predicate = new JavaPredicateBuilder();
+ private JavaReturnValueBuilder returnValue = new JavaReturnValueBuilder();
+ private JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
+ private MVELFromBuilder from = new MVELFromBuilder();
+
+
+ public AccumulateBuilder getAccumulateBuilder() {
+ return this.accumulate;
+ }
+
+ public ConsequenceBuilder getConsequenceBuilder() {
+ return this.consequence;
+ }
+
+ public ConditionalElementBuilder getEvalBuilder() {
+ return this.eval;
+ }
+
+ public PredicateBuilder getPredicateBuilder() {
+ return this.predicate;
+ }
+
+ public ReturnValueBuilder getReturnValueBuilder() {
+ return this.returnValue;
+ }
+
+ public RuleClassBuilder getRuleClassBuilder() {
+ return this.rule;
+ }
+
+ public FromBuilder getFromBuilder() {
+ return this.from;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java 2007-03-01 02:40:42 UTC (rev 9867)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaReturnValueBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -7,8 +7,9 @@
import org.drools.rule.Declaration;
import org.drools.rule.ReturnValueRestriction;
import org.drools.rule.builder.BuildContext;
+import org.drools.rule.builder.ReturnValueBuilder;
-public class JavaReturnValueBuilder {
+public class JavaReturnValueBuilder implements ReturnValueBuilder {
public void build(final BuildContext context,
final BuildUtils utils,
final List[] usedIdentifiers,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java 2007-03-01 02:40:42 UTC (rev 9867)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaRuleClassBuilder.java 2007-03-01 03:09:55 UTC (rev 9868)
@@ -20,13 +20,17 @@
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.builder.BuildContext;
+import org.drools.rule.builder.RuleClassBuilder;
/**
* @author etirelli
*
*/
-public class JavaRuleClassBuilder {
+public class JavaRuleClassBuilder implements RuleClassBuilder {
+ /* (non-Javadoc)
+ * @see org.drools.rule.builder.dialect.java.RuleClassBuilder#buildRule(org.drools.rule.builder.BuildContext, org.drools.rule.builder.dialect.java.BuildUtils, org.drools.lang.descr.RuleDescr)
+ */
public void buildRule(final BuildContext context,
final BuildUtils utils,
final RuleDescr ruleDescr) {
More information about the jboss-svn-commits
mailing list