diff --git a/spring-webflow-reference/src/flow-inheritance.xml b/spring-webflow-reference/src/flow-inheritance.xml index 60af3e48..7d469792 100644 --- a/spring-webflow-reference/src/flow-inheritance.xml +++ b/spring-webflow-reference/src/flow-inheritance.xml @@ -149,7 +149,7 @@ subflow-state: id - transition: on + transition: on and on-exception view-state: id diff --git a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/TransitionModel.java b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/TransitionModel.java index 6b6c0c7c..ee15ba9d 100644 --- a/spring-webflow/src/main/java/org/springframework/webflow/engine/model/TransitionModel.java +++ b/spring-webflow/src/main/java/org/springframework/webflow/engine/model/TransitionModel.java @@ -60,7 +60,8 @@ public class TransitionModel extends AbstractModel { return false; } TransitionModel transition = (TransitionModel) model; - return ObjectUtils.nullSafeEquals(getOn(), transition.getOn()); + return ObjectUtils.nullSafeEquals(getOn(), transition.getOn()) + && ObjectUtils.nullSafeEquals(getOnException(), transition.getOnException()); } public void merge(Model model) { diff --git a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/TransitionModelTests.java b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/TransitionModelTests.java index aee44c52..0e1cd5a9 100644 --- a/spring-webflow/src/test/java/org/springframework/webflow/engine/model/TransitionModelTests.java +++ b/spring-webflow/src/test/java/org/springframework/webflow/engine/model/TransitionModelTests.java @@ -24,7 +24,17 @@ public class TransitionModelTests extends TestCase { public void testMergeable() { TransitionModel child = new TransitionModel(); - child.setOn("child"); + child.setOn("event"); + TransitionModel parent = new TransitionModel(); + parent.setOn("event"); + assertTrue(child.isMergeableWith(parent)); + } + + public void testMergeableOnException() { + TransitionModel child = new TransitionModel(); + child.setOnException("expception"); + TransitionModel parent = new TransitionModel(); + parent.setOnException("exception"); assertTrue(child.isMergeableWith(child)); } @@ -36,6 +46,14 @@ public class TransitionModelTests extends TestCase { assertFalse(child.isMergeableWith(parent)); } + public void testNotMergeableOnException() { + TransitionModel child = new TransitionModel(); + child.setOnException("child"); + TransitionModel parent = new TransitionModel(); + parent.setOnException("parent"); + assertFalse(child.isMergeableWith(parent)); + } + public void testNotMergeableWithNull() { TransitionModel child = new TransitionModel(); assertFalse(child.isMergeableWith(null));