From 06707281fd03c68a13b85d15faaaadaddd49b915 Mon Sep 17 00:00:00 2001 From: robokaso Date: Wed, 24 Sep 2008 11:56:16 +0000 Subject: [PATCH] RESOLVED - BATCH-838: TimeoutTerminationPolicy does not terminate when eof is encountered terminate immediately if exit status is not continuable --- .../batch/repeat/policy/CompletionPolicySupport.java | 10 ++++++++-- .../repeat/policy/TimeoutCompletionPolicyTests.java | 7 +++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/policy/CompletionPolicySupport.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/policy/CompletionPolicySupport.java index 600796db1..c96eb9fcc 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/policy/CompletionPolicySupport.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/repeat/policy/CompletionPolicySupport.java @@ -30,13 +30,19 @@ import org.springframework.batch.repeat.context.RepeatContextSupport; public class CompletionPolicySupport implements CompletionPolicy { /** - * Delegate to {@link #isComplete(RepeatContext)}. + * Return true if exit status is not continuable, otherwise + * delegate to {@link #isComplete(RepeatContext)}. * * @see org.springframework.batch.repeat.CompletionPolicy#isComplete(org.springframework.batch.repeat.RepeatContext, * ExitStatus) */ public boolean isComplete(RepeatContext context, ExitStatus result) { - return isComplete(context); + if (result != null && !result.isContinuable()) { + return true; + } + else { + return isComplete(context); + } } /** diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/policy/TimeoutCompletionPolicyTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/policy/TimeoutCompletionPolicyTests.java index 453246142..926db410a 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/policy/TimeoutCompletionPolicyTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/repeat/policy/TimeoutCompletionPolicyTests.java @@ -18,6 +18,7 @@ package org.springframework.batch.repeat.policy; import junit.framework.TestCase; +import org.springframework.batch.repeat.ExitStatus; import org.springframework.batch.repeat.RepeatContext; public class TimeoutCompletionPolicyTests extends TestCase { @@ -35,6 +36,12 @@ public class TimeoutCompletionPolicyTests extends TestCase { RepeatContext context = policy.start(null); assertFalse(policy.isComplete(context, null)); } + + public void testNonContinuableResult() throws Exception { + TimeoutTerminationPolicy policy = new TimeoutTerminationPolicy(); + ExitStatus result = new ExitStatus(false, "non-continuable exit status"); + assertTrue(policy.isComplete(policy.start(null), result)); + } public void testUpdate() throws Exception { TimeoutTerminationPolicy policy = new TimeoutTerminationPolicy(20L);