[jboss-svn-commits] JBL Code SVN: r13319 - in labs/jbossrules/branches/mvel-tooling-2007-06-30: m2_repo/org/mvel/mvel14/1.2pre1 and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 10 17:45:58 EDT 2007
Author: pombredanne
Date: 2007-07-10 17:45:58 -0400 (Tue, 10 Jul 2007)
New Revision: 13319
Modified:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/m2_repo/org/mvel/mvel14/1.2pre1/mvel14-1.2pre1.jar
Log:
Ported r13318 from trunk to branch mvel-tooling-2007-06-30. The new mvel jar is based on mvel's trunk @ r701
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2007-07-10 20:37:31 UTC (rev 13318)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2007-07-10 21:45:58 UTC (rev 13319)
@@ -69,7 +69,7 @@
if ( sourcePattern == null ) {
return null;
}
-
+
MVELDialect dialect = (MVELDialect) context.getDialect();
final Declaration[] sourceDeclArr = (Declaration[]) sourcePattern.getOuterDeclarations().values().toArray( new Declaration[0] );
@@ -84,9 +84,9 @@
if ( accumDescr.isExternalFunction() ) {
// build an external function executor
- final Dialect.AnalysisResult analysis = context.getDialect().analyzeExpression( context,
- accumDescr,
- accumDescr.getExpression() );
+ final Dialect.AnalysisResult analysis = dialect.analyzeExpression( context,
+ accumDescr,
+ accumDescr.getExpression() );
int size = analysis.getBoundIdentifiers()[0].size();
declarations = new Declaration[size];
@@ -95,7 +95,7 @@
}
final Serializable expression = MVEL.compileExpression( (String) accumDescr.getExpression(),
- ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+ dialect.getClassImportResolverFactory().getImportedClasses() );
AccumulateFunction function = context.getConfiguration().getAccumulateFunction( accumDescr.getFunctionIdentifier() );
@@ -104,16 +104,22 @@
function );
} else {
// it is a custom accumulate
- final Dialect.AnalysisResult initCodeAnalysis = context.getDialect().analyzeBlock( context,
- accumDescr,
- accumDescr.getInitCode() );
- final Dialect.AnalysisResult actionCodeAnalysis = context.getDialect().analyzeBlock( context,
- accumDescr,
- accumDescr.getActionCode() );
- final Dialect.AnalysisResult resultCodeAnalysis = context.getDialect().analyzeExpression( context,
- accumDescr,
- accumDescr.getResultCode() );
+ final MVELAnalysisResult initCodeAnalysis = ( MVELAnalysisResult ) dialect.analyzeBlock( context,
+ accumDescr,
+ accumDescr.getInitCode() );
+ final MVELAnalysisResult actionCodeAnalysis = ( MVELAnalysisResult ) dialect.analyzeBlock( context,
+ accumDescr,
+ null,
+ accumDescr.getActionCode(),
+ initCodeAnalysis.getMvelVariables() );
+ actionCodeAnalysis.setMvelVariables( initCodeAnalysis.getMvelVariables() );
+ final MVELAnalysisResult resultCodeAnalysis = ( MVELAnalysisResult ) dialect.analyzeExpression( context,
+ accumDescr,
+ accumDescr.getResultCode(),
+ initCodeAnalysis.getMvelVariables() );
+ resultCodeAnalysis.setMvelVariables( initCodeAnalysis.getMvelVariables() );
+
final List requiredDeclarations = new ArrayList( initCodeAnalysis.getBoundIdentifiers()[0] );
requiredDeclarations.addAll( actionCodeAnalysis.getBoundIdentifiers()[0] );
requiredDeclarations.addAll( resultCodeAnalysis.getBoundIdentifiers()[0] );
@@ -129,28 +135,37 @@
for ( int i = 0, size = requiredDeclarations.size(); i < size; i++ ) {
declarations[i] = context.getDeclarationResolver().getDeclaration( (String) requiredDeclarations.get( i ) );
}
-
- final Serializable init = dialect.compile( (String) accumDescr.getInitCode(), initCodeAnalysis, null, context );
- final Serializable action = dialect.compile((String) accumDescr.getActionCode(), actionCodeAnalysis, null, context );
-
-
+ final Serializable init = dialect.compile( (String) accumDescr.getInitCode(),
+ initCodeAnalysis,
+ null,
+ context );
+ final Serializable action = dialect.compile( (String) accumDescr.getActionCode(),
+ actionCodeAnalysis,
+ null,
+ context );
-// final Serializable init = MVEL.compileExpression( (String) accumDescr.getInitCode(),
-// ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
-// final Serializable action = MVEL.compileExpression( (String) accumDescr.getActionCode(),
-// ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+ // final Serializable init = MVEL.compileExpression( (String) accumDescr.getInitCode(),
+ // ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+ // final Serializable action = MVEL.compileExpression( (String) accumDescr.getActionCode(),
+ // ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
Serializable reverse = null;
if ( accumDescr.getReverseCode() != null ) {
-// reverse = MVEL.compileExpression( (String) accumDescr.getReverseCode(),
-// ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
- reverse = dialect.compile( (String) accumDescr.getReverseCode(), resultCodeAnalysis, null, context );
+ // reverse = MVEL.compileExpression( (String) accumDescr.getReverseCode(),
+ // ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+ reverse = dialect.compile( (String) accumDescr.getReverseCode(),
+ resultCodeAnalysis,
+ null,
+ context );
}
-// final Serializable result = MVEL.compileExpression( (String) accumDescr.getResultCode(),
-// ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
+ // final Serializable result = MVEL.compileExpression( (String) accumDescr.getResultCode(),
+ // ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
- final Serializable result = dialect.compile((String) accumDescr.getResultCode(), resultCodeAnalysis, null, context );
-
+ final Serializable result = dialect.compile( (String) accumDescr.getResultCode(),
+ resultCodeAnalysis,
+ null,
+ context );
+
accumulator = new MVELAccumulator( factory,
init,
action,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java 2007-07-10 20:37:31 UTC (rev 13318)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAnalysisResult.java 2007-07-10 21:45:58 UTC (rev 13319)
@@ -19,6 +19,7 @@
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import org.drools.rule.builder.Dialect.AnalysisResult;
@@ -35,6 +36,9 @@
private List localVariables = Collections.EMPTY_LIST;
private List notBoundedIdentifiers = Collections.EMPTY_LIST;
+ private Map mvelVariables;
+ private Map mvelInputs;
+
public List[] getBoundIdentifiers() {
return boundIdentifiers;
}
@@ -59,4 +63,14 @@
public void setNotBoundedIdentifiers(List notBoundedIdentifiers) {
this.notBoundedIdentifiers = notBoundedIdentifiers;
}
+
+ public Map getMvelVariables() {
+ return mvelVariables;
+ }
+
+ public void setMvelVariables(Map mvelVariables) {
+ this.mvelVariables = mvelVariables;
+ }
+
+
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2007-07-10 20:37:31 UTC (rev 13318)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2007-07-10 21:45:58 UTC (rev 13319)
@@ -103,7 +103,8 @@
Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
context.getRuleDescr(),
dialect.getInterceptors(),
- text );
+ text,
+ null );
final Serializable expr = dialect.compile( text,
analysis,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-07-10 20:37:31 UTC (rev 13318)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-07-10 21:45:58 UTC (rev 13319)
@@ -8,6 +8,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.Map.Entry;
import org.drools.base.ClassFieldExtractorCache;
import org.drools.base.TypeResolver;
@@ -79,11 +80,19 @@
private final MVELConsequenceBuilder consequence = new MVELConsequenceBuilder();
//private final JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
private final MVELFromBuilder from = new MVELFromBuilder();
+<<<<<<< .working
private final Map interceptors;
+=======
+>>>>>>> .merge-right.r13318
+<<<<<<< .working
private Map lineMappings;
+=======
+ private final Map interceptors;
+
+>>>>>>> .merge-right.r13318
private List results;
//private final JavaFunctionBuilder function = new JavaFunctionBuilder();
@@ -168,8 +177,12 @@
this.builders.put( EvalDescr.class,
getEvalBuilder() );
+<<<<<<< .working
+=======
+
+>>>>>>> .merge-right.r13318
}
public void init(Package pkg) {
@@ -263,11 +276,22 @@
public Dialect.AnalysisResult analyzeExpression(RuleBuildContext context,
BaseDescr descr,
Object content) {
+ return analyzeExpression( context,
+ descr,
+ content,
+ null );
+ }
+
+ public Dialect.AnalysisResult analyzeExpression(RuleBuildContext context,
+ BaseDescr descr,
+ Object content,
+ Map localTypes) {
Dialect.AnalysisResult result = null;
try {
result = this.analyzer.analyzeExpression( context,
(String) content,
- new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
+ new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()},
+ localTypes );
} catch ( final Exception e ) {
context.getErrors().add( new RuleError( context.getRule(),
descr,
@@ -283,18 +307,21 @@
return analyzeBlock( context,
descr,
null,
- text );
+ text,
+ null );
}
public Dialect.AnalysisResult analyzeBlock(RuleBuildContext context,
BaseDescr descr,
Map interceptors,
- String text) {
+ String text,
+ Map localTypes) {
Dialect.AnalysisResult result = null;
try {
result = this.analyzer.analyzeExpression( context,
text,
- new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()} );
+ new Set[]{context.getDeclarationResolver().getDeclarations().keySet(), context.getPkg().getGlobals().keySet()},
+ localTypes );
} catch ( final Exception e ) {
context.getErrors().add( new RuleError( context.getRule(),
descr,
@@ -308,9 +335,13 @@
final Dialect.AnalysisResult analysis,
final Map interceptors,
final RuleBuildContext context) {
- final ParserContext parserContext = new ParserContext( getClassImportResolverFactory().getImportedClasses(),
+ Map imports = getClassImportResolverFactory().getImportedClasses();
+ imports.putAll( getStaticMethodImportResolverFactory().getImportedMethods() );
+
+ final ParserContext parserContext = new ParserContext( imports,
null,
null );
+
parserContext.setStrictTypeEnforcement( true );
if ( interceptors != null ) {
parserContext.setInterceptors( interceptors );
@@ -331,9 +362,24 @@
parserContext.addInput( identifier,
(Class) globalTypes.get( identifier ) );
}
+<<<<<<< .working
- parserContext.addInput( "drools", KnowledgeHelper.class );
+=======
+
+>>>>>>> .merge-right.r13318
+ Map mvelVars = ((MVELAnalysisResult)analysis).getMvelVariables();
+ if ( mvelVars != null ) {
+ for ( Iterator it = mvelVars.entrySet().iterator(); it.hasNext(); ) {
+ Entry entry = (Entry) it.next();
+ parserContext.addInput( (String)entry.getKey(),
+ (Class) entry.getValue() );
+ }
+ }
+
+ parserContext.addInput( "drools",
+ KnowledgeHelper.class );
+
ExpressionCompiler compiler = new ExpressionCompiler( text );
Serializable expr = compiler.compile( parserContext );
return expr;
@@ -414,42 +460,43 @@
}
public static class AssertInterceptor
- implements
- Interceptor {
- public int doBefore(ASTNode node,
- VariableResolverFactory factory) {
- return 0;
- }
+ implements
+ Interceptor {
+ public int doBefore(ASTNode node,
+ VariableResolverFactory factory) {
+ return 0;
+ }
- public int doAfter(Object value,
- ASTNode node,
- VariableResolverFactory factory) {
- ((DroolsMVELFactory) factory).getWorkingMemory().insert( value );
- return 0;
+ public int doAfter(Object value,
+ ASTNode node,
+ VariableResolverFactory factory) {
+ ((DroolsMVELFactory) factory).getWorkingMemory().insert( value );
+ return 0;
+ }
}
-}
-public static class ModifyInterceptor
- implements
- Interceptor {
- public int doBefore(ASTNode node,
- VariableResolverFactory factory) {
- Object object = ((WithNode) node).getNestedStatement().getValue( null,
- factory );
+ public static class ModifyInterceptor
+ implements
+ Interceptor {
+ public int doBefore(ASTNode node,
+ VariableResolverFactory factory) {
+ Object object = ((WithNode) node).getNestedStatement().getValue( null,
+ factory );
- DroolsMVELKnowledgeHelper resolver = (DroolsMVELKnowledgeHelper) factory.getVariableResolver( "drools" );
- KnowledgeHelper helper = (KnowledgeHelper) resolver.getValue();
- helper.modifyRetract( object );
- return 0;
- }
+ DroolsMVELKnowledgeHelper resolver = (DroolsMVELKnowledgeHelper) factory.getVariableResolver( "drools" );
+ KnowledgeHelper helper = (KnowledgeHelper) resolver.getValue();
+ helper.modifyRetract( object );
+ return 0;
+ }
- public int doAfter(Object value,
- ASTNode node,
- VariableResolverFactory factory) {
- DroolsMVELKnowledgeHelper resolver = (DroolsMVELKnowledgeHelper) factory.getVariableResolver( "drools" );
- KnowledgeHelper helper = (KnowledgeHelper) resolver.getValue();
- helper.modifyInsert( value );
- return 0;
+ public int doAfter(Object value,
+ ASTNode node,
+ VariableResolverFactory factory) {
+ DroolsMVELKnowledgeHelper resolver = (DroolsMVELKnowledgeHelper) factory.getVariableResolver( "drools" );
+ KnowledgeHelper helper = (KnowledgeHelper) resolver.getValue();
+ helper.modifyInsert( value );
+ return 0;
+ }
}
}
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java 2007-07-10 20:37:31 UTC (rev 13318)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELExprAnalyzer.java 2007-07-10 21:45:58 UTC (rev 13319)
@@ -20,6 +20,7 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.antlr.runtime.RecognitionException;
@@ -55,19 +56,28 @@
*/
public MVELAnalysisResult analyzeExpression(final RuleBuildContext context,
final String expr,
- final Set[] availableIdentifiers) throws RecognitionException {
+ final Set[] availableIdentifiers,
+ final Map localTypes) throws RecognitionException {
ExpressionCompiler compiler = new ExpressionCompiler( expr );
ParserContext parserContext = new ParserContext();
parserContext.setStrictTypeEnforcement( false );
MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
- parserContext.setImports( dialect.getClassImportResolverFactory().getImportedClasses() );
+
+ Map imports = dialect.getClassImportResolverFactory().getImportedClasses();
+ imports.putAll( dialect.getStaticMethodImportResolverFactory().getImportedMethods() );
+
+ parserContext.setImports( imports );
parserContext.setInterceptors( dialect.getInterceptors() );
compiler.compile( parserContext );
+
+ MVELAnalysisResult result = analyze( compiler.getParserContextState().getInputs().keySet(),
+ availableIdentifiers );
+
+ result.setMvelVariables( compiler.getParserContextState().getVariables() );
- return analyze( compiler.getParserContextState().getInputs().keySet(),
- availableIdentifiers );
+ return result;
}
/**
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/m2_repo/org/mvel/mvel14/1.2pre1/mvel14-1.2pre1.jar
===================================================================
(Binary files differ)
More information about the jboss-svn-commits
mailing list