Skip to content

Commit 381d7bd

Browse files
committed
FlatFileItemWriter now uses charset to determine default encoding
resolves #1154 It now matches the encoding scheme of FlatFileItemReader
1 parent b486e24 commit 381d7bd

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.batch.item.file;
1818

19+
import java.nio.charset.Charset;
1920
import java.util.List;
2021

2122
import org.springframework.batch.item.file.transform.LineAggregator;
@@ -39,11 +40,15 @@
3940
* @author Dave Syer
4041
* @author Michael Minella
4142
* @author Mahmoud Ben Hassine
43+
* @author Glenn Renfro
4244
*/
4345
public class FlatFileItemWriter<T> extends AbstractFileItemWriter<T> {
4446

4547
protected LineAggregator<T> lineAggregator;
4648

49+
// default encoding for writing to flat files - set to charset of this Java virtual machine.
50+
public static final String DEFAULT_CHARSET = Charset.defaultCharset().name();
51+
4752
public FlatFileItemWriter() {
4853
this.setExecutionContextName(ClassUtils.getShortName(FlatFileItemWriter.class));
4954
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.File;
2020
import java.io.IOException;
2121
import java.io.InputStreamReader;
22+
import java.nio.charset.Charset;
2223
import java.util.Arrays;
2324

2425
import org.junit.Test;
@@ -275,13 +276,13 @@ public void testFlags() throws Exception {
275276
.transactional(false)
276277
.lineAggregator(new PassThroughLineAggregator<>())
277278
.build();
278-
279279
assertFalse((Boolean) ReflectionTestUtils.getField(writer, "saveState"));
280280
assertTrue((Boolean) ReflectionTestUtils.getField(writer, "append"));
281281
assertFalse((Boolean) ReflectionTestUtils.getField(writer, "transactional"));
282282
assertTrue((Boolean) ReflectionTestUtils.getField(writer, "shouldDeleteIfEmpty"));
283283
assertFalse((Boolean) ReflectionTestUtils.getField(writer, "shouldDeleteIfExists"));
284284
assertTrue((Boolean) ReflectionTestUtils.getField(writer, "forceSync"));
285+
assertEquals( Charset.defaultCharset().name(), (String) ReflectionTestUtils.getField(writer, "encoding"));
285286
}
286287

287288
private String readLine(String encoding, Resource outputFile ) throws IOException {

0 commit comments

Comments
 (0)