Fixed FlatFileItemReaderBuilder LineTokenizer validation

Fixed validation for the FlatFileItemReaderBuilder where no
LineTokenizer had been provided.

Resolves: #3688
This commit is contained in:
Santiago Molano
2020-03-31 14:46:49 -05:00
committed by Michael Minella
parent c165d5f173
commit 46ff95f12d
2 changed files with 13 additions and 1 deletions

View File

@@ -449,7 +449,7 @@ public class FlatFileItemReaderBuilder<T> {
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<T> lineMapper = new DefaultLineMapper<>();

View File

@@ -536,6 +536,18 @@ public class FlatFileItemReaderBuilderTests {
assertEquals("No FieldSetMapper implementation was provided.", exceptionMessage);
}
}
@Test
public void testErrorMessageWhenNoLineTokenizerWasProvided() {
try {
new FlatFileItemReaderBuilder<Foo>()
.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());