[jboss-svn-commits] JBL Code SVN: r12270 - in labs/jbossrules/trunk/drools-compiler: src/main/java/org/drools/compiler and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 31 20:49:14 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-05-31 20:49:14 -0400 (Thu, 31 May 2007)
New Revision: 12270
Added:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ImportError.java
Modified:
labs/jbossrules/trunk/drools-compiler/.classpath
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/RuleBuildContext.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ExplicitAnd.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_StaticField.drl
Log:
JBRULES-713 Make Dialects Pluggeable
-fine tuning how default dialects are determined.
Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/.classpath 2007-06-01 00:49:14 UTC (rev 12270)
@@ -5,14 +5,16 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta21/mvel14-1.2beta21.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/stringtemplate/3.0/stringtemplate-3.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.0/antlr-3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.1.v_677_R32x/core-3.2.1.v_677_R32x.jar"/>
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
<classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta22/mvel14-1.2beta22.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.1.v_677_R32x/core-3.2.1.v_677_R32x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ImportError.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ImportError.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ImportError.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -0,0 +1,34 @@
+package org.drools.compiler;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class ImportError extends DroolsError {
+ private String importName;
+
+ public ImportError(final String importName) {
+ this.importName = importName;
+ }
+
+ public String getGlobal() {
+ return this.importName;
+ }
+
+ public String getMessage() {
+ return this.importName;
+ }
+
+}
\ No newline at end of file
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-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -118,9 +118,6 @@
this.results = new ArrayList();
this.pkg = pkg;
this.classFieldExtractorCache = new ClassFieldExtractorCache();
-
- this.dialects = configuration.buildDialectRegistry( this );
- this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
if ( this.pkg != null ) {
this.typeResolver = new ClassTypeResolver( this.pkg.getImports(),
@@ -132,7 +129,8 @@
configuration.getClassLoader() );
}
- //this.dialect = this.dialects.getDialect( "java" );
+ this.dialects = configuration.buildDialectRegistry( this );
+ this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
}
/**
@@ -228,13 +226,18 @@
}
// The Package does not have a default dialect, so set it
- if ( dialectName == null ) {
- dialectName = configuration.getDefaultDialect();
- packageDescr.addAttribute( new AttributeDescr("dialect",
- dialectName ) );
+ if ( dialectName == null && this.dialect == null ) {
+ dialectName = configuration.getDefaultDialect();
+ this.dialect = this.dialects.getDialect( dialectName );
+ }
+
+ if ( dialectName != null ) {
+ this.dialect = this.dialects.getDialect( dialectName );
+ } else if ( this.dialect == null ) {
+ this.dialect = this.dialects.getDialect( configuration.getDefaultDialect() );
}
- this.dialect = this.dialects.getDialect( dialectName );
+
if ( this.pkg != null ) {
// mergePackage( packageDescr ) ;
@@ -315,13 +318,13 @@
for ( final Iterator it = imports.iterator(); it.hasNext(); ) {
String importEntry = ((ImportDescr) it.next()).getTarget();
pkg.addImport( importEntry );
+ this.typeResolver.addImport( importEntry );
this.dialects.addImport( importEntry );
- this.typeResolver.addImport( importEntry );
}
for ( final Iterator it = packageDescr.getFunctionImports().iterator(); it.hasNext(); ) {
String importEntry = ((FunctionImportDescr) it.next()).getTarget();
- this.dialects.addImport( importEntry );
+ this.dialects.addStaticImport( importEntry );
pkg.addStaticImport( importEntry );
}
@@ -378,7 +381,8 @@
RuleBuildContext context = new RuleBuildContext( pkg,
ruleDescr,
- this.dialects );
+ this.dialects,
+ this.dialect );
this.builder.build( context );
this.results.addAll( context.getErrors() );
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-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/RuleBuildContext.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -82,14 +82,15 @@
private DialectRegistry dialectRegistry;
- private String defaultDialectName;
+ private Dialect dialect;
/**
* Default constructor
*/
public RuleBuildContext(final Package pkg,
final RuleDescr ruleDescr,
- final DialectRegistry dialectRegistry) {
+ final DialectRegistry dialectRegistry,
+ final Dialect defaultDialect) {
this.pkg = pkg;
this.methods = new ArrayList();
@@ -113,16 +114,14 @@
ruleDescr,
ruleDescr.getAttributes() );
- String dialectName = this.rule.getDialect();
- this.defaultDialectName = dialectName;
this.dialectRegistry = dialectRegistry;
+ this.dialect = ( this.rule.getDialect() != null ) ? this.dialectRegistry.getDialect( this.rule.getDialect() ) : defaultDialect;
-
getDialect().init( ruleDescr );
}
public Dialect getDialect() {
- return this.dialectRegistry.getDialect( this.defaultDialectName );
+ return dialect;
}
public Dialect getDialect(String dialectName) {
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -10,6 +10,7 @@
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.TypeResolver;
+import org.drools.compiler.ImportError;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.RuleError;
@@ -59,17 +60,17 @@
Dialect {
private final PatternBuilder pattern = new PatternBuilder( this );
- //private final JavaAccumulateBuilder accumulate = new JavaAccumulateBuilder();
+ //private final JavaAccumulateBuilder accumulate = new JavaAccumulateBuilder();
private final SalienceBuilder salience = new MVELSalienceBuilder();
private final MVELEvalBuilder eval = new MVELEvalBuilder();
private final MVELPredicateBuilder predicate = new MVELPredicateBuilder();
private final MVELReturnValueBuilder returnValue = new MVELReturnValueBuilder();
private final MVELConsequenceBuilder consequence = new MVELConsequenceBuilder();
- //private final JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
+ //private final JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
private final MVELFromBuilder from = new MVELFromBuilder();
private List results;
- //private final JavaFunctionBuilder function = new JavaFunctionBuilder();
+ //private final JavaFunctionBuilder function = new JavaFunctionBuilder();
private Package pkg;
private PackageBuilderConfiguration configuration;
@@ -157,16 +158,22 @@
}
public void addImport(String importEntry) {
- try {
- Class cls = this.configuration.getClassLoader().loadClass( importEntry );
+ if ( importEntry.endsWith( "*" ) ) {
+ return;
+ }
+ try {
+ Class cls = this.typeResolver.resolveType( importEntry );
this.importFactory.addClass( cls );
} catch ( ClassNotFoundException e ) {
- // @todo: add MVEL error
- this.results.add( null );
+ this.results.add( new ImportError( importEntry ) );
}
}
- public void addStaticImport(String staticImportEntry) {
+ public void addStaticImport(String staticImportEntry) {
+ if ( staticImportEntry.endsWith( "*" ) ) {
+ return;
+ }
+
int index = staticImportEntry.lastIndexOf( '.' );
String className = staticImportEntry.substring( 0, index );
String methodName = staticImportEntry.substring( 0, index + 1 );
@@ -181,8 +188,7 @@
}
}
} catch ( ClassNotFoundException e ) {
- // @todo: add MVEL error
- this.results.add( null );
+ this.results.add( new ImportError( staticImportEntry ) );
}
}
@@ -270,7 +276,7 @@
}
public List getResults() {
- return null;
+ return results;
}
public ReturnValueBuilder getReturnValueBuilder() {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/RuleBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -91,7 +91,7 @@
DialectRegistry registry = new DialectRegistry();
registry.addDialect( "java", dialect );
- RuleBuildContext context = new RuleBuildContext(pkg, ruleDescr, registry);
+ RuleBuildContext context = new RuleBuildContext(pkg, ruleDescr, registry, dialect);
builder.build( context );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedBuildContent.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -6,6 +6,7 @@
import org.drools.compiler.DialectRegistry;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Package;
+import org.drools.rule.builder.Dialect;
import org.drools.rule.builder.RuleBuildContext;
import org.drools.spi.DeclarationScopeResolver;
@@ -14,10 +15,12 @@
public InstrumentedBuildContent(final Package pkg,
final RuleDescr ruleDescr,
- final DialectRegistry registry) {
+ final DialectRegistry registry,
+ final Dialect dialect) {
super( pkg,
ruleDescr,
- registry );
+ registry,
+ dialect );
}
public void setDeclarationResolver(final DeclarationScopeResolver declarationScopeResolver) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -39,12 +39,14 @@
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
ruleDescr.setConsequence( "cheese.setPrice( 5 );" );
+ MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
DialectRegistry registry = new DialectRegistry();
registry.addDialect( "default",
- new MVELDialect( new PackageBuilder( pkg ) ) );
+ mvelDialect );
final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
ruleDescr,
- registry );
+ registry,
+ mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -39,12 +39,14 @@
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+ MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
DialectRegistry registry = new DialectRegistry();
registry.addDialect( "default",
- new MVELDialect( new PackageBuilder( pkg ) ) );
+ mvelDialect );
final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
ruleDescr,
- registry );
+ registry,
+ mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
final FieldExtractor extractor = new ClassFieldExtractor( Cheese.class,
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -42,12 +42,15 @@
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
- DialectRegistry registry = new DialectRegistry();
+ MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
+ DialectRegistry registry = new DialectRegistry();
registry.addDialect( "default",
- new MVELDialect( new PackageBuilder( pkg ) ) );
+ mvelDialect );
final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
ruleDescr,
- registry );
+ registry,
+ mvelDialect );
+
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
final FieldExtractor extractor = new ClassFieldExtractor( Cheese.class,
"price" );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -46,12 +46,15 @@
final Package pkg = new Package( "pkg1" );
final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+ MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
DialectRegistry registry = new DialectRegistry();
registry.addDialect( "default",
- new MVELDialect( new PackageBuilder( pkg ) ));
+ mvelDialect );
final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
ruleDescr,
- registry );
+ registry,
+ mvelDialect );
+
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
final FieldExtractor extractor = new ClassFieldExtractor( Cheese.class,
"price" );
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-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilderTest.java 2007-06-01 00:49:14 UTC (rev 12270)
@@ -41,14 +41,14 @@
ruleDescr.setSalience( "p.age + 20" );
ruleDescr.setConsequence( "" );
+ MVELDialect mvelDialect = new MVELDialect( new PackageBuilder( pkg ) );
DialectRegistry registry = new DialectRegistry();
- registry.addDialect( "default",
- new MVELDialect( new PackageBuilder( pkg ) ) );
registry.addDialect( "mvel",
- new MVELDialect( new PackageBuilder( pkg ) ) );
+ mvelDialect );
final InstrumentedBuildContent context = new InstrumentedBuildContent( pkg,
ruleDescr,
- registry );
+ registry,
+ mvelDialect );
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ExplicitAnd.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ExplicitAnd.drl 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ExplicitAnd.drl 2007-06-01 00:49:14 UTC (rev 12270)
@@ -2,7 +2,6 @@
import org.drools.integrationtests.helloworld.Message
import org.drools.Cheese;
-import java.lang.*
global java.util.List list;
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_StaticField.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_StaticField.drl 2007-06-01 00:48:58 UTC (rev 12269)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_StaticField.drl 2007-06-01 00:49:14 UTC (rev 12270)
@@ -20,5 +20,4 @@
p : Cheesery(status == Cheesery.MAKING_CHEESE, maturity == Maturity.YOUNG)
then
list.add( p );
-
end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list