From c5992c98336335bb97d61326bf6108d2c79c90d9 Mon Sep 17 00:00:00 2001 From: robokaso Date: Tue, 10 Jun 2008 08:11:57 +0000 Subject: [PATCH] RESOLVED - BATCH-638: ItemSkipPolicyItemHandler does not count items moved item counting in SimpleItemHandler from write(..) into handle(..) method so that it isn't overriden in subclasses + tests --- .../batch/core/step/item/SimpleItemHandler.java | 2 +- .../batch/core/step/item/ItemSkipPolicyItemHandlerTests.java | 5 +++++ .../batch/core/step/item/SkipLimitStepFactoryBeanTests.java | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleItemHandler.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleItemHandler.java index b6c0c35ba..df7498dc0 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleItemHandler.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/SimpleItemHandler.java @@ -67,6 +67,7 @@ public class SimpleItemHandler implements ItemHandler { if (item == null) { return ExitStatus.FINISHED; } + contribution.incrementItemCount(); write(item, contribution); return ExitStatus.CONTINUABLE; } @@ -93,7 +94,6 @@ public class SimpleItemHandler implements ItemHandler { * @param contribution current context */ protected void write(Object item, StepContribution contribution) throws Exception { - contribution.incrementItemCount(); doWrite(item); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandlerTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandlerTests.java index 688273179..9ce4b0c71 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandlerTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandlerTests.java @@ -109,6 +109,8 @@ public class ItemSkipPolicyItemHandlerTests extends TestCase { catch (SkippableException e) { // expected } + + assertEquals(3, contribution.getItemCount()); assertEquals(2, contribution.getSkipCount()); // No "4" because it was skipped on write assertEquals(new Holder("5"), handler.read(contribution)); @@ -131,6 +133,7 @@ public class ItemSkipPolicyItemHandlerTests extends TestCase { // was previously skipped handler.handle(contribution); assertEquals(null, handler.read(contribution)); + assertEquals(3, contribution.getItemCount()); assertEquals(2, contribution.getSkipCount()); assertEquals(1, TransactionSynchronizationManager.getResourceMap().size()); @@ -182,6 +185,7 @@ public class ItemSkipPolicyItemHandlerTests extends TestCase { catch (SkippableException e) { // expected } + assertEquals(3, contribution.getItemCount()); assertEquals(2, contribution.getSkipCount()); // No "4" because it was skipped on write, even though it is mutating // its key @@ -229,6 +233,7 @@ public class ItemSkipPolicyItemHandlerTests extends TestCase { // re-thrown handler.handle(contribution); + assertEquals(3, contribution.getItemCount()); assertEquals(2, contribution.getSkipCount()); // No "4" because it was skipped on write, even though it is mutating // its key diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipLimitStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipLimitStepFactoryBeanTests.java index 094a1b14d..6a21442a2 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipLimitStepFactoryBeanTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SkipLimitStepFactoryBeanTests.java @@ -90,6 +90,8 @@ public class SkipLimitStepFactoryBeanTests extends TestCase { List expectedOutput = Arrays.asList(StringUtils.commaDelimitedListToStringArray("1,3,5")); assertEquals(expectedOutput, writer.written); + + assertEquals(4, stepExecution.getItemCount().intValue()); } @@ -110,6 +112,8 @@ public class SkipLimitStepFactoryBeanTests extends TestCase { // no rollbacks assertEquals(0, stepExecution.getRollbackCount().intValue()); + + assertEquals(4, stepExecution.getItemCount().intValue()); }