Skip to content

Commit 0aad44f

Browse files
committed
Default event-based item readers to bean name and remove strict name assertions
Added BeanNameAware to event item readers to use the bean name when no explicit name is provided. Removed name assertions from the corresponding builders. Closes: gh-5149 Signed-off-by: Andrey Litvitski <[email protected]>
1 parent 088487b commit 0aad44f

37 files changed

+71
-138
lines changed

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoCursorItemReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.jspecify.annotations.Nullable;
2929
import org.springframework.batch.infrastructure.item.ItemReader;
3030
import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader;
31+
import org.springframework.beans.factory.BeanNameAware;
3132
import org.springframework.beans.factory.InitializingBean;
3233
import org.springframework.data.domain.Sort;
3334
import org.springframework.data.mongodb.core.MongoOperations;
@@ -45,9 +46,11 @@
4546
* @author LEE Juchan
4647
* @author Mahmoud Ben Hassine
4748
* @author Jimmy Praet
49+
* @author Andrey Litvitski
4850
* @since 5.1
4951
*/
50-
public class MongoCursorItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements InitializingBean {
52+
public class MongoCursorItemReader<T> extends AbstractItemCountingItemStreamItemReader<T>
53+
implements InitializingBean, BeanNameAware {
5154

5255
private MongoOperations template;
5356

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoPagingItemReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.jspecify.annotations.Nullable;
2626
import org.springframework.batch.infrastructure.item.ExecutionContext;
2727
import org.springframework.batch.infrastructure.item.ItemReader;
28+
import org.springframework.beans.factory.BeanNameAware;
2829
import org.springframework.beans.factory.InitializingBean;
2930
import org.springframework.data.domain.PageRequest;
3031
import org.springframework.data.domain.Pageable;
@@ -79,8 +80,10 @@
7980
* @author Mahmoud Ben Hassine
8081
* @author Parikshit Dutta
8182
* @author Jimmy Praet
83+
* @author Andrey Litvitski
8284
*/
83-
public class MongoPagingItemReader<T> extends AbstractPaginatedDataItemReader<T> implements InitializingBean {
85+
public class MongoPagingItemReader<T> extends AbstractPaginatedDataItemReader<T>
86+
implements InitializingBean, BeanNameAware {
8487

8588
protected MongoOperations template;
8689

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/RepositoryItemReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.batch.infrastructure.item.adapter.AbstractMethodInvokingDelegator.InvocationTargetThrowableWrapper;
3232
import org.springframework.batch.infrastructure.item.adapter.DynamicMethodInvocationException;
3333
import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader;
34+
import org.springframework.beans.factory.BeanNameAware;
3435
import org.springframework.beans.factory.InitializingBean;
3536
import org.springframework.data.domain.PageRequest;
3637
import org.springframework.data.domain.Pageable;
@@ -80,9 +81,11 @@
8081
* @author Antoine Kapps
8182
* @author Mahmoud Ben Hassine
8283
* @author Jimmy Praet
84+
* @author Andrey Litvitski
8385
* @since 2.2
8486
*/
85-
public class RepositoryItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements InitializingBean {
87+
public class RepositoryItemReader<T> extends AbstractItemCountingItemStreamItemReader<T>
88+
implements InitializingBean, BeanNameAware {
8689

8790
protected Log logger = LogFactory.getLog(getClass());
8891

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoCursorItemReaderBuilder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* @author LEE Juchan
3838
* @author Mahmoud Ben Hassine
3939
* @author Stefano Cordio
40+
* @author Andrey Litvitski
4041
* @since 5.1
4142
* @see MongoCursorItemReader
4243
*/
@@ -278,9 +279,6 @@ public MongoCursorItemReaderBuilder<T> maxTime(Duration maxTime) {
278279

279280
public MongoCursorItemReader<T> build() {
280281
Assert.notNull(this.template, "template is required.");
281-
if (this.saveState) {
282-
Assert.hasText(this.name, "A name is required when saveState is set to true");
283-
}
284282
Assert.notNull(this.targetType, "targetType is required.");
285283
Assert.state(StringUtils.hasText(this.jsonQuery) || this.query != null, "A query is required");
286284
Assert.notNull(this.sorts, "sorts map is required.");

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
* @author Drummond Dawson
4242
* @author Parikshit Dutta
4343
* @author Stefano Cordio
44+
* @author Andrey Litvitski
4445
* @since 5.1
4546
*/
4647
public class MongoPagingItemReaderBuilder<T> {
@@ -263,9 +264,6 @@ public MongoPagingItemReaderBuilder<T> query(Query query) {
263264

264265
public MongoPagingItemReader<T> build() {
265266
Assert.notNull(this.template, "template is required.");
266-
if (this.saveState) {
267-
Assert.hasText(this.name, "A name is required when saveState is set to true");
268-
}
269267
Assert.notNull(this.targetType, "targetType is required.");
270268
Assert.state(StringUtils.hasText(this.jsonQuery) || this.query != null, "A query is required");
271269

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilder.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
* @author Glenn Renfro
3838
* @author Mahmoud Ben Hassine
3939
* @author Drummond Dawson
40+
* @author Andrey Litvitski
4041
* @since 4.0
4142
* @see RepositoryItemReader
4243
*/
@@ -192,9 +193,6 @@ public RepositoryItemReader<T> build() {
192193
Assert.notNull(this.repository, "repository is required.");
193194
Assert.isTrue(this.pageSize > 0, "Page size must be greater than 0");
194195
Assert.hasText(this.methodName, "methodName is required.");
195-
if (this.saveState) {
196-
Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true.");
197-
}
198196

199197
RepositoryItemReader<T> reader = new RepositoryItemReader<>(this.repository, this.sorts);
200198
if (this.arguments != null) {

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcCursorItemReader.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import javax.sql.DataSource;
2626

27+
import org.springframework.beans.factory.BeanNameAware;
2728
import org.springframework.jdbc.core.PreparedStatementSetter;
2829

2930
import org.jspecify.annotations.Nullable;
@@ -62,8 +63,9 @@
6263
* @author Mahmoud Ben Hassine
6364
* @author Stefano Cordio
6465
* @author Jimmy Praet
66+
* @author Andrey Litvitski
6567
*/
66-
public class JdbcCursorItemReader<T> extends AbstractCursorItemReader<T> {
68+
public class JdbcCursorItemReader<T> extends AbstractCursorItemReader<T> implements BeanNameAware {
6769

6870
private @Nullable PreparedStatement preparedStatement;
6971

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcPagingItemReader.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.springframework.batch.infrastructure.item.ItemReader;
3535
import org.springframework.batch.infrastructure.item.ExecutionContext;
3636
import org.springframework.batch.infrastructure.item.ItemStreamException;
37+
import org.springframework.beans.factory.BeanNameAware;
3738
import org.springframework.beans.factory.InitializingBean;
3839
import org.springframework.jdbc.core.JdbcTemplate;
3940
import org.springframework.jdbc.core.RowMapper;
@@ -75,9 +76,10 @@
7576
* @author Mahmoud Ben Hassine
7677
* @author Stefano Cordio
7778
* @author Jimmy Praet
79+
* @author Andrey Litvitski
7880
* @since 2.0
7981
*/
80-
public class JdbcPagingItemReader<T> extends AbstractPagingItemReader<T> implements InitializingBean {
82+
public class JdbcPagingItemReader<T> extends AbstractPagingItemReader<T> implements InitializingBean, BeanNameAware {
8183

8284
private static final String START_AFTER_VALUE = "start.after";
8385

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaCursorItemReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.batch.infrastructure.item.ItemStreamReader;
2929
import org.springframework.batch.infrastructure.item.database.orm.JpaQueryProvider;
3030
import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader;
31+
import org.springframework.beans.factory.BeanNameAware;
3132
import org.springframework.beans.factory.InitializingBean;
3233
import org.springframework.dao.DataAccessResourceFailureException;
3334
import org.springframework.util.Assert;
@@ -46,10 +47,12 @@
4647
* @author Jinwoo Bae
4748
* @author Stefano Cordio
4849
* @author Jimmy Praet
50+
* @author Andrey Litvitski
4951
* @param <T> type of items to read
5052
* @since 4.3
5153
*/
52-
public class JpaCursorItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements InitializingBean {
54+
public class JpaCursorItemReader<T> extends AbstractItemCountingItemStreamItemReader<T>
55+
implements InitializingBean, BeanNameAware {
5356

5457
private EntityManagerFactory entityManagerFactory;
5558

spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaPagingItemReader.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.batch.infrastructure.item.ItemReader;
3232
import org.springframework.batch.infrastructure.item.ExecutionContext;
3333
import org.springframework.batch.infrastructure.item.database.orm.JpaQueryProvider;
34+
import org.springframework.beans.factory.BeanNameAware;
3435
import org.springframework.dao.DataAccessResourceFailureException;
3536
import org.springframework.util.Assert;
3637
import org.springframework.util.StringUtils;
@@ -83,9 +84,10 @@
8384
* @author Mahmoud Ben Hassine
8485
* @author Jinwoo Bae
8586
* @author Jimmy Praet
87+
* @author Andrey Litvitski
8688
* @since 2.0
8789
*/
88-
public class JpaPagingItemReader<T> extends AbstractPagingItemReader<T> {
90+
public class JpaPagingItemReader<T> extends AbstractPagingItemReader<T> implements BeanNameAware {
8991

9092
private EntityManagerFactory entityManagerFactory;
9193

0 commit comments

Comments
 (0)