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