diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilder.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilder.java index bbabd889f..6081188d3 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilder.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilder.java @@ -33,7 +33,6 @@ import org.springframework.batch.item.file.transform.FormatterLineAggregator; import org.springframework.batch.item.file.transform.LineAggregator; import org.springframework.core.io.Resource; import org.springframework.util.Assert; -import org.springframework.util.StringUtils; /** * A builder implementation for the {@link FlatFileItemWriter} @@ -464,9 +463,7 @@ public class FlatFileItemWriterBuilder { "A list of field names or a field extractor is required"); DelimitedLineAggregator delimitedLineAggregator = new DelimitedLineAggregator<>(); - if (StringUtils.hasLength(this.delimiter)) { - delimitedLineAggregator.setDelimiter(this.delimiter); - } + delimitedLineAggregator.setDelimiter(this.delimiter); if (this.fieldExtractor == null) { BeanWrapperFieldExtractor beanWrapperFieldExtractor = new BeanWrapperFieldExtractor<>(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilderTests.java index 20d23c220..bda8417c5 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/builder/FlatFileItemWriterBuilderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2018 the original author or authors. + * Copyright 2016-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -119,6 +119,34 @@ public class FlatFileItemWriterBuilderTests { assertEquals("HEADER$1,2,3$4,5,6$FOOTER", readLine("UTF-16LE", output)); } + @Test + public void testDelimitedOutputWithEmptyDelimiter() throws Exception { + + Resource output = new FileSystemResource(File.createTempFile("foo", "txt")); + + FlatFileItemWriter writer = new FlatFileItemWriterBuilder() + .name("foo") + .resource(output) + .lineSeparator("$") + .delimited() + .delimiter("") + .names("first", "second", "third") + .encoding("UTF-16LE") + .headerCallback(writer1 -> writer1.append("HEADER")) + .footerCallback(writer12 -> writer12.append("FOOTER")) + .build(); + + ExecutionContext executionContext = new ExecutionContext(); + + writer.open(executionContext); + + writer.write(Arrays.asList(new Foo(1, 2, "3"), new Foo(4, 5, "6"))); + + writer.close(); + + assertEquals("HEADER$123$456$FOOTER", readLine("UTF-16LE", output)); + } + @Test public void testDelimitedOutputWithDefaultFieldExtractor() throws Exception {