diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/State.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/State.java index 6473dbb92..862748054 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/State.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/State.java @@ -46,9 +46,10 @@ public interface State { FlowExecutionStatus handle(FlowExecutor executor) throws Exception; /** - * Validate that the nextState is appropriate for this State. + * Validate that the transition attributes are appropriate for this State. * + * @param pattern * @param nextState */ - void validate(String nextState); + void validate(String pattern, String nextState); } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/StateTransition.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/StateTransition.java index eb65116ee..cfd91a002 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/StateTransition.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/StateTransition.java @@ -100,7 +100,7 @@ public class StateTransition implements Comparable { } Assert.notNull(state, "A state is required for a StateTransition"); - state.validate(next); + state.validate(pattern, next); this.next = next; this.state = state; diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/DecisionState.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/DecisionState.java index f71889a61..6f71308f2 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/DecisionState.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/DecisionState.java @@ -44,7 +44,7 @@ public class DecisionState extends AbstractState { /* (non-Javadoc) * @see org.springframework.batch.core.job.flow.State#validate(java.lang.String) */ - public void validate(String nextState) { + public void validate(String pattern, String nextState) { if (nextState == null) { throw new IllegalStateException("The transition for " + getClass().getSimpleName() + " [" + getName() + "] requires a 'next' state."); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/EndState.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/EndState.java index 4a4a56d4c..962274627 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/EndState.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/EndState.java @@ -83,11 +83,15 @@ public class EndState extends AbstractState { /* (non-Javadoc) * @see org.springframework.batch.core.job.flow.State#validate(java.lang.String) */ - public void validate(String nextState) { + public void validate(String pattern, String nextState) { if (status != BatchStatus.INCOMPLETE && nextState != null) { throw new IllegalStateException("The transition for " + getClass().getSimpleName() + " [" + getName() + "] may not have a 'next' state."); } + if (pattern != null) { + throw new IllegalStateException("The transition for " + getClass().getSimpleName() + " [" + getName() + + "] may not have a 'pattern'."); + } } /* diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/SplitState.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/SplitState.java index 848af2c90..91d9d2013 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/SplitState.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/SplitState.java @@ -106,7 +106,7 @@ public class SplitState extends AbstractState { /* (non-Javadoc) * @see org.springframework.batch.core.job.flow.State#validate(java.lang.String) */ - public void validate(String nextState) { + public void validate(String pattern, String nextState) { if (nextState == null) { throw new IllegalStateException("The transition for " + getClass().getSimpleName() + " [" + getName() + "] requires a 'next' state."); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/StepState.java b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/StepState.java index c6ab2b4ae..166b09653 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/StepState.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/job/flow/support/state/StepState.java @@ -65,7 +65,7 @@ public class StepState extends AbstractState implements StepHolder { /* (non-Javadoc) * @see org.springframework.batch.core.job.flow.State#validate(java.lang.String) */ - public void validate(String nextState) { + public void validate(String pattern, String nextState) { if (nextState == null) { throw new IllegalStateException("The transition for " + getClass().getSimpleName() + " [" + getName() + "] requires a 'next' state."); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/job/flow/StateSupport.java b/spring-batch-core/src/test/java/org/springframework/batch/core/job/flow/StateSupport.java index b4bab8511..e87b08d2a 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/job/flow/StateSupport.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/job/flow/StateSupport.java @@ -50,6 +50,6 @@ public class StateSupport extends AbstractState { return this.status; } - public void validate(String nextState) { + public void validate(String pattern, String nextState) { } }