From 7b2c68427472bbde88b0e4e766a7868d05f99136 Mon Sep 17 00:00:00 2001 From: Drummond Dawson Date: Thu, 3 Oct 2019 20:20:25 -0400 Subject: [PATCH] Support empty comments in FlatFileItemReaderBuilder Previously, if supplying empty comments or no comments to comments() of the FlatFileItemReaderBuilder, the comments would be ignored and instead use the default comments "#" provided by the FlatFileItemReader. Resolves BATCH-2837 --- .../builder/FlatFileItemReaderBuilder.java | 5 +-- .../FlatFileItemReaderBuilderTests.java | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) 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 c75507856..f75adc8d0 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 @@ -492,10 +492,7 @@ public class FlatFileItemReaderBuilder { } reader.setLinesToSkip(this.linesToSkip); - - if(!this.comments.isEmpty()) { - reader.setComments(this.comments.toArray(new String[this.comments.size()])); - } + reader.setComments(this.comments.toArray(new String[this.comments.size()])); reader.setSkippedLinesCallback(this.skippedLinesCallback); reader.setRecordSeparatorPolicy(this.recordSeparatorPolicy); 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 8b733d86a..1af45f068 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 @@ -268,6 +268,51 @@ public class FlatFileItemReaderBuilderTests { assertNull(reader.read()); } + @Test + public void testEmptyComments() throws Exception { + FlatFileItemReader reader = new FlatFileItemReaderBuilder() + .name("fooReader") + .resource(getResource("1,2,3\n4,5,6")) + .comments(new String[]{}) + .delimited() + .names(new String[] {"first", "second", "third"}) + .targetType(Foo.class) + .build(); + + reader.open(new ExecutionContext()); + Foo item = reader.read(); + assertEquals(1, item.getFirst()); + assertEquals(2, item.getSecond()); + assertEquals("3", item.getThird()); + item = reader.read(); + assertEquals(4, item.getFirst()); + assertEquals(5, item.getSecond()); + assertEquals("6", item.getThird()); + assertNull(reader.read()); + } + + @Test + public void testDefaultComments() throws Exception { + FlatFileItemReader reader = new FlatFileItemReaderBuilder() + .name("fooReader") + .resource(getResource("1,2,3\n4,5,6")) + .delimited() + .names(new String[] {"first", "second", "third"}) + .targetType(Foo.class) + .build(); + + reader.open(new ExecutionContext()); + Foo item = reader.read(); + assertEquals(1, item.getFirst()); + assertEquals(2, item.getSecond()); + assertEquals("3", item.getThird()); + item = reader.read(); + assertEquals(4, item.getFirst()); + assertEquals(5, item.getSecond()); + assertEquals("6", item.getThird()); + assertNull(reader.read()); + } + @Test public void testPrototypeBean() throws Exception { BeanFactory factory = new AnnotationConfigApplicationContext(Beans.class);