From 46ff95f12d61c81d4a97dc91ab12e91307716b3a Mon Sep 17 00:00:00 2001 From: Santiago Molano Date: Tue, 31 Mar 2020 14:46:49 -0500 Subject: [PATCH] Fixed FlatFileItemReaderBuilder LineTokenizer validation Fixed validation for the FlatFileItemReaderBuilder where no LineTokenizer had been provided. Resolves: #3688 --- .../item/file/builder/FlatFileItemReaderBuilder.java | 2 +- .../file/builder/FlatFileItemReaderBuilderTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java index cd5fa6310..b4ab4bced 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java @@ -449,7 +449,7 @@ public class FlatFileItemReaderBuilder { reader.setLineMapper(this.lineMapper); } else { - Assert.state(validatorValue == 1 || validatorValue == 2 || validatorValue == 4, + Assert.state(validatorValue == 0 || validatorValue == 1 || validatorValue == 2 || validatorValue == 4, "Only one LineTokenizer option may be configured"); DefaultLineMapper lineMapper = new DefaultLineMapper<>(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java index c82c0f1bd..a954f5d3c 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java @@ -536,6 +536,18 @@ public class FlatFileItemReaderBuilderTests { assertEquals("No FieldSetMapper implementation was provided.", exceptionMessage); } } + @Test + public void testErrorMessageWhenNoLineTokenizerWasProvided() { + try { + new FlatFileItemReaderBuilder() + .name("fooReader") + .resource(getResource("1;2;3")) + .build(); + } catch (IllegalStateException exception) { + String exceptionMessage = exception.getMessage(); + assertEquals("No LineTokenizer implementation was provided.", exceptionMessage); + } + } private Resource getResource(String contents) { return new ByteArrayResource(contents.getBytes());