From 0ecc82a9cb17de4575a71d19d29ae4311074517b Mon Sep 17 00:00:00 2001 From: Santiago Molano Date: Tue, 31 Mar 2020 14:46:49 -0500 Subject: [PATCH] Added support when no LineTokenizer was provided --- .../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 44696c16fe..d3222779bb 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 @@ -469,7 +469,7 @@ public FlatFileItemReader build() { 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 b1f8ef6b39..7643a785d7 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 @@ -541,6 +541,18 @@ public void testErrorMessageWhenNoFieldSetMapperIsProvided() { 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());