From e5855c7e6bfb70ed7aea359c8a297dd87a4e9b23 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 9f43f685a..a9feb798b 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 @@ -512,10 +512,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 78e085664..75f63631e 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 @@ -273,6 +273,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("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("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);