Skip to content

Commit 152e06a

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 0e4621d commit 152e06a

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
@@ -492,10 +492,7 @@ else if(this.fieldSetMapper != null) {
492492
}
493493

494494
reader.setLinesToSkip(this.linesToSkip);
495-
496-
if(!this.comments.isEmpty()) {
497-
reader.setComments(this.comments.toArray(new String[this.comments.size()]));
498-
}
495+
reader.setComments(this.comments.toArray(new String[this.comments.size()]));
499496

500497
reader.setSkippedLinesCallback(this.skippedLinesCallback);
501498
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
@@ -268,6 +268,51 @@ public void testComments() throws Exception {
268268
assertNull(reader.read());
269269
}
270270

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

0 commit comments

Comments
 (0)