[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