Skip to content

Commit e5855c7

Browse files
drumoniifmbenhassine
authored andcommitted
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
1 parent 5ee6699 commit e5855c7

File tree

2 files changed

+46
-4
lines changed

2 files changed

+46
-4
lines changed

spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilder.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -512,10 +512,7 @@ else if(this.fieldSetMapper != null) {
512512
}
513513

514514
reader.setLinesToSkip(this.linesToSkip);
515-
516-
if(!this.comments.isEmpty()) {
517-
reader.setComments(this.comments.toArray(new String[this.comments.size()]));
518-
}
515+
reader.setComments(this.comments.toArray(new String[this.comments.size()]));
519516

520517
reader.setSkippedLinesCallback(this.skippedLinesCallback);
521518
reader.setRecordSeparatorPolicy(this.recordSeparatorPolicy);

spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemReaderBuilderTests.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,51 @@ public void testComments() throws Exception {
273273
assertNull(reader.read());
274274
}
275275

276+
@Test
277+
public void testEmptyComments() throws Exception {
278+
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>()
279+
.name("fooReader")
280+
.resource(getResource("1,2,3\n4,5,6"))
281+
.comments(new String[]{})
282+
.delimited()
283+
.names("first", "second", "third")
284+
.targetType(Foo.class)
285+
.build();
286+
287+
reader.open(new ExecutionContext());
288+
Foo item = reader.read();
289+
assertEquals(1, item.getFirst());
290+
assertEquals(2, item.getSecond());
291+
assertEquals("3", item.getThird());
292+
item = reader.read();
293+
assertEquals(4, item.getFirst());
294+
assertEquals(5, item.getSecond());
295+
assertEquals("6", item.getThird());
296+
assertNull(reader.read());
297+
}
298+
299+
@Test
300+
public void testDefaultComments() throws Exception {
301+
FlatFileItemReader<Foo> reader = new FlatFileItemReaderBuilder<Foo>()
302+
.name("fooReader")
303+
.resource(getResource("1,2,3\n4,5,6"))
304+
.delimited()
305+
.names("first", "second", "third")
306+
.targetType(Foo.class)
307+
.build();
308+
309+
reader.open(new ExecutionContext());
310+
Foo item = reader.read();
311+
assertEquals(1, item.getFirst());
312+
assertEquals(2, item.getSecond());
313+
assertEquals("3", item.getThird());
314+
item = reader.read();
315+
assertEquals(4, item.getFirst());
316+
assertEquals(5, item.getSecond());
317+
assertEquals("6", item.getThird());
318+
assertNull(reader.read());
319+
}
320+
276321
@Test
277322
public void testPrototypeBean() throws Exception {
278323
BeanFactory factory = new AnnotationConfigApplicationContext(Beans.class);

0 commit comments

Comments
 (0)