[jbpm-commits] JBoss JBPM SVN: r6933 - jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/jpdl/xml.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue May 17 10:39:43 EDT 2011
Author: marco.rietveld
Date: 2011-05-17 10:39:43 -0400 (Tue, 17 May 2011)
New Revision: 6933
Modified:
jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java
Log:
SOA-2010: conditions are only valid on transitions leaving decisions
Modified: jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java 2011-05-16 15:51:59 UTC (rev 6932)
+++ jbpm3/branches/jbpm-3.2-soa/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java 2011-05-17 14:39:43 UTC (rev 6933)
@@ -52,6 +52,7 @@
import org.jbpm.graph.def.NodeCollection;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.def.Transition;
+import org.jbpm.graph.node.Decision;
import org.jbpm.graph.node.NodeTypes;
import org.jbpm.graph.node.StartState;
import org.jbpm.graph.node.TaskNode;
@@ -712,11 +713,16 @@
transition.setName(transitionName);
transition.setDescription(transitionElement.elementTextTrim("description"));
+ // SOA-2010: conditions only valid on transitions leaving decisions
+ boolean conditionPresentOnTransition = true;
+
// read transition condition
String condition = transitionElement.attributeValue("condition");
if (condition == null) {
+ conditionPresentOnTransition = false;
Element conditionElement = transitionElement.element("condition");
if (conditionElement != null) {
+ conditionPresentOnTransition = true;
condition = conditionElement.getTextTrim();
// for backwards compatibility
if (condition == null || condition.length() == 0) {
@@ -724,8 +730,22 @@
}
}
}
+
transition.setCondition(condition);
+ // SOA-2010: conditions only valid on transitions leaving decisions
+ if(conditionPresentOnTransition && ! (node instanceof Decision)) {
+
+ Class nodeClass = node.getClass().getDeclaringClass();
+ if( nodeClass == null) {
+ nodeClass = node.getClass();
+ }
+ String simpleClassName = nodeClass.getSimpleName().toLowerCase();
+
+ addError("conditions on transitions used leaving a " + simpleClassName
+ + ", conditions on transitions only usable leaving decisions." );
+ }
+
// register transition in origin
node.addLeavingTransition(transition);
More information about the jbpm-commits
mailing list