From d182b36846177f4a6f06085ce1d18f8ec3ffd511 Mon Sep 17 00:00:00 2001 From: dsyer Date: Tue, 23 Oct 2007 13:33:33 +0000 Subject: [PATCH] RESOLVED - issue BATCH-177: CountingCompletionPolicy causes the Step to go into infinite loop http://opensource.atlassian.com/projects/spring/browse/BATCH-177 Use different base class for CountingCompletionPolicy --- .../policy/CountingCompletionPolicy.java | 2 +- .../policy/CountingCompletionPolicyTests.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/infrastructure/src/main/java/org/springframework/batch/repeat/policy/CountingCompletionPolicy.java b/infrastructure/src/main/java/org/springframework/batch/repeat/policy/CountingCompletionPolicy.java index ea09e6eda..9b7bf5975 100644 --- a/infrastructure/src/main/java/org/springframework/batch/repeat/policy/CountingCompletionPolicy.java +++ b/infrastructure/src/main/java/org/springframework/batch/repeat/policy/CountingCompletionPolicy.java @@ -30,7 +30,7 @@ import org.springframework.batch.repeat.context.RepeatContextSupport; * @author Dave Syer * */ -public abstract class CountingCompletionPolicy extends CompletionPolicySupport { +public abstract class CountingCompletionPolicy extends DefaultResultCompletionPolicy { /** * Session key for global counter. diff --git a/infrastructure/src/test/java/org/springframework/batch/repeat/policy/CountingCompletionPolicyTests.java b/infrastructure/src/test/java/org/springframework/batch/repeat/policy/CountingCompletionPolicyTests.java index 80e35c4e0..4e4ccdae8 100644 --- a/infrastructure/src/test/java/org/springframework/batch/repeat/policy/CountingCompletionPolicyTests.java +++ b/infrastructure/src/test/java/org/springframework/batch/repeat/policy/CountingCompletionPolicyTests.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; import org.springframework.batch.repeat.context.RepeatContextSupport; @@ -33,6 +34,28 @@ public class CountingCompletionPolicyTests extends TestCase { assertTrue(policy.isComplete(context)); } + public void testNullResult() throws Exception { + CountingCompletionPolicy policy = new CountingCompletionPolicy() { + protected int getCount(RepeatContext context) { + return 1; + }; + }; + policy.setMaxCount(10); + RepeatContext context = policy.start(null); + assertTrue(policy.isComplete(context, null)); + } + + public void testFinishedResult() throws Exception { + CountingCompletionPolicy policy = new CountingCompletionPolicy() { + protected int getCount(RepeatContext context) { + return 1; + }; + }; + policy.setMaxCount(10); + RepeatContext context = policy.start(null); + assertTrue(policy.isComplete(context, ExitStatus.FINISHED)); + } + public void testDefaultBehaviourWithUpdate() throws Exception { CountingCompletionPolicy policy = new CountingCompletionPolicy() { int count = 0;