[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