Repository: camel Updated Branches: refs/heads/master 26466b5b3 -> a58c4ad00
fix CAMEL-7450: CsvDataFormat unable to setup header when useMaps=true Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3e35ef73 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3e35ef73 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3e35ef73 Branch: refs/heads/master Commit: 3e35ef73d9700b56deffedda406cf9b715e3eec8 Parents: 26466b5 Author: carlo <ccancelli...@hotmail.com> Authored: Tue May 20 18:30:32 2014 +0200 Committer: Willem Jiang <willem.ji...@gmail.com> Committed: Mon May 26 16:07:07 2014 +0800 ---------------------------------------------------------------------- .../camel/dataformat/csv/CsvDataFormat.java | 21 ++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/3e35ef73/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 309ae0e..c2e1541 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 @@ -131,16 +131,25 @@ public class CsvDataFormat implements DataFormat { try { reader = IOHelper.buffered(new InputStreamReader(inputStream, IOHelper.getCharsetName(exchange))); CSVParser parser = new CSVParser(reader, strategy); - + if (skipFirstLine) { + // read one line ahead and skip it + parser.getLine(); + } CsvLineConverter<?> lineConverter; if (useMaps) { - lineConverter = CsvLineConverters.getMapLineConverter(parser.getLine()); + final CSVField[] fields=this.config.getFields(); + final String[] fieldS; + if (fields!=null){ + fieldS=new String[fields.length]; + for (int i=0; i<fields.length; i++){ + fieldS[i]=fields[i].getName(); + } + } else { + fieldS=parser.getLine(); + } + lineConverter = CsvLineConverters.getMapLineConverter(fieldS); } else { lineConverter = CsvLineConverters.getListConverter(); - if (skipFirstLine) { - // read one line ahead and skip it - parser.getLine(); - } } @SuppressWarnings({"unchecked", "rawtypes"}) CsvIterator<?> csvIterator = new CsvIterator(parser, reader, lineConverter);