[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