diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java b/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java
index 1779c52c8..1517ec88f 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/StepContribution.java
@@ -33,7 +33,7 @@ public class StepContribution {
private ExecutionContext executionContext;
private int commitCount;
-
+
private int skipCount;
/**
@@ -98,12 +98,25 @@ public class StepContribution {
public boolean isTerminateOnly() {
return execution.isTerminateOnly();
}
-
- public int getSkipCount() {
+
+ /**
+ * @return the sum of skips accumulated in the parent {@link StepExecution}
+ * and this StepContribution.
+ */
+ public int getStepSkipCount() {
return skipCount + execution.getSkipCount();
}
-
- public void incrementSkipCount(){
+
+ /**
+ * @return the number of skips collected in this
+ * StepContribution (not including skips accumulated in the
+ * parent {@link StepExecution}.
+ */
+ public int getContributionSkipCount() {
+ return skipCount;
+ }
+
+ public void incrementSkipCount() {
skipCount++;
}
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java b/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java
index bbba651b5..c0a29154f 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/StepExecution.java
@@ -307,7 +307,7 @@ public class StepExecution extends Entity {
// TODO: this should not be necessary - the step decides
// executionContext = contribution.getExecutionContext();
commitCount += contribution.getCommitCount();
- skipCount += contribution.getSkipCount();
+ skipCount += contribution.getContributionSkipCount();
}
/**
diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java
index c985df50c..0322bc5db 100644
--- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java
+++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/item/ItemSkipPolicyItemHandler.java
@@ -64,7 +64,7 @@ public class ItemSkipPolicyItemHandler extends SimpleItemHandler {
return getItemReader().read();
}
catch (Exception e) {
- if (itemSkipPolicy.shouldSkip(e, contribution.getSkipCount())) {
+ if (itemSkipPolicy.shouldSkip(e, contribution.getStepSkipCount())) {
contribution.incrementSkipCount();
if (getItemReader() instanceof Skippable) {
((Skippable) getItemReader()).skip();
@@ -87,7 +87,7 @@ public class ItemSkipPolicyItemHandler extends SimpleItemHandler {
getItemWriter().write(item);
}
catch (Exception e) {
- if (itemSkipPolicy.shouldSkip(e, contribution.getSkipCount())) {
+ if (itemSkipPolicy.shouldSkip(e, contribution.getStepSkipCount())) {
contribution.incrementSkipCount();
if (getItemReader() instanceof Skippable) {
((Skippable) getItemReader()).skip();