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 bc1324fab..4d46bb266 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 @@ -477,7 +477,8 @@ public class StepExecution extends Entity { } StepExecution other = (StepExecution) obj; - return stepName.equals(other.getStepName()) && (jobExecutionId.equals(other.getJobExecutionId())); + return stepName.equals(other.getStepName()) && (jobExecutionId.equals(other.getJobExecutionId())) + && getId().equals(other.getId()); } /** @@ -496,8 +497,9 @@ public class StepExecution extends Entity { */ public int hashCode() { Object jobExecutionId = getJobExecutionId(); + Long id = getId(); return super.hashCode() + 31 * (stepName != null ? stepName.hashCode() : 0) + 91 - * (jobExecutionId != null ? jobExecutionId.hashCode() : 0); + * (jobExecutionId != null ? jobExecutionId.hashCode() : 0) + 59 * (id != null ? id.hashCode() : 0); } public String toString() { diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/StepExecutionTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/StepExecutionTests.java index 0636b119c..87c294f69 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/StepExecutionTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/StepExecutionTests.java @@ -188,6 +188,14 @@ public class StepExecutionTests { assertEquals("bar", execution.getExecutionContext().getString("foo")); } + @Test + public void testEqualsWithSameName() throws Exception { + Step step = new StepSupport("stepName"); + Entity stepExecution1 = newStepExecution(step,11L,4L); + Entity stepExecution2 = newStepExecution(step,11L,5L); + assertFalse(stepExecution1.equals(stepExecution2)); + } + @Test public void testEqualsWithSameIdentifier() throws Exception { Step step = new StepSupport("stepName"); @@ -291,9 +299,13 @@ public class StepExecutionTests { assertEquals(BatchStatus.FAILED, execution.getStatus()); } - private StepExecution newStepExecution(Step step, Long long2) { - JobInstance job = new JobInstance(new Long(3), new JobParameters(), "testJob"); - StepExecution execution = new StepExecution(step.getName(), new JobExecution(job, long2), new Long(4)); + private StepExecution newStepExecution(Step step, Long jobExecutionId) { + return newStepExecution(step, jobExecutionId, 4); + } + + private StepExecution newStepExecution(Step step, Long jobExecutionId, long stepExecutionId) { + JobInstance job = new JobInstance(3L, new JobParameters(), "testJob"); + StepExecution execution = new StepExecution(step.getName(), new JobExecution(job, jobExecutionId), stepExecutionId); return execution; }