Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B51CC18E72 for ; Sat, 5 Dec 2015 09:02:46 +0000 (UTC) Received: (qmail 30394 invoked by uid 500); 5 Dec 2015 09:02:46 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 30263 invoked by uid 500); 5 Dec 2015 09:02:46 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 30149 invoked by uid 99); 5 Dec 2015 09:02:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 05 Dec 2015 09:02:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 35125E0A1B; Sat, 5 Dec 2015 09:02:46 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: davsclaus@apache.org To: commits@camel.apache.org Date: Sat, 05 Dec 2015 09:02:49 -0000 Message-Id: In-Reply-To: <2daa1dfc5e604785ac6eceaa89b4cc30@git.apache.org> References: <2daa1dfc5e604785ac6eceaa89b4cc30@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [4/6] camel git commit: Changed the DynamicColumnMarshaller to always use the record map to define the columns. This allows the marshaller to be reused for asymmetric records. Changed the DynamicColumnMarshaller to always use the record map to define the columns. This allows the marshaller to be reused for asymmetric records. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/aab14d79 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/aab14d79 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/aab14d79 Branch: refs/heads/camel-2.16.x Commit: aab14d7966a69abdd2dd396c4f82b79e0e0c6246 Parents: 958b66b Author: Fabricio Toresan Authored: Mon Nov 30 16:42:37 2015 -0200 Committer: Claus Ibsen Committed: Sat Dec 5 10:02:00 2015 +0100 ---------------------------------------------------------------------- .../org/apache/camel/dataformat/csv/CsvMarshaller.java | 8 ++------ .../org/apache/camel/dataformat/csv/CsvMarshalTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/aab14d79/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvMarshaller.java ---------------------------------------------------------------------- diff --git a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvMarshaller.java b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvMarshaller.java index f23f1ec..2764d5e 100644 --- a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvMarshaller.java +++ b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvMarshaller.java @@ -22,7 +22,6 @@ import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -130,17 +129,14 @@ abstract class CsvMarshaller { * This marshaller adapts the columns but always keep them in the same order */ private static final class DynamicColumnsMarshaller extends CsvMarshaller { - private final LinkedHashSet columns = new LinkedHashSet(); - private DynamicColumnsMarshaller(CSVFormat format) { super(format); } @Override protected Iterable getMapRecordValues(Map map) { - columns.addAll(map.keySet()); - List result = new ArrayList(columns.size()); - for (Object key : columns) { + List result = new ArrayList(map.size()); + for (Object key : map.keySet()) { result.add(map.get(key)); } return result; http://git-wip-us.apache.org/repos/asf/camel/blob/aab14d79/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java ---------------------------------------------------------------------- diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java index f232ad5..8f44d9b 100644 --- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java +++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java @@ -98,6 +98,18 @@ public class CsvMarshalTest extends CamelTestSupport { assertArrayEquals(new String[]{"A,C", "1,3", "one,three"}, readOutputLines()); } + @Test + public void shouldMarshalDifferentDynamicColumns() throws Exception { + output.expectedMessageCount(2); + + template.sendBody("direct:default", TestUtils.asMap("A", "1", "B", "2")); + template.sendBody("direct:default", TestUtils.asMap("X", "1", "Y", "2", "Z", "3")); + + output.assertIsSatisfied(); + assertArrayEquals(new String[]{"1,2"}, readOutputLines()); + assertArrayEquals(new String[]{"1,2,3"}, output.getExchanges().get(1).getIn().getBody(String.class).split("\r\n|\r|\n")); + } + @Override protected RouteBuilder createRouteBuilder() throws Exception {