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()); }