[jboss-svn-commits] JBL Code SVN: r13326 - in labs/jbossrules/branches/mvel-tooling-2007-06-30: drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 10 19:10:14 EDT 2007
Author: pombredanne
Date: 2007-07-10 19:10:14 -0400 (Tue, 10 Jul 2007)
New Revision: 13326
Added:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl
Modified:
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
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/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/MVELEvalBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
Log:
Ported r13323 from trunk to branch mvel-tooling-2007-06-30.
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -61,6 +61,7 @@
import org.drools.rule.RuleConditionElement;
import org.drools.rule.VariableConstraint;
import org.drools.rule.VariableRestriction;
+import org.drools.rule.builder.dialect.mvel.MVELDialect;
import org.drools.spi.Constraint;
import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
@@ -313,7 +314,11 @@
// it is a complex expression, so we need to turn it into an MVEL predicate
Dialect dialect = context.getDialect();
// switch to MVEL dialect
- context.setDialect( context.getDialect( "mvel" ) );
+ MVELDialect mvelDialect = ( MVELDialect ) context.getDialect( "mvel" );
+ boolean strictMode = mvelDialect.isStrictMode();
+ mvelDialect.setStrictMode( false );
+
+ context.setDialect( mvelDialect );
PredicateDescr predicateDescr = new PredicateDescr();
DrlDumper dumper = new DrlDumper();
@@ -325,6 +330,7 @@
predicateDescr,
container );
+ mvelDialect.setStrictMode( strictMode );
// fall back to original dialect
context.setDialect( dialect );
}
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 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -139,31 +139,27 @@
final Serializable init = dialect.compile( (String) accumDescr.getInitCode(),
initCodeAnalysis,
null,
+ sourcePattern.getOuterDeclarations(),
context );
final Serializable action = dialect.compile( (String) accumDescr.getActionCode(),
actionCodeAnalysis,
null,
+ sourcePattern.getOuterDeclarations(),
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() );
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,
+ sourcePattern.getOuterDeclarations(),
context );
}
- // final Serializable result = MVEL.compileExpression( (String) accumDescr.getResultCode(),
- // ((MVELDialect) context.getDialect()).getClassImportResolverFactory().getImportedClasses() );
final Serializable result = dialect.compile( (String) accumDescr.getResultCode(),
resultCodeAnalysis,
null,
+ sourcePattern.getOuterDeclarations(),
context );
accumulator = new MVELAccumulator( factory,
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 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -109,6 +109,7 @@
final Serializable expr = dialect.compile( text,
analysis,
dialect.getInterceptors(),
+ null,
context );
context.getRule().setConsequence( new MVELConsequence( expr,
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 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -32,6 +32,7 @@
import org.drools.lang.descr.QueryDescr;
import org.drools.lang.descr.RuleDescr;
import org.drools.rule.LineMappings;
+import org.drools.rule.Declaration;
import org.drools.rule.Package;
import org.drools.rule.builder.AccumulateBuilder;
import org.drools.rule.builder.ConsequenceBuilder;
@@ -80,23 +81,14 @@
private final MVELConsequenceBuilder consequence = new MVELConsequenceBuilder();
//private final JavaRuleClassBuilder rule = new JavaRuleClassBuilder();
private final MVELFromBuilder from = new MVELFromBuilder();
-<<<<<<< .working
+ private Map lineMappings;
- 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();
- private MemoryResourceReader src;
+ private MemoryResourceReader src;
private Package pkg;
private PackageBuilderConfiguration configuration;
@@ -106,6 +98,8 @@
private final StaticMethodImportResolverFactory staticImportFactory;
private final ClassImportResolverFactory importFactory;
+
+ private boolean strictMode;
public void addFunction(FunctionDescr functionDescr,
TypeResolver typeResolver) {
@@ -123,6 +117,7 @@
this.configuration = builder.getPackageBuilderConfiguration();
this.typeResolver = builder.getTypeResolver();
this.classFieldExtractorCache = builder.getClassFieldExtractorCache();
+ this.strictMode = true;
this.analyzer = new MVELExprAnalyzer();
@@ -177,12 +172,7 @@
this.builders.put( EvalDescr.class,
getEvalBuilder() );
-<<<<<<< .working
-
-=======
-
->>>>>>> .merge-right.r13318
}
public void init(Package pkg) {
@@ -269,7 +259,15 @@
public ClassImportResolverFactory getClassImportResolverFactory() {
return this.importFactory;
}
+
+ public boolean isStrictMode() {
+ return strictMode;
+ }
+ public void setStrictMode(boolean strictMode) {
+ this.strictMode = strictMode;
+ }
+
public void compileAll() {
}
@@ -334,6 +332,7 @@
public Serializable compile(final String text,
final Dialect.AnalysisResult analysis,
final Map interceptors,
+ final Map outerDeclarations,
final RuleBuildContext context) {
Map imports = getClassImportResolverFactory().getImportedClasses();
imports.putAll( getStaticMethodImportResolverFactory().getImportedMethods() );
@@ -342,7 +341,9 @@
null,
null );
- parserContext.setStrictTypeEnforcement( true );
+ //this.configuration.get
+
+ parserContext.setStrictTypeEnforcement( strictMode );
if ( interceptors != null ) {
parserContext.setInterceptors( interceptors );
}
@@ -362,12 +363,7 @@
parserContext.addInput( identifier,
(Class) globalTypes.get( identifier ) );
}
-<<<<<<< .working
-=======
-
-
->>>>>>> .merge-right.r13318
Map mvelVars = ((MVELAnalysisResult)analysis).getMvelVariables();
if ( mvelVars != null ) {
for ( Iterator it = mvelVars.entrySet().iterator(); it.hasNext(); ) {
@@ -377,6 +373,14 @@
}
}
+ if ( outerDeclarations != null ) {
+ for ( Iterator it = outerDeclarations.entrySet().iterator(); it.hasNext(); ) {
+ Entry entry = (Entry) it.next();
+ parserContext.addInput( (String)entry.getKey(),
+ ((Declaration) entry.getValue()).getExtractor().getExtractToClass() );
+ }
+ }
+
parserContext.addInput( "drools",
KnowledgeHelper.class );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELEvalBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -86,10 +86,14 @@
declarations[i] = context.getDeclarationResolver().getDeclaration( (String) usedIdentifiers[0].get( i ) );
}
- final EvalCondition eval = new EvalCondition( declarations );
-
- Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) evalDescr.getContent(), analysis, null, context );
+ final EvalCondition eval = new EvalCondition( declarations );
+ Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) evalDescr.getContent(),
+ analysis,
+ null,
+ null,
+ context );
+
eval.setEvalExpression( new MVELEvalExpression( expr,
factory ) );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELFromBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -78,6 +78,7 @@
final Serializable expr = dialect.compile( text,
analysis,
null,
+ null,
context );
dataProvider = new MVELDataProvider( expr,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELPredicateBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -73,7 +73,7 @@
predicateDescr,
predicateDescr.getContent() );
- final Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) predicateDescr.getContent(), analysis, null, context );
+ final Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) predicateDescr.getContent(), analysis, null, null, context );
predicate.setPredicateExpression( new MVELPredicateExpression( expr,
factory ) );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -73,7 +73,7 @@
returnValueRestrictionDescr,
returnValueRestrictionDescr.getContent() );
- final Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) returnValueRestrictionDescr.getContent(), analysis, null, context );
+ final Serializable expr = ((MVELDialect) context.getDialect()).compile( (String) returnValueRestrictionDescr.getContent(), analysis, null, null, context );
returnValueRestriction.setReturnValueExpression( new MVELReturnValueExpression( expr,
factory ) );
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELSalienceBuilder.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -37,6 +37,7 @@
final Serializable expr = dialect.compile( (String) context.getRuleDescr().getSalience(),
analysis,
null,
+ null,
context );
MVELSalienceExpression salience = new MVELSalienceExpression( expr,
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -3191,6 +3191,27 @@
list.size() );
}
+ public void testSelfReference2() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_SelfReference2.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+
+ workingMemory.insert( new Cheese() );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 0,
+ results.size() );
+ }
+
}
\ No newline at end of file
Copied: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl (from rev 13323, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl)
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl (rev 0)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-compiler/src/test/resources/org/drools/integrationtests/test_SelfReference2.drl 2007-07-10 23:10:14 UTC (rev 13326)
@@ -0,0 +1,11 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "reversed references"
+when
+ $cheese : Cheese( )
+ Cheese( this != $cheese )
+then
+ results.add( $cheese );
+end
\ No newline at end of file
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -176,6 +176,9 @@
if ( value1 == null ) {
return value2 != null;
}
+ if( value2 != null && value2 instanceof ShadowProxy ) {
+ return !value2.equals( value1 );
+ }
return !value1.equals( value2 );
}
@@ -185,6 +188,9 @@
if ( value == null ) {
return ((ObjectVariableContextEntry) context).right != null;
}
+ if( ((ObjectVariableContextEntry) context).right != null && ((ObjectVariableContextEntry) context).right instanceof ShadowProxy ) {
+ return !((ObjectVariableContextEntry) context).right.equals( value );
+ }
return !value.equals( ((ObjectVariableContextEntry) context).right );
}
@@ -194,6 +200,9 @@
if ( ((ObjectVariableContextEntry) context).left == null ) {
return value != null;
}
+ if( value != null && value instanceof ShadowProxy ) {
+ return !value.equals( ((ObjectVariableContextEntry) context).left );
+ }
return !((ObjectVariableContextEntry) context).left.equals( value );
}
@@ -206,6 +215,9 @@
if ( value1 == null ) {
return value2 != null;
}
+ if( value2 != null && value2 instanceof ShadowProxy ) {
+ return !value2.equals( value1 );
+ }
return !value1.equals( value2 );
}
Modified: labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java
===================================================================
--- labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-07-10 23:08:21 UTC (rev 13325)
+++ labs/jbossrules/branches/mvel-tooling-2007-06-30/drools-decisiontables/src/test/java/org/drools/decisiontable/parser/ExternalSheetListenerTest.java 2007-07-10 23:10:14 UTC (rev 13326)
@@ -245,10 +245,6 @@
return null;
}
- public Map getGlobals() {
- return null;
- }
-
public Iterator iterateFactHandles() {
return null;
}
@@ -353,6 +349,11 @@
// TODO Auto-generated method stub
return null;
}
+
+ public GlobalResolver getGlobalResolver() {
+ // TODO Auto-generated method stub
+ return null;
+ }
};
}
}
More information about the jboss-svn-commits
mailing list