BATCHEE-85 configurable fileEncoding for JSefaReaders
diff --git a/extensions/jsefa/src/main/java/org/apache/batchee/jsefa/JSefaReader.java b/extensions/jsefa/src/main/java/org/apache/batchee/jsefa/JSefaReader.java
index 05cb3a6..4400897 100644
--- a/extensions/jsefa/src/main/java/org/apache/batchee/jsefa/JSefaReader.java
+++ b/extensions/jsefa/src/main/java/org/apache/batchee/jsefa/JSefaReader.java
@@ -22,8 +22,11 @@
 
 import javax.batch.api.BatchProperty;
 import javax.inject.Inject;
-import java.io.FileReader;
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.io.Serializable;
+import java.nio.charset.Charset;
 
 public abstract class JSefaReader extends CountedReader {
     @Inject
@@ -61,12 +64,25 @@
     @Documentation("file to read")
     protected String file;
 
+    @Inject
+    @BatchProperty
+    @Documentation("the encoding to use while reading the file. E.g. \"UTF-8\". If not specified the system default encoding is being used.")
+    protected String fileEncoding;
+
     protected Deserializer deserializer;
 
     @Override
     public void open(final Serializable checkpoint) throws Exception {
         deserializer = initDeserializer();
-        deserializer.open(new FileReader(file));
+
+        Charset charset;
+        if (fileEncoding != null && !fileEncoding.isEmpty()) {
+            charset = Charset.forName(fileEncoding);
+        } else {
+            charset = Charset.defaultCharset();
+        }
+
+        deserializer.open(new BufferedReader(new InputStreamReader(new FileInputStream(file), charset)));
         super.open(checkpoint);
     }