Skip to content

Commit 18ae02a

Browse files
hpoettkerfmbenhassine
authored andcommitted
Fix NullPointerException when creating job executions for job instances without executions
1 parent 0a11682 commit 18ae02a

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/SimpleJobRepository.java

+4
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ public JobExecution createJobExecution(String jobName, JobParameters jobParamete
116116

117117
List<JobExecution> executions = jobExecutionDao.findJobExecutions(jobInstance);
118118

119+
if (executions.isEmpty()) {
120+
throw new IllegalStateException("Cannot find any job execution for job instance: " + jobInstance);
121+
}
122+
119123
// check for running executions and find the last started
120124
for (JobExecution execution : executions) {
121125
if (execution.isRunning() || execution.isStopping()) {

spring-batch-core/src/test/java/org/springframework/batch/core/repository/support/SimpleJobRepositoryTests.java

+9
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import java.util.ArrayList;
2929
import java.util.Arrays;
30+
import java.util.Collections;
3031
import java.util.Date;
3132
import java.util.List;
3233

@@ -274,6 +275,14 @@ public void testCreateJobExecutionAlreadyComplete() throws Exception {
274275
jobRepository.createJobExecution("foo", new JobParameters());
275276
}
276277

278+
@Test(expected = IllegalStateException.class)
279+
public void testCreateJobExecutionInstanceWithoutExecutions() throws Exception {
280+
when(jobInstanceDao.getJobInstance("foo", new JobParameters())).thenReturn(jobInstance);
281+
when(jobExecutionDao.findJobExecutions(jobInstance)).thenReturn(Collections.emptyList());
282+
283+
jobRepository.createJobExecution("foo", new JobParameters());
284+
}
285+
277286
@Test
278287
public void testGetStepExecutionCount() {
279288
// Given

0 commit comments

Comments
 (0)