[jboss-svn-commits] JBL Code SVN: r30948 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 5 14:05:51 EST 2010


Author: mark.proctor at jboss.com
Date: 2010-01-05 14:05:51 -0500 (Tue, 05 Jan 2010)
New Revision: 30948

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java
Log:
JBRULES-2392 MVEL should only resolve used declarations
-added a fix for implicit bindings

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	2010-01-05 18:15:48 UTC (rev 30947)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELDialect.java	2010-01-05 19:05:51 UTC (rev 30948)
@@ -585,12 +585,13 @@
 
             // Set<String> usedIdentifiers = new HashSet<String>( list[0] );
             
-            HashSet set = new HashSet( list[0] );
+            HashSet boundSet = new HashSet( list[0] );
+            HashSet implicitSet = new HashSet( analysis.getIdentifiers() );
 
             List<Declaration> usedDeclrs = new ArrayList<Declaration>();
             if ( previousDeclarations != null ) {
                 for ( Declaration declr : previousDeclarations ) {
-                    if ( set.contains( declr.getIdentifier() )) {
+                    if ( boundSet.contains( declr.getIdentifier() )) {
                         usedDeclrs.add( declr );
                         resolvedInputs.put( declr.getIdentifier(),
                                             declr.getExtractor().getExtractToClass() );
@@ -602,11 +603,15 @@
             if ( localDeclarations != null ) {
                 usedDeclrs.clear();
                 for ( Declaration declr : localDeclarations ) {
-                    if ( set.contains( declr.getIdentifier() )) {
+                    if ( boundSet.contains( declr.getIdentifier() )) {
                         usedDeclrs.add( declr );
                         resolvedInputs.put( declr.getIdentifier(),
                                             declr.getExtractor().getExtractToClass() );
-                    }
+                    } else if ( implicitSet.contains( declr.getIdentifier() )) {
+                        usedDeclrs.add( declr );
+                        resolvedInputs.put( declr.getIdentifier(),
+                                            declr.getExtractor().getExtractToClass() );
+                    }                    
                 }
                 localDeclarations = usedDeclrs.toArray( new Declaration[usedDeclrs.size()]);
             }



More information about the jboss-svn-commits mailing list