[jboss-svn-commits] JBL Code SVN: r15153 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 16 10:21:22 EDT 2007


Author: KrisVerlaenen
Date: 2007-09-16 10:21:21 -0400 (Sun, 16 Sep 2007)
New Revision: 15153

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java
Log:
JBRULES-1193: Getting org.mvel.PropertyAccessException in rule flow actions when using class names without package
 - Actions now support imports in the form of direct classes or packages (.*)

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java	2007-09-16 13:39:20 UTC (rev 15152)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java	2007-09-16 14:21:21 UTC (rev 15153)
@@ -20,6 +20,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import org.drools.base.mvel.DroolsMVELFactory;
@@ -47,7 +48,26 @@
 			String actionString = ((DroolsConsequenceAction) action).getConsequence();
     		ExpressionCompiler compiler = new ExpressionCompiler(actionString);
     		ParserContext parserContext = new ParserContext();
+    		// imports
+    		List imports = getProcessInstance().getRuleFlowProcess().getImports();
+    		if (imports != null) {
+    			for (Iterator iterator = imports.iterator(); iterator.hasNext(); ) {
+    				String importClassName = (String) iterator.next();
+    				if ( importClassName.endsWith( ".*" ) ) {
+    					importClassName = importClassName.substring(0, importClassName.indexOf(".*"));
+    		            parserContext.addPackageImport(importClassName);
+    		        } else {
+	    				try {
+	    					parserContext.addImport(Class.forName(importClassName));
+	    				} catch (ClassNotFoundException e) {
+	    					// class not found, do nothing
+	    				}
+    		        }
+    			}
+    		}
+    		// compile expression
     		Serializable expression = compiler.compile(parserContext);
+    		// globals
     		Map globalDefs = getProcessInstance().getRuleFlowProcess().getGlobals();
     		Map globals = new HashMap();
     		if (globalDefs != null) {
@@ -60,6 +80,7 @@
     				}
     			}
     		}
+    		// execute
     		DroolsMVELFactory factory = new DroolsMVELFactory(Collections.EMPTY_MAP, null, globals);
     		factory.setContext(null, null, null, getProcessInstance().getWorkingMemory(), null);
     		MVEL.executeExpression(expression, null, factory);




More information about the jboss-svn-commits mailing list