[jboss-svn-commits] JBL Code SVN: r20746 - in labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools: rule/builder/dialect/mvel and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jun 24 22:10:59 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-06-24 22:10:59 -0400 (Tue, 24 Jun 2008)
New Revision: 20746
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/dialect/mvel/MVELConsequenceBuilder.java
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/MVELEvalBuilder.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/MVELPredicateBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
Log:
JBRULES-720 Clips Parser
-getting deffunction and builtin functions to work.
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 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -224,10 +224,6 @@
this.results = new ArrayList();
this.classFieldExtractorCache = ClassFieldAccessorCache.getInstance();
- ruleBase = (ReteooRuleBase) ruleBase;
- }
-
- public void setRuleBase(RuleBase ruleBase) {
this.ruleBase = (ReteooRuleBase) ruleBase;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -68,7 +68,7 @@
context.getBuildStack().push( context.getRule().getLhs() );
try {
- MVELDialect dialect = (MVELDialect) context.getDialect();
+ MVELDialect dialect = (MVELDialect) context.getDialect( context.getDialect().getId() );
String text = processMacros( (String) context.getRuleDescr().getConsequence() );
@@ -93,7 +93,8 @@
context.getRule().setConsequence( new MVELConsequence( expr,
- factory ) );
+ factory,
+ dialect.getId() ) );
} catch ( final Exception e ) {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
context.getRuleDescr(),
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 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -41,6 +41,7 @@
import org.drools.lang.descr.QueryDescr;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.Declaration;
+import org.drools.rule.DialectRuntimeRegistry;
import org.drools.rule.JavaDialectRuntimeData;
import org.drools.rule.LineMappings;
import org.drools.rule.MVELDialectRuntimeData;
@@ -83,7 +84,7 @@
Dialect,
Externalizable {
- public final static String ID = "mvel";
+ private String id = "mvel";
private final static String EXPRESSION_DIALECT_NAME = "MVEL";
@@ -124,33 +125,38 @@
protected MemoryResourceReader src;
protected Package pkg;
- protected MVELDialectRuntimeData data;
private MVELDialectConfiguration configuration;
-
- private PackageRegistry packageRegistry;
-
+
+ private PackageRegistry packageRegistry;
+
private ClassFieldAccessorCache classFieldExtractorCache;
private Map imports;
private Map packageImports;
-
private boolean strictMode;
private int languageLevel;
- public static final Object COMPILER_LOCK = new Object();
+ public static final Object COMPILER_LOCK = new Object();
+
+ public MVELDialect(PackageBuilder builder,
+ PackageRegistry pkgRegistry,
+ Package pkg) {
+ this( builder, pkgRegistry, pkg, "mvel" );
+ }
public MVELDialect(PackageBuilder builder,
PackageRegistry pkgRegistry,
- Package pkg) {
+ Package pkg,
+ String id) {
+ this.id = id;
this.pkg = pkg;
this.packageRegistry = pkgRegistry;
-
- this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
+
+ this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
setLanguageLevel( this.configuration.getLangLevel() );
this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
this.strictMode = this.configuration.isStrict();
-
MVEL.setThreadSafe( true );
this.imports = new HashMap();
@@ -161,28 +167,27 @@
new ModifyInterceptor() );
this.results = new ArrayList();
-
-
-// this.data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
-//
-// this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
-// this.data );
-
+
+ // this.data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
+ //
+ // this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
+ // this.data );
+
MVELDialectRuntimeData data = null;
// initialise the dialect runtime data if it doesn't already exist
- if ( pkg.getDialectRuntimeRegistry().getDialectData( ID ) == null ) {
+ if ( pkg.getDialectRuntimeRegistry().getDialectData( getId() ) == null ) {
data = new MVELDialectRuntimeData( this.pkg.getDialectRuntimeRegistry() );
- this.pkg.getDialectRuntimeRegistry().setDialectData( ID,
+ this.pkg.getDialectRuntimeRegistry().setDialectData( getId(),
data );
- }
-
-
+ }
+
this.results = new ArrayList();
this.src = new MemoryResourceReader();
if ( this.pkg != null ) {
this.addImport( this.pkg.getName() + ".*" );
}
}
+
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
@@ -190,7 +195,7 @@
results = (List) in.readObject();
src = (MemoryResourceReader) in.readObject();
pkg = (Package) in.readObject();
- data = (MVELDialectRuntimeData) in.readObject();
+ packageRegistry = (PackageRegistry) in.readObject();
configuration = (MVELDialectConfiguration) in.readObject();
classFieldExtractorCache = (ClassFieldAccessorCache) in.readObject();
imports = (Map) in.readObject();
@@ -203,7 +208,7 @@
out.writeObject( results );
out.writeObject( src );
out.writeObject( pkg );
- out.writeObject( data );
+ out.writeObject( packageRegistry );
out.writeObject( configuration );
out.writeObject( classFieldExtractorCache );
out.writeObject( imports );
@@ -214,20 +219,19 @@
public void setLanguageLevel(int languageLevel) {
this.languageLevel = languageLevel;
}
-
-
-// public static void setLanguageLevel(int level) {
-// synchronized ( lang ) {
-// // this synchronisation is needed as setLanguageLevel is not thread safe
-// // and we do not want to be calling this while something else is being parsed.
-// // the flag ensures it is just called once and no more.
-// if ( languageSet.booleanValue() == false ) {
-// languageSet = new Boolean( true );
-// AbstractParser.setLanguageLevel( level );
-// }
-// }
-// }
+ // public static void setLanguageLevel(int level) {
+ // synchronized ( lang ) {
+ // // this synchronisation is needed as setLanguageLevel is not thread safe
+ // // and we do not want to be calling this while something else is being parsed.
+ // // the flag ensures it is just called once and no more.
+ // if ( languageSet.booleanValue() == false ) {
+ // languageSet = new Boolean( true );
+ // AbstractParser.setLanguageLevel( level );
+ // }
+ // }
+ // }
+
public static void initBuilder() {
if ( builders != null ) {
return;
@@ -330,8 +334,9 @@
ExpressionCompiler compiler = new ExpressionCompiler( (String) functionDescr.getContent() );
Serializable s1 = compiler.compile();
Map<String, org.mvel.ast.Function> map = CompilerTools.extractAllDeclaredFunctions( (CompiledExpression) s1 );
+ MVELDialectRuntimeData data = (MVELDialectRuntimeData) this.packageRegistry.getDialectRuntimeRegistry().getDialectData( getId() );
for ( org.mvel.ast.Function function : map.values() ) {
- this.data.addFunction( function );
+ data.addFunction( function );
}
}
@@ -492,12 +497,12 @@
if ( MVELDebugHandler.isDebugMode() ) {
compiler.setDebugSymbols( true );
}
-
- synchronized ( COMPILER_LOCK ) {
- AbstractParser.setLanguageLevel( languageLevel );
+
+ synchronized ( COMPILER_LOCK ) {
+ AbstractParser.setLanguageLevel( languageLevel );
return compiler.compile( parserContext );
}
- }
+ }
public ParserContext getParserContext(final Dialect.AnalysisResult analysis,
final Map outerDeclarations,
@@ -647,7 +652,7 @@
}
public String getId() {
- return ID;
+ return this.id;
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -68,10 +68,7 @@
try {
final DroolsMVELFactory factory = new DroolsMVELFactory( context.getDeclarationResolver().getDeclarations(),
null,
- context.getPkg().getGlobals() );
-
- MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
- factory.setNextFactory( data.getFunctionFactory() );
+ context.getPkg().getGlobals() );
Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
evalDescr,
@@ -94,7 +91,8 @@
context );
eval.setEvalExpression( new MVELEvalExpression( expr,
- factory ) );
+ factory,
+ context.getDialect().getId() ) );
return eval;
} catch ( final Exception e ) {
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 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -78,7 +78,8 @@
context );
dataProvider = new MVELDataProvider( expr,
- factory );
+ factory,
+ context.getDialect().getId() );
} catch ( final Exception e ) {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
fromDescr,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -64,9 +64,6 @@
localMap,
context.getPkg().getGlobals() );
- MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
- factory.setNextFactory( data.getFunctionFactory() );
-
Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
predicateDescr,
predicateDescr.getContent(),
@@ -80,7 +77,8 @@
context );
predicate.setPredicateExpression( new MVELPredicateExpression( expr,
- factory ) );
+ factory,
+ context.getDialect().getId()) );
} catch ( final Exception e ) {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
predicateDescr,
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -63,9 +63,6 @@
localMap,
context.getPkg().getGlobals() );
- MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
- factory.setNextFactory( data.getFunctionFactory() );
-
Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
returnValueRestrictionDescr,
returnValueRestrictionDescr.getContent(),
@@ -79,7 +76,8 @@
context );
returnValueRestriction.setReturnValueExpression( new MVELReturnValueExpression( expr,
- factory ) );
+ factory,
+ context.getDialect().getId()) );
}
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java 2008-06-25 02:10:48 UTC (rev 20745)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java 2008-06-25 02:10:59 UTC (rev 20746)
@@ -29,7 +29,7 @@
String text = descr.getText();
try {
- MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
+ MVELDialect dialect = (MVELDialect) context.getDialect();
Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
descr,
@@ -53,7 +53,7 @@
MVELDialectRuntimeData data = (MVELDialectRuntimeData) context.getPkg().getDialectRuntimeRegistry().getDialectData( "mvel" );
factory.setNextFactory( data.getFunctionFactory() );
- constraintNode.setEvaluator( new MVELReturnValueEvaluator( expr, factory ) );
+ constraintNode.setEvaluator( new MVELReturnValueEvaluator( expr, factory, context.getDialect().getId() ) );
} catch ( final Exception e ) {
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
descr,
More information about the jboss-svn-commits
mailing list