Skip to content

Commit cd63fd0

Browse files
committed
Refactor getLastJobExecution to handle no job execution found and add test for this case
Closes gh-5389 Signed-off-by: Gildéric Deruette <gilderic.deruette@kleegroup.com>
1 parent d8632a3 commit cd63fd0

3 files changed

Lines changed: 17 additions & 6 deletions

File tree

spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDao.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -310,11 +310,13 @@ public void updateJobExecution(JobExecution jobExecution) {
310310
@Override
311311
public JobExecution getLastJobExecution(JobInstance jobInstance) {
312312
long jobInstanceId = jobInstance.getId();
313-
314-
Long lastJobExecutionId = getJdbcTemplate().queryForObject(getQuery(GET_LAST_JOB_EXECUTION_ID), Long.class,
315-
jobInstanceId, jobInstanceId);
316-
317-
return lastJobExecutionId != null ? getJobExecution(lastJobExecutionId) : null;
313+
try {
314+
Long lastJobExecutionId = getJdbcTemplate().queryForObject(getQuery(GET_LAST_JOB_EXECUTION_ID), Long.class, jobInstanceId, jobInstanceId);
315+
return lastJobExecutionId != null ? getJobExecution(lastJobExecutionId) : null;
316+
}
317+
catch (EmptyResultDataAccessException e) {
318+
return null;
319+
}
318320
}
319321

320322
@Override

spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobDaoTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,16 @@ void testGetLastJobExecution() {
267267
assertEquals("jobKey", lastExecution.getJobParameters().getString("job.key"));
268268
}
269269

270+
@Test
271+
void testGetLastJobExecutionNoExecution() {
272+
273+
jobExecutionDao.deleteJobExecution(jobExecution);
274+
275+
JobExecution je = jobExecutionDao.getLastJobExecution(jobInstance);
276+
277+
assertNull(je);
278+
}
279+
270280
/**
271281
* Trying to create instance twice for the same job+parameters causes error
272282
*/

spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/jdbc/JdbcJobExecutionDaoTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,5 +170,4 @@ void testFindJobExecutionsInOrder() {
170170
Assertions.assertEquals(jobExecution2.getId(), jobExecutions.get(0).getId());
171171
Assertions.assertEquals(jobExecution1.getId(), jobExecutions.get(1).getId());
172172
}
173-
174173
}

0 commit comments

Comments
 (0)