[jboss-svn-commits] JBL Code SVN: r26528 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/integrationtests and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 14 00:25:19 EDT 2009


Author: KrisVerlaenen
Date: 2009-05-14 00:25:18 -0400 (Thu, 14 May 2009)
New Revision: 26528

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
Log:
JBRULES-1978: No access to context in a constraint
 - add (k)context variable for MVEL code constraint compilation

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2009-05-14 04:24:12 UTC (rev 26527)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELReturnValueEvaluatorBuilder.java	2009-05-14 04:25:18 UTC (rev 26528)
@@ -15,6 +15,8 @@
 import org.drools.rule.MVELDialectRuntimeData;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.rule.builder.ReturnValueEvaluatorBuilder;
+import org.drools.spi.KnowledgeHelper;
+import org.drools.spi.ProcessContext;
 import org.drools.workflow.instance.impl.ReturnValueConstraintEvaluator;
 
 public class MVELReturnValueEvaluatorBuilder
@@ -35,14 +37,17 @@
         try {
             MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
 
+            Map<String, Class<?>> variables = new HashMap<String,Class<?>>();
+            variables.put("context", ProcessContext.class);
+            variables.put("kcontext", org.drools.runtime.process.ProcessContext.class);
+            variables.put("drools", KnowledgeHelper.class);
             Dialect.AnalysisResult analysis = dialect.analyzeBlock( context,
                                                                     descr,
                                                                     dialect.getInterceptors(),
                                                                     text,
-                                                                    new Map[]{Collections.EMPTY_MAP, context.getPackageBuilder().getGlobals()},
+                                                                    new Map[]{variables, context.getPackageBuilder().getGlobals()},
                                                                     null );         
 
-            Map<String, Class<?>> variableClasses = new HashMap<String, Class<?>>();
             List<String> variableNames = analysis.getNotBoundedIdentifiers();
             if (contextResolver != null) {
 	            for (String variableName: variableNames) {
@@ -55,7 +60,7 @@
 	                            null,
 	                            "Could not find variable '" + variableName + "' for constraint '" + descr.getText() + "'" ) );            		
 	            	} else {
-	            		variableClasses.put(variableName,
+	            		variables.put(variableName,
             				context.getDialect().getTypeResolver().resolveType(
         						variableScope.findVariable(variableName).getType().getStringType()));
 	            	}
@@ -66,7 +71,7 @@
                                                                        analysis,
                                                                        null,
                                                                        null,
-                                                                       variableClasses,
+                                                                       variables,
                                                                        context );  
 
             MVELReturnValueEvaluator expr = new MVELReturnValueEvaluator( unit,

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java	2009-05-14 04:24:12 UTC (rev 26527)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessSplitTest.java	2009-05-14 04:25:18 UTC (rev 26528)
@@ -634,7 +634,7 @@
             "    <split id=\"4\" name=\"Split\" type=\"2\" >" +
             "      <constraints>" +
             "        <constraint toNodeId=\"8\" toType=\"DROOLS_DEFAULT\" priority=\"2\" type=\"code\" dialect=\"mvel\" >return true;</constraint>" +
-            "        <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return list != null &amp;&amp; ((java.util.List) list).size >= 0;</constraint>" +
+            "        <constraint toNodeId=\"6\" toType=\"DROOLS_DEFAULT\" priority=\"1\" type=\"code\" dialect=\"mvel\" >return list != null &amp;&amp; list.size >= 0;</constraint>" +
             "      </constraints>" +
             "    </split>" +
             "    <end id=\"8\" name=\"End\" />" +




More information about the jboss-svn-commits mailing list