From 0aad44f267862e1d982d3b94a00ddfec22945c69 Mon Sep 17 00:00:00 2001 From: Andrey Litvitski Date: Tue, 9 Dec 2025 19:49:38 +0300 Subject: [PATCH] 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 --- .../item/data/MongoCursorItemReader.java | 5 ++- .../item/data/MongoPagingItemReader.java | 5 ++- .../item/data/RepositoryItemReader.java | 5 ++- .../builder/MongoCursorItemReaderBuilder.java | 4 +- .../builder/MongoPagingItemReaderBuilder.java | 4 +- .../builder/RepositoryItemReaderBuilder.java | 4 +- .../item/database/JdbcCursorItemReader.java | 4 +- .../item/database/JdbcPagingItemReader.java | 4 +- .../item/database/JpaCursorItemReader.java | 5 ++- .../item/database/JpaPagingItemReader.java | 4 +- .../builder/JdbcCursorItemReaderBuilder.java | 5 +-- .../builder/JdbcPagingItemReaderBuilder.java | 5 +-- .../builder/JpaCursorItemReaderBuilder.java | 4 +- .../builder/JpaPagingItemReaderBuilder.java | 5 +-- .../item/file/FlatFileItemReader.java | 4 +- .../item/file/MultiResourceItemReader.java | 4 +- .../builder/FlatFileItemReaderBuilder.java | 4 +- .../MultiResourceItemReaderBuilder.java | 4 +- .../item/json/JsonItemReader.java | 4 +- .../json/builder/JsonItemReaderBuilder.java | 4 +- .../item/kafka/KafkaItemReader.java | 4 +- .../kafka/builder/KafkaItemReaderBuilder.java | 4 +- .../infrastructure/item/ldif/LdifReader.java | 4 +- .../item/ldif/MappingLdifReader.java | 4 +- .../item/ldif/builder/LdifReaderBuilder.java | 4 +- .../builder/MappingLdifReaderBuilder.java | 4 +- .../item/xml/StaxEventItemReader.java | 4 +- .../builder/StaxEventItemReaderBuilder.java | 4 +- .../MongoPagingItemReaderBuilderTests.java | 10 +---- .../RepositoryItemReaderBuilderTests.java | 8 +--- .../JdbcCursorItemReaderBuilderTests.java | 7 +--- .../JdbcPagingItemReaderBuilderTests.java | 5 +-- .../JpaCursorItemReaderBuilderTests.java | 5 +-- .../JpaPagingItemReaderBuilderTests.java | 5 +-- ...StoredProcedureItemReaderBuilderTests.java | 7 +--- .../FlatFileItemReaderBuilderTests.java | 38 +------------------ .../builder/JsonItemReaderBuilderTests.java | 5 +-- 37 files changed, 71 insertions(+), 138 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoCursorItemReader.java index 3ccd23a3db..368958586b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoCursorItemReader.java @@ -28,6 +28,7 @@ import org.jspecify.annotations.Nullable; import org.springframework.batch.infrastructure.item.ItemReader; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoOperations; @@ -45,9 +46,11 @@ * @author LEE Juchan * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski * @since 5.1 */ -public class MongoCursorItemReader extends AbstractItemCountingItemStreamItemReader implements InitializingBean { +public class MongoCursorItemReader extends AbstractItemCountingItemStreamItemReader + implements InitializingBean, BeanNameAware { private MongoOperations template; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoPagingItemReader.java index d62e851e14..590a683e43 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/MongoPagingItemReader.java @@ -25,6 +25,7 @@ import org.jspecify.annotations.Nullable; import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.batch.infrastructure.item.ItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -79,8 +80,10 @@ * @author Mahmoud Ben Hassine * @author Parikshit Dutta * @author Jimmy Praet + * @author Andrey Litvitski */ -public class MongoPagingItemReader extends AbstractPaginatedDataItemReader implements InitializingBean { +public class MongoPagingItemReader extends AbstractPaginatedDataItemReader + implements InitializingBean, BeanNameAware { protected MongoOperations template; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/RepositoryItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/RepositoryItemReader.java index a0cf4e2a42..266cf11502 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/RepositoryItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/RepositoryItemReader.java @@ -31,6 +31,7 @@ import org.springframework.batch.infrastructure.item.adapter.AbstractMethodInvokingDelegator.InvocationTargetThrowableWrapper; import org.springframework.batch.infrastructure.item.adapter.DynamicMethodInvocationException; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -80,9 +81,11 @@ * @author Antoine Kapps * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski * @since 2.2 */ -public class RepositoryItemReader extends AbstractItemCountingItemStreamItemReader implements InitializingBean { +public class RepositoryItemReader extends AbstractItemCountingItemStreamItemReader + implements InitializingBean, BeanNameAware { protected Log logger = LogFactory.getLog(getClass()); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoCursorItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoCursorItemReaderBuilder.java index 9072d0e5a1..d995e33492 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoCursorItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoCursorItemReaderBuilder.java @@ -37,6 +37,7 @@ * @author LEE Juchan * @author Mahmoud Ben Hassine * @author Stefano Cordio + * @author Andrey Litvitski * @since 5.1 * @see MongoCursorItemReader */ @@ -278,9 +279,6 @@ public MongoCursorItemReaderBuilder maxTime(Duration maxTime) { public MongoCursorItemReader build() { Assert.notNull(this.template, "template is required."); - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } Assert.notNull(this.targetType, "targetType is required."); Assert.state(StringUtils.hasText(this.jsonQuery) || this.query != null, "A query is required"); Assert.notNull(this.sorts, "sorts map is required."); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilder.java index 980e4e84ef..aa380c0ed7 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilder.java @@ -41,6 +41,7 @@ * @author Drummond Dawson * @author Parikshit Dutta * @author Stefano Cordio + * @author Andrey Litvitski * @since 5.1 */ public class MongoPagingItemReaderBuilder { @@ -263,9 +264,6 @@ public MongoPagingItemReaderBuilder query(Query query) { public MongoPagingItemReader build() { Assert.notNull(this.template, "template is required."); - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } Assert.notNull(this.targetType, "targetType is required."); Assert.state(StringUtils.hasText(this.jsonQuery) || this.query != null, "A query is required"); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilder.java index ca776604c6..6b8063edef 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilder.java @@ -37,6 +37,7 @@ * @author Glenn Renfro * @author Mahmoud Ben Hassine * @author Drummond Dawson + * @author Andrey Litvitski * @since 4.0 * @see RepositoryItemReader */ @@ -192,9 +193,6 @@ public RepositoryItemReader build() { Assert.notNull(this.repository, "repository is required."); Assert.isTrue(this.pageSize > 0, "Page size must be greater than 0"); Assert.hasText(this.methodName, "methodName is required."); - if (this.saveState) { - Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); - } RepositoryItemReader reader = new RepositoryItemReader<>(this.repository, this.sorts); if (this.arguments != null) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcCursorItemReader.java index 271cde659a..9c4dd59b50 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcCursorItemReader.java @@ -24,6 +24,7 @@ import javax.sql.DataSource; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.jdbc.core.PreparedStatementSetter; import org.jspecify.annotations.Nullable; @@ -62,8 +63,9 @@ * @author Mahmoud Ben Hassine * @author Stefano Cordio * @author Jimmy Praet + * @author Andrey Litvitski */ -public class JdbcCursorItemReader extends AbstractCursorItemReader { +public class JdbcCursorItemReader extends AbstractCursorItemReader implements BeanNameAware { private @Nullable PreparedStatement preparedStatement; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcPagingItemReader.java index decc4099c6..67561b02b8 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JdbcPagingItemReader.java @@ -34,6 +34,7 @@ import org.springframework.batch.infrastructure.item.ItemReader; import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.batch.infrastructure.item.ItemStreamException; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -75,9 +76,10 @@ * @author Mahmoud Ben Hassine * @author Stefano Cordio * @author Jimmy Praet + * @author Andrey Litvitski * @since 2.0 */ -public class JdbcPagingItemReader extends AbstractPagingItemReader implements InitializingBean { +public class JdbcPagingItemReader extends AbstractPagingItemReader implements InitializingBean, BeanNameAware { private static final String START_AFTER_VALUE = "start.after"; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaCursorItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaCursorItemReader.java index 8158017206..35b98b3190 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaCursorItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaCursorItemReader.java @@ -28,6 +28,7 @@ import org.springframework.batch.infrastructure.item.ItemStreamReader; import org.springframework.batch.infrastructure.item.database.orm.JpaQueryProvider; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.util.Assert; @@ -46,10 +47,12 @@ * @author Jinwoo Bae * @author Stefano Cordio * @author Jimmy Praet + * @author Andrey Litvitski * @param type of items to read * @since 4.3 */ -public class JpaCursorItemReader extends AbstractItemCountingItemStreamItemReader implements InitializingBean { +public class JpaCursorItemReader extends AbstractItemCountingItemStreamItemReader + implements InitializingBean, BeanNameAware { private EntityManagerFactory entityManagerFactory; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaPagingItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaPagingItemReader.java index a3b13c6fd9..856147d62d 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaPagingItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/JpaPagingItemReader.java @@ -31,6 +31,7 @@ import org.springframework.batch.infrastructure.item.ItemReader; import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.batch.infrastructure.item.database.orm.JpaQueryProvider; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -83,9 +84,10 @@ * @author Mahmoud Ben Hassine * @author Jinwoo Bae * @author Jimmy Praet + * @author Andrey Litvitski * @since 2.0 */ -public class JpaPagingItemReader extends AbstractPagingItemReader { +public class JpaPagingItemReader extends AbstractPagingItemReader implements BeanNameAware { private EntityManagerFactory entityManagerFactory; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilder.java index 1c26313811..e369e4c5db 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilder.java @@ -46,6 +46,7 @@ * @author Fabio Molignoni * @author Juyoung Kim * @author Stefano Cordio + * @author Andrey Litvitski * @since 4.0 */ public class JdbcCursorItemReaderBuilder { @@ -349,10 +350,6 @@ public JdbcCursorItemReaderBuilder connectionAutoCommit(boolean connectionAut * @return a fully constructed {@link JdbcCursorItemReader} */ public JdbcCursorItemReader build() { - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } - Assert.hasText(this.sql, "A query is required"); Assert.notNull(this.dataSource, "A datasource is required"); Assert.notNull(this.rowMapper, "A rowmapper is required"); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilder.java index e3102e90a4..9e090ca6d6 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilder.java @@ -60,6 +60,7 @@ * @author Minsoo Kim * @author Juyoung Kim * @author Stefano Cordio + * @author Andrey Litvitski * @since 4.0 * @see JdbcPagingItemReader */ @@ -318,10 +319,6 @@ public JdbcPagingItemReader build() throws Exception { Assert.isTrue(pageSize > 0, "pageSize must be greater than zero"); Assert.notNull(dataSource, "dataSource is required"); - if (saveState) { - Assert.hasText(name, "A name is required when saveState is set to true"); - } - JdbcPagingItemReader reader = new JdbcPagingItemReader<>(this.dataSource, queryProvider == null ? determineQueryProvider(dataSource) : queryProvider); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilder.java index 5bceb36569..02a56abbe9 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilder.java @@ -33,6 +33,7 @@ * @author Mahmoud Ben Hassine * @author Jinwoo Bae * @author Stefano Cordio + * @author Andrey Litvitski * @since 4.3 */ public class JpaCursorItemReaderBuilder { @@ -175,9 +176,6 @@ public JpaCursorItemReaderBuilder entityManagerFactory(EntityManagerFactory e */ public JpaCursorItemReader build() { Assert.notNull(this.entityManagerFactory, "An EntityManagerFactory is required"); - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } if (this.queryProvider == null) { Assert.hasLength(this.queryString, "Query string is required when queryProvider is null"); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilder.java index 7dcb1c7b56..dff401a3d0 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilder.java @@ -34,6 +34,7 @@ * @author Glenn Renfro * @author Jinwoo Bae * @author Stefano Cordio + * @author Andrey Litvitski * @since 4.0 */ @@ -211,10 +212,6 @@ public JpaPagingItemReader build() { Assert.isTrue(this.pageSize > 0, "pageSize must be greater than zero"); Assert.notNull(this.entityManagerFactory, "An EntityManagerFactory is required"); - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } - if (this.queryProvider == null) { Assert.hasLength(this.queryString, "Query string is required when queryProvider is null"); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/FlatFileItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/FlatFileItemReader.java index c82a301656..ad62518544 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/FlatFileItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/FlatFileItemReader.java @@ -30,6 +30,7 @@ import org.springframework.batch.infrastructure.item.file.separator.RecordSeparatorPolicy; import org.springframework.batch.infrastructure.item.file.separator.SimpleRecordSeparatorPolicy; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.core.io.Resource; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -50,12 +51,13 @@ * @author Mahmoud Ben Hassine * @author Stefano Cordio * @author Jimmy Praet + * @author Andrey Litvitski */ // FIXME the design of creating a flat file reader with an optional resource (to support // the multi-resource case) is broken. // FIXME The multi-resource reader should create the delegate with the current resource public class FlatFileItemReader extends AbstractItemCountingItemStreamItemReader - implements ResourceAwareItemReaderItemStream { + implements ResourceAwareItemReaderItemStream, BeanNameAware { private static final Log logger = LogFactory.getLog(FlatFileItemReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/MultiResourceItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/MultiResourceItemReader.java index 258770f8e1..4bbeb1adf7 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/MultiResourceItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/MultiResourceItemReader.java @@ -28,6 +28,7 @@ import org.springframework.batch.infrastructure.item.ItemStreamException; import org.springframework.batch.infrastructure.item.ResourceAware; import org.springframework.batch.infrastructure.item.support.AbstractItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.core.io.Resource; import org.springframework.util.Assert; @@ -43,8 +44,9 @@ * @author Lucas Ward * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski */ -public class MultiResourceItemReader extends AbstractItemStreamItemReader { +public class MultiResourceItemReader extends AbstractItemStreamItemReader implements BeanNameAware { private static final Log logger = LogFactory.getLog(MultiResourceItemReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java index b8128c7b36..6931dace00 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilder.java @@ -65,6 +65,7 @@ * @author François Martin * @author Stefano Cordio * @author Daeho Kwon + * @author Andrey Litvitski * @since 4.0 * @see FlatFileItemReader */ @@ -465,9 +466,6 @@ public FlatFileItemReaderBuilder beanMapperStrict(boolean beanMapperStrict) { * @return a {@link FlatFileItemReader} */ public FlatFileItemReader build() { - if (this.saveState) { - Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); - } if (this.resource == null) { logger.debug("The resource is null. This is only a valid scenario when " diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/MultiResourceItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/MultiResourceItemReaderBuilder.java index b503d10a6c..2de0b4555c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/MultiResourceItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/file/builder/MultiResourceItemReaderBuilder.java @@ -34,6 +34,7 @@ * @author Glenn Renfro * @author Drummond Dawson * @author Stefano Cordio + * @author Andrey Litvitski * @since 4.0 * @see MultiResourceItemReader */ @@ -137,9 +138,6 @@ public MultiResourceItemReaderBuilder comparator(Comparator compara public MultiResourceItemReader build() { Assert.notNull(this.resources, "resources array is required."); Assert.notNull(this.delegate, "delegate is required."); - if (this.saveState) { - Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); - } MultiResourceItemReader reader = new MultiResourceItemReader<>(this.delegate); reader.setResources(this.resources); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/JsonItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/JsonItemReader.java index 57c94e47b8..64dfded6f2 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/JsonItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/JsonItemReader.java @@ -24,6 +24,7 @@ import org.springframework.batch.infrastructure.item.ItemStreamReader; import org.springframework.batch.infrastructure.item.file.ResourceAwareItemReaderItemStream; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.core.io.Resource; import org.springframework.util.Assert; @@ -48,10 +49,11 @@ * @param the type of json objects to read * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski * @since 4.1 */ public class JsonItemReader extends AbstractItemCountingItemStreamItemReader - implements ResourceAwareItemReaderItemStream { + implements ResourceAwareItemReaderItemStream, BeanNameAware { private static final Log LOGGER = LogFactory.getLog(JsonItemReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilder.java index fc40da365e..ed5c24b396 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilder.java @@ -36,6 +36,7 @@ * * @param type of the target item * @author Mahmoud Ben Hassine + * @author Andrey Litvitski * @since 4.1 */ public class JsonItemReaderBuilder { @@ -149,9 +150,6 @@ public JsonItemReaderBuilder currentItemCount(int currentItemCount) { */ public JsonItemReader build() { Assert.notNull(this.jsonObjectReader, "A json object reader is required."); - if (this.saveState) { - Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); - } if (this.resource == null) { logger.debug("The resource is null. This is only a valid scenario when " diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/KafkaItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/KafkaItemReader.java index 5717bcff56..1dcf468745 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/KafkaItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/KafkaItemReader.java @@ -34,6 +34,7 @@ import org.springframework.batch.infrastructure.item.ItemReader; import org.springframework.batch.infrastructure.item.ExecutionContext; import org.springframework.batch.infrastructure.item.support.AbstractItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.util.Assert; /** @@ -50,9 +51,10 @@ * @author Mathieu Ouellet * @author Mahmoud Ben Hassine * @author Hyunwoo Jung + * @author Andrey Litvitski * @since 4.2 */ -public class KafkaItemReader extends AbstractItemStreamItemReader { +public class KafkaItemReader extends AbstractItemStreamItemReader implements BeanNameAware { private static final String TOPIC_PARTITION_OFFSETS = "topic.partition.offsets"; diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/builder/KafkaItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/builder/KafkaItemReaderBuilder.java index 7bb7c57480..b9988facca 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/builder/KafkaItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/kafka/builder/KafkaItemReaderBuilder.java @@ -38,6 +38,7 @@ * * @author Mathieu Ouellet * @author Mahmoud Ben Hassine + * @author Andrey Litvitski * @since 4.2 * @see KafkaItemReader */ @@ -155,9 +156,6 @@ public KafkaItemReaderBuilder pollTimeout(Duration pollTimeout) { } public KafkaItemReader build() { - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } Assert.notNull(consumerProperties, "Consumer properties must not be null"); Assert.isTrue(consumerProperties.containsKey(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG), ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG + " property must be provided"); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/LdifReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/LdifReader.java index 45a33d96a3..55b212ee48 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/LdifReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/LdifReader.java @@ -25,6 +25,7 @@ import org.springframework.batch.infrastructure.item.file.FlatFileItemReader; import org.springframework.batch.infrastructure.item.file.ResourceAwareItemReaderItemStream; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.ldap.core.LdapAttributes; @@ -62,10 +63,11 @@ * @author Keith Barlow * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski * */ public class LdifReader extends AbstractItemCountingItemStreamItemReader - implements ResourceAwareItemReaderItemStream, InitializingBean { + implements ResourceAwareItemReaderItemStream, InitializingBean, BeanNameAware { private static final Log LOG = LogFactory.getLog(LdifReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/MappingLdifReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/MappingLdifReader.java index 59825c5aba..70cc883636 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/MappingLdifReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/MappingLdifReader.java @@ -24,6 +24,7 @@ import org.springframework.batch.infrastructure.item.file.FlatFileItemReader; import org.springframework.batch.infrastructure.item.file.ResourceAwareItemReaderItemStream; import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.ldap.core.LdapAttributes; @@ -54,10 +55,11 @@ * @author Keith Barlow * @author Mahmoud Ben Hassine * @author Jimmy Praet + * @author Andrey Litvitski * */ public class MappingLdifReader extends AbstractItemCountingItemStreamItemReader - implements ResourceAwareItemReaderItemStream, InitializingBean { + implements ResourceAwareItemReaderItemStream, InitializingBean, BeanNameAware { private static final Log LOG = LogFactory.getLog(MappingLdifReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/LdifReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/LdifReaderBuilder.java index 35dfa46c1c..a2a0fbcb8c 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/LdifReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/LdifReaderBuilder.java @@ -30,6 +30,7 @@ * Creates a fully qualified LdifReader. * * @author Glenn Renfro + * @author Andrey Litvitski * @since 4.0 */ public class LdifReaderBuilder { @@ -164,9 +165,6 @@ public LdifReader build() throws Exception { LdifReader reader = new LdifReader(this.resource); reader.setRecordsToSkip(this.recordsToSkip); reader.setSaveState(this.saveState); - if (this.name != null) { - reader.setName(this.name); - } reader.setCurrentItemCount(this.currentItemCount); reader.setMaxItemCount(this.maxItemCount); if (this.skippedRecordsCallback != null) { diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/MappingLdifReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/MappingLdifReaderBuilder.java index b22195f5ac..ed4486e314 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/MappingLdifReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/ldif/builder/MappingLdifReaderBuilder.java @@ -31,6 +31,7 @@ * Creates a fully qualified MappingLdifReader. * * @author Glenn Renfro + * @author Andrey Litvitski * @since 4.0 */ public class MappingLdifReaderBuilder { @@ -174,9 +175,6 @@ public MappingLdifReaderBuilder recordMapper(RecordMapper recordMapper) { public MappingLdifReader build() throws Exception { Assert.notNull(this.resource, "Resource is required."); Assert.notNull(this.recordMapper, "RecordMapper is required."); - if (this.saveState) { - Assert.hasText(this.name, "A name is required when saveState is set to true"); - } MappingLdifReader reader = new MappingLdifReader<>(this.resource); reader.setRecordsToSkip(this.recordsToSkip); reader.setSaveState(saveState); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/StaxEventItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/StaxEventItemReader.java index b1ab0c7f7f..2738b62409 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/StaxEventItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/StaxEventItemReader.java @@ -41,6 +41,7 @@ import org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader; import org.springframework.batch.infrastructure.item.xml.stax.DefaultFragmentEventReader; import org.springframework.batch.infrastructure.item.xml.stax.FragmentEventReader; +import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.oxm.Unmarshaller; @@ -61,9 +62,10 @@ * @author Mahmoud Ben Hassine * @author Glenn Renfro * @author Jimmy Praet + * @author Andrey Litvitski */ public class StaxEventItemReader extends AbstractItemCountingItemStreamItemReader - implements ResourceAwareItemReaderItemStream, InitializingBean { + implements ResourceAwareItemReaderItemStream, InitializingBean, BeanNameAware { private static final Log logger = LogFactory.getLog(StaxEventItemReader.class); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/builder/StaxEventItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/builder/StaxEventItemReaderBuilder.java index 256b4debb8..85421775d7 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/builder/StaxEventItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/infrastructure/item/xml/builder/StaxEventItemReaderBuilder.java @@ -42,6 +42,7 @@ * @author Glenn Renfro * @author Mahmoud Ben Hassine * @author Parikshit Dutta + * @author Andrey Litvitski * @since 4.0 */ public class StaxEventItemReaderBuilder { @@ -223,9 +224,6 @@ public StaxEventItemReader build() { logger.debug("The resource is null. This is only a valid scenario when " + "injecting resource later as in when using the MultiResourceItemReader"); } - if (this.saveState) { - Assert.state(StringUtils.hasText(this.name), "A name is required when saveState is set to true."); - } Assert.notEmpty(this.fragmentRootElements, "At least one fragment root element is required"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilderTests.java index 4ec6b30bc7..3b41a52245 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/MongoPagingItemReaderBuilderTests.java @@ -50,6 +50,7 @@ * @author Drummond Dawson * @author Parikshit Dutta * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ @ExtendWith(MockitoExtension.class) class MongoPagingItemReaderBuilderTests { @@ -220,15 +221,6 @@ void testNullSortsWithQuery() { .pageSize(50), "sorts map is required."); } - @Test - void testNullName() { - validateExceptionMessage(new MongoPagingItemReaderBuilder().template(this.template) - .targetType(String.class) - .jsonQuery("{ }") - .sorts(this.sortOptions) - .pageSize(50), "A name is required when saveState is set to true"); - } - private void validateExceptionMessage(MongoPagingItemReaderBuilder builder, String message) { Exception exception = assertThrows(RuntimeException.class, builder::build); assertTrue(exception instanceof IllegalArgumentException || exception instanceof IllegalStateException); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilderTests.java index 78bae6f223..07b36e2cf7 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/data/builder/RepositoryItemReaderBuilderTests.java @@ -43,6 +43,7 @@ * @author Glenn Renfro * @author Drummond Dawson * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ @MockitoSettings(strictness = Strictness.LENIENT) class RepositoryItemReaderBuilderTests { @@ -134,13 +135,6 @@ void testNoMethodName() { @Test void testSaveState() { - var builder = new RepositoryItemReaderBuilder<>().repository(repository) - .methodName("foo") - .sorts(sorts) - .maxItemCount(5); - Exception exception = assertThrows(IllegalStateException.class, builder::build); - assertEquals("A name is required when saveState is set to true.", exception.getMessage()); - // No IllegalStateException for a name that is not set, should not be thrown since // saveState was false. new RepositoryItemReaderBuilder<>().repository(repository) diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilderTests.java index 57d24d6bee..c327099794 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcCursorItemReaderBuilderTests.java @@ -49,6 +49,7 @@ * @author Parikshit Dutta * @author Mahmoud Ben Hassine * @author Juyoung Kim + * @author Andrey Litvitski */ class JdbcCursorItemReaderBuilderTests { @@ -313,12 +314,8 @@ void testVerifyCursorPositionDefaultToTrue() { @Test void testValidation() { - var builder = new JdbcCursorItemReaderBuilder().saveState(true); + var builder = new JdbcCursorItemReaderBuilder().saveState(false); Exception exception = assertThrows(IllegalArgumentException.class, builder::build); - assertEquals("A name is required when saveState is set to true", exception.getMessage()); - - builder = new JdbcCursorItemReaderBuilder().saveState(false); - exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("A query is required", exception.getMessage()); builder = new JdbcCursorItemReaderBuilder().saveState(false).sql("select 1"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilderTests.java index 07c168c959..a986b7c842 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JdbcPagingItemReaderBuilderTests.java @@ -48,6 +48,7 @@ * @author Drummond Dawson * @author Mahmoud Ben Hassine * @author Juyoung Kim + * @author Andrey Litvitski */ class JdbcPagingItemReaderBuilderTests { @@ -292,10 +293,6 @@ void testValidation() { exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("dataSource is required", exception.getMessage()); - builder = new JdbcPagingItemReaderBuilder().pageSize(2).dataSource(this.dataSource); - exception = assertThrows(IllegalArgumentException.class, builder::build); - assertEquals("A name is required when saveState is set to true", exception.getMessage()); - builder = new JdbcPagingItemReaderBuilder().saveState(false).pageSize(2).dataSource(this.dataSource); exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("selectClause is required when not providing a PagingQueryProvider", exception.getMessage()); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilderTests.java index 59b2092e90..93ae556a2a 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaCursorItemReaderBuilderTests.java @@ -50,6 +50,7 @@ /** * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ class JpaCursorItemReaderBuilderTests { @@ -199,10 +200,6 @@ void testValidation() { Exception exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("An EntityManagerFactory is required", exception.getMessage()); - builder = new JpaCursorItemReaderBuilder().entityManagerFactory(this.entityManagerFactory).saveState(true); - exception = assertThrows(IllegalArgumentException.class, builder::build); - assertEquals("A name is required when saveState is set to true", exception.getMessage()); - builder = new JpaCursorItemReaderBuilder().entityManagerFactory(this.entityManagerFactory) .saveState(false); exception = assertThrows(IllegalArgumentException.class, builder::build); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilderTests.java index 3e529a6723..6e42b96f5e 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/JpaPagingItemReaderBuilderTests.java @@ -53,6 +53,7 @@ * @author Michael Minella * @author Parikshit Dutta * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ class JpaPagingItemReaderBuilderTests { @@ -212,10 +213,6 @@ void testValidation() { exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("An EntityManagerFactory is required", exception.getMessage()); - builder = new JpaPagingItemReaderBuilder().entityManagerFactory(this.entityManagerFactory).saveState(true); - exception = assertThrows(IllegalArgumentException.class, builder::build); - assertEquals("A name is required when saveState is set to true", exception.getMessage()); - builder = new JpaPagingItemReaderBuilder().entityManagerFactory(this.entityManagerFactory) .saveState(false); exception = assertThrows(IllegalArgumentException.class, builder::build); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/StoredProcedureItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/StoredProcedureItemReaderBuilderTests.java index 77554fc05d..3a9dd14d59 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/StoredProcedureItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/database/builder/StoredProcedureItemReaderBuilderTests.java @@ -35,6 +35,7 @@ /** * @author Michael Minella * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ class StoredProcedureItemReaderBuilderTests { @@ -81,12 +82,8 @@ void testConfiguration() { @Test void testValidation() { - var builder = new StoredProcedureItemReaderBuilder(); + var builder = new StoredProcedureItemReaderBuilder().saveState(false); Exception exception = assertThrows(IllegalArgumentException.class, builder::build); - assertEquals("A name is required when saveSate is set to true", exception.getMessage()); - - builder = new StoredProcedureItemReaderBuilder().saveState(false); - exception = assertThrows(IllegalArgumentException.class, builder::build); assertEquals("The name of the stored procedure must be provided", exception.getMessage()); builder = new StoredProcedureItemReaderBuilder().saveState(false).procedureName("read_foos"); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilderTests.java index 554ac0453b..96722ce1bd 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/file/builder/FlatFileItemReaderBuilderTests.java @@ -61,6 +61,7 @@ * @author Patrick Baumgartner * @author François Martin * @author Daeho Kwon + * @author Andrey Litvitski */ class FlatFileItemReaderBuilderTests { @@ -478,43 +479,6 @@ public FieldSet create(String[] values) { assertNull(reader.read()); } - @Test - void testName() { - var builder = new FlatFileItemReaderBuilder().resource(getResource("1 2 3")) - .fixedLength() - .columns(new Range(1, 3), new Range(4, 6), new Range(7)) - .names("first", "second", "third") - .targetType(Foo.class); - Exception exception = assertThrows(IllegalStateException.class, builder::build); - assertEquals("A name is required when saveState is set to true.", exception.getMessage()); - - builder = new FlatFileItemReaderBuilder().resource(getResource("1 2 3")) - .fixedLength() - .columns(new Range(1, 3), new Range(4, 6), new Range(7)) - .names("first", "second", "third") - .targetType(Foo.class) - .name(null); - exception = assertThrows(IllegalStateException.class, builder::build); - assertEquals("A name is required when saveState is set to true.", exception.getMessage()); - - assertNotNull(new FlatFileItemReaderBuilder().resource(getResource("1 2 3")) - .fixedLength() - .columns(new Range(1, 3), new Range(4, 6), new Range(7)) - .names("first", "second", "third") - .targetType(Foo.class) - .saveState(false) - .build(), "builder should return new instance of FlatFileItemReader"); - - assertNotNull(new FlatFileItemReaderBuilder().resource(getResource("1 2 3")) - .fixedLength() - .columns(new Range(1, 3), new Range(4, 6), new Range(7)) - .names("first", "second", "third") - .targetType(Foo.class) - .name("foobar") - .build(), "builder should return new instance of FlatFileItemReader"); - - } - @Test void testDefaultEncoding() { String encoding = FlatFileItemReader.DEFAULT_CHARSET; diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilderTests.java index 579903c31c..28451690fe 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/infrastructure/item/json/builder/JsonItemReaderBuilderTests.java @@ -32,6 +32,7 @@ /** * @author Mahmoud Ben Hassine + * @author Andrey Litvitski */ @ExtendWith(MockitoExtension.class) class JsonItemReaderBuilderTests { @@ -47,10 +48,6 @@ void testValidation() { Exception exception = assertThrows(IllegalArgumentException.class, () -> new JsonItemReaderBuilder().build()); assertEquals("A json object reader is required.", exception.getMessage()); - - exception = assertThrows(IllegalStateException.class, - () -> new JsonItemReaderBuilder().jsonObjectReader(this.jsonObjectReader).build()); - assertEquals("A name is required when saveState is set to true.", exception.getMessage()); } @Test