Updated Branches: refs/heads/master afca2399d -> 6b0031df2
CAMEL-7099: Better make use of buffered I/O while unmarshalling. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6b0031df Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6b0031df Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6b0031df Branch: refs/heads/master Commit: 6b0031df28ce6136c80bd5a3eaeab1d6c3c1c5a8 Parents: afca239 Author: Babak Vahdat <bvah...@apache.org> Authored: Fri Dec 27 09:51:17 2013 +0100 Committer: Babak Vahdat <bvah...@apache.org> Committed: Fri Dec 27 09:51:17 2013 +0100 ---------------------------------------------------------------------- .../apache/camel/dataformat/csv/CsvDataFormat.java | 15 ++++++++------- .../org/apache/camel/dataformat/csv/CsvIterator.java | 10 +++++----- 2 files changed, 13 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6b0031df/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java ---------------------------------------------------------------------- diff --git a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java index 0172116..649bc81 100644 --- a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java +++ b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java @@ -20,6 +20,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.List; @@ -98,25 +99,25 @@ public class CsvDataFormat implements DataFormat { } strategy.setDelimiter(config.getDelimiter()); - InputStreamReader in = null; + Reader reader = null; boolean error = false; try { - in = new InputStreamReader(inputStream, IOHelper.getCharsetName(exchange)); - CSVParser parser = new CSVParser(in, strategy); + reader = IOHelper.buffered(new InputStreamReader(inputStream, IOHelper.getCharsetName(exchange))); + CSVParser parser = new CSVParser(reader, strategy); if (skipFirstLine) { - // read one line ahead + // read one line ahead and skip it parser.getLine(); } - CsvIterator csvIterator = new CsvIterator(parser, in); + CsvIterator csvIterator = new CsvIterator(parser, reader); return lazyLoad ? csvIterator : loadAllAsList(csvIterator); } catch (Exception e) { error = true; throw e; } finally { if (error) { - IOHelper.close(in); + IOHelper.close(reader); } } } @@ -129,7 +130,7 @@ public class CsvDataFormat implements DataFormat { } return list; } finally { - // close the iterator (which would close the stream) as we've loaded all the data upfront + // close the iterator (which would also close the reader) as we've loaded all the data upfront IOHelper.close(iter); } } http://git-wip-us.apache.org/repos/asf/camel/blob/6b0031df/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvIterator.java ---------------------------------------------------------------------- diff --git a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvIterator.java b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvIterator.java index 6b732da..fece082 100644 --- a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvIterator.java +++ b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvIterator.java @@ -19,7 +19,7 @@ package org.apache.camel.dataformat.csv; import java.io.Closeable; import java.io.IOException; -import java.io.InputStreamReader; +import java.io.Reader; import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -33,12 +33,12 @@ import org.apache.commons.csv.CSVParser; public class CsvIterator implements Iterator<List<String>>, Closeable { private final CSVParser parser; - private final InputStreamReader in; + private final Reader reader; private String[] line; - public CsvIterator(CSVParser parser, InputStreamReader in) throws IOException { + public CsvIterator(CSVParser parser, Reader reader) throws IOException { this.parser = parser; - this.in = in; + this.reader = reader; line = parser.getLine(); } @@ -73,6 +73,6 @@ public class CsvIterator implements Iterator<List<String>>, Closeable { @Override public void close() { - IOHelper.close(in); + IOHelper.close(reader); } }