Repository: camel Updated Branches: refs/heads/camel-2.13.x 1dc303183 -> 093192f8f
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/e3a2c59a Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e3a2c59a Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e3a2c59a Branch: refs/heads/camel-2.13.x Commit: e3a2c59af53c0bd0653be71aadedb093f42c791f Parents: 1dc3031 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 20:26:22 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/e3a2c59a/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);