[jboss-svn-commits] JBL Code SVN: r15369 - 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 Sep 25 19:40:36 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-09-25 19:40:36 -0400 (Tue, 25 Sep 2007)
New Revision: 15369
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaBuilder.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
Log:
-provides thread safe way to do MVEL.setLanguageLevel
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaBuilder.java 2007-09-25 19:49:11 UTC (rev 15368)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/AbstractJavaBuilder.java 2007-09-25 23:40:36 UTC (rev 15369)
@@ -9,6 +9,7 @@
import org.drools.lang.descr.BaseDescr;
import org.drools.rule.Declaration;
import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.util.StringUtils;
import org.mvel.MVELTemplateRegistry;
import org.mvel.TemplateInterpreter;
@@ -22,6 +23,8 @@
static {
RULE_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaBuilder.class.getResourceAsStream( "javaRule.mvel" ) ) );
INVOKER_REGISTRY.registerTemplate( new InputStreamReader( AbstractJavaBuilder.class.getResourceAsStream( "javaInvokers.mvel" ) ) );
+ MVELDialect.setLanguageLevel( 4 );
+
}
public TemplateRegistry getRuleTemplateRegistry() {
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-09-25 19:49:11 UTC (rev 15368)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-09-25 23:40:36 UTC (rev 15369)
@@ -103,6 +103,8 @@
private Map packageImports;
private boolean strictMode;
+
+ private static Boolean languageSet = new Boolean( false );
public void addFunction(FunctionDescr functionDescr,
TypeResolver typeResolver) {
@@ -115,10 +117,21 @@
public MVELDialect() {
}
+
+ public static void setLanguageLevel(int level) {
+ synchronized ( languageSet ) {
+ // this synchronisation is needed as setLanguageLevel is now thread safe
+ // and we do not want ot 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 void init(PackageBuilder builder) {
- AbstractParser.setLanguageLevel( 4 );
-
+ setLanguageLevel( 4 );
this.pkg = builder.getPackage();
this.configuration = (MVELDialectConfiguration) builder.getPackageBuilderConfiguration().getDialectConfiguration( "mvel" );
this.typeResolver = builder.getTypeResolver();
More information about the jboss-svn-commits
mailing list