diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/explore/JobExplorer.java b/spring-batch-core/src/main/java/org/springframework/batch/core/explore/JobExplorer.java index f10a5fa30..0b839c7d8 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/explore/JobExplorer.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/explore/JobExplorer.java @@ -76,7 +76,10 @@ public interface JobExplorer { * @param start The start index of the instances to return. * @param count The maximum number of instances to return. * @return a list of {@link JobInstance} for the requested job name. + * @deprecated Since v6.0 and scheduled for removal in v6.2. Use + * {@link #getJobInstances(String, int, int)} */ + @Deprecated(forRemoval = true) List findJobInstancesByJobName(String jobName, int start, int count); /** diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/explore/support/SimpleJobExplorer.java b/spring-batch-core/src/main/java/org/springframework/batch/core/explore/support/SimpleJobExplorer.java index 236be9902..58b86d037 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/explore/support/SimpleJobExplorer.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/explore/support/SimpleJobExplorer.java @@ -230,9 +230,14 @@ public class SimpleJobExplorer implements JobExplorer { } } + /** + * @deprecated since v6.0 and scheduled for removal in v6.2. Use + * {@link #getJobInstances(String, int, int)} instead. + */ + @Deprecated(forRemoval = true) @Override public List findJobInstancesByJobName(String jobName, int start, int count) { - return jobInstanceDao.findJobInstancesByName(jobName, start, count); + return getJobInstances(jobName, start, count); } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java index 8b503899a..b7e94badb 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java @@ -332,33 +332,14 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements } + /** + * @deprecated since v6.0 and scheduled for removal in v6.2. Use + * {@link #getJobInstances(String, int, int)} instead. + */ + @Deprecated(forRemoval = true) @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) public List findJobInstancesByName(String jobName, final int start, final int count) { - ResultSetExtractor extractor = new ResultSetExtractor() { - private final List list = new ArrayList<>(); - - @Override - public Object extractData(ResultSet rs) throws SQLException, DataAccessException { - int rowNum = 0; - while (rowNum < start && rs.next()) { - rowNum++; - } - while (rowNum < start + count && rs.next()) { - RowMapper rowMapper = new JobInstanceRowMapper(); - list.add(rowMapper.mapRow(rs, rowNum)); - rowNum++; - } - return list; - } - }; - - if (jobName.contains(STAR_WILDCARD)) { - jobName = jobName.replaceAll("\\" + STAR_WILDCARD, SQL_WILDCARD); - } - - return (List) getJdbcTemplate().query(getQuery(FIND_LAST_JOBS_LIKE_NAME), extractor, jobName); - + return getJobInstances(jobName, start, count); } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JobInstanceDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JobInstanceDao.java index 4c2ac43be..c430043ed 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JobInstanceDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JobInstanceDao.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2023 the original author or authors. + * Copyright 2006-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -117,7 +117,10 @@ public interface JobInstanceDao { * should begin. * @param count int containing the number of job instances to return. * @return a list of {@link JobInstance} for the job name requested. + * @deprecated Since v6.0 and scheduled for removal in v6.2. Use + * {@link #getJobInstances(String, int, int)} */ + @Deprecated(forRemoval = true) List findJobInstancesByName(String jobName, int start, int count); /** diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoJobInstanceDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoJobInstanceDao.java index b967e35f7..a325b34bd 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoJobInstanceDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoJobInstanceDao.java @@ -1,5 +1,5 @@ /* - * Copyright 2024 the original author or authors. + * Copyright 2024-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -143,20 +143,14 @@ public class MongoJobInstanceDao implements JobInstanceDao { .toList(); } + /** + * @deprecated since v6.0 and scheduled for removal in v6.2. Use + * {@link #getJobInstances(String, int, int)} instead. + */ + @Deprecated(forRemoval = true) @Override public List findJobInstancesByName(String jobName, int start, int count) { - Query query = query(where("jobName").alike(Example.of(jobName))); - Sort.Order sortOrder = Sort.Order.desc("jobInstanceId"); - List jobInstances = this.mongoOperations - .find(query.with(Sort.by(sortOrder)), - org.springframework.batch.core.repository.persistence.JobInstance.class, COLLECTION_NAME) - .stream() - .toList(); - return jobInstances.subList(start, jobInstances.size()) - .stream() - .map(this.jobInstanceConverter::toJobInstance) - .limit(count) - .toList(); + return getJobInstances(jobName, start, count); } @Override