You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/08/01 11:33:24 UTC

camel git commit: CAMEL-11609:thread-safety if headers get modified on the fly

Repository: camel
Updated Branches:
  refs/heads/master 3743c2256 -> 94f621d15


CAMEL-11609:thread-safety if headers get modified on the fly


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/94f621d1
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/94f621d1
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/94f621d1

Branch: refs/heads/master
Commit: 94f621d153ba2db4925950e9fd231f0578fa13a6
Parents: 3743c22
Author: Daniel Baldes <da...@baldes.name>
Authored: Tue Aug 1 11:24:46 2017 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Tue Aug 1 13:25:00 2017 +0200

----------------------------------------------------------------------
 .../camel/dataformat/univocity/Marshaller.java  | 36 ++++++++++++++------
 1 file changed, 25 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/94f621d1/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
----------------------------------------------------------------------
diff --git a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
index 5c113cb..1161559 100644
--- a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
+++ b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
@@ -16,17 +16,18 @@
  */
 package org.apache.camel.dataformat.univocity;
 
+import static org.apache.camel.util.ExchangeHelper.convertToMandatoryType;
+import static org.apache.camel.util.ExchangeHelper.convertToType;
+
 import java.util.Arrays;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 
-import com.univocity.parsers.common.AbstractWriter;
 import org.apache.camel.Exchange;
 import org.apache.camel.NoTypeConversionAvailableException;
 
-import static org.apache.camel.util.ExchangeHelper.convertToMandatoryType;
-import static org.apache.camel.util.ExchangeHelper.convertToType;
+import com.univocity.parsers.common.AbstractWriter;
 
 /**
  * This class marshalls the exchange body using an uniVocity writer. It can automatically generates headers and keep
@@ -85,16 +86,29 @@ final class Marshaller<W extends AbstractWriter<?>> {
     private void writeRow(Exchange exchange, Object row, W writer) throws NoTypeConversionAvailableException {
         Map<?, ?> map = convertToMandatoryType(exchange, Map.class, row);
         if (adaptHeaders) {
-            for (Object key : map.keySet()) {
-                headers.add(convertToMandatoryType(exchange, String.class, key));
+            synchronized (headers) {
+                for (Object key : map.keySet()) {
+                    headers.add(convertToMandatoryType(exchange, String.class, key));
+                }
+                writeRow(map, writer);
             }
+        } else {
+            writeRow(map, writer);
         }
+    }
 
-        Object[] values = new Object[headers.size()];
-        int index = 0;
-        for (String header : headers) {
-            values[index++] = map.get(header);
-        }
-        writer.writeRow(values);
+    /**
+     * Writes the given map as row.
+     * 
+     * @param map row values by header
+     * @param writer uniVocity writer to use
+     */
+    private void writeRow(Map<?, ?> map, W writer) {
+      Object[] values = new Object[headers.size()];
+      int index = 0;
+      for (String header : headers) {
+          values[index++] = map.get(header);
+      }
+      writer.writeRow(values);
     }
 }


Re: camel git commit: CAMEL-11609:thread-safety if headers get modified on the fly

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I think there may be a checkstyle issues in this commit.

On Tue, Aug 1, 2017 at 1:33 PM,  <ac...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/master 3743c2256 -> 94f621d15
>
>
> CAMEL-11609:thread-safety if headers get modified on the fly
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/94f621d1
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/94f621d1
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/94f621d1
>
> Branch: refs/heads/master
> Commit: 94f621d153ba2db4925950e9fd231f0578fa13a6
> Parents: 3743c22
> Author: Daniel Baldes <da...@baldes.name>
> Authored: Tue Aug 1 11:24:46 2017 +0200
> Committer: Andrea Cosentino <an...@gmail.com>
> Committed: Tue Aug 1 13:25:00 2017 +0200
>
> ----------------------------------------------------------------------
>  .../camel/dataformat/univocity/Marshaller.java  | 36 ++++++++++++++------
>  1 file changed, 25 insertions(+), 11 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/94f621d1/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> index 5c113cb..1161559 100644
> --- a/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> +++ b/components/camel-univocity-parsers/src/main/java/org/apache/camel/dataformat/univocity/Marshaller.java
> @@ -16,17 +16,18 @@
>   */
>  package org.apache.camel.dataformat.univocity;
>
> +import static org.apache.camel.util.ExchangeHelper.convertToMandatoryType;
> +import static org.apache.camel.util.ExchangeHelper.convertToType;
> +
>  import java.util.Arrays;
>  import java.util.LinkedHashSet;
>  import java.util.List;
>  import java.util.Map;
>
> -import com.univocity.parsers.common.AbstractWriter;
>  import org.apache.camel.Exchange;
>  import org.apache.camel.NoTypeConversionAvailableException;
>
> -import static org.apache.camel.util.ExchangeHelper.convertToMandatoryType;
> -import static org.apache.camel.util.ExchangeHelper.convertToType;
> +import com.univocity.parsers.common.AbstractWriter;
>
>  /**
>   * This class marshalls the exchange body using an uniVocity writer. It can automatically generates headers and keep
> @@ -85,16 +86,29 @@ final class Marshaller<W extends AbstractWriter<?>> {
>      private void writeRow(Exchange exchange, Object row, W writer) throws NoTypeConversionAvailableException {
>          Map<?, ?> map = convertToMandatoryType(exchange, Map.class, row);
>          if (adaptHeaders) {
> -            for (Object key : map.keySet()) {
> -                headers.add(convertToMandatoryType(exchange, String.class, key));
> +            synchronized (headers) {
> +                for (Object key : map.keySet()) {
> +                    headers.add(convertToMandatoryType(exchange, String.class, key));
> +                }
> +                writeRow(map, writer);
>              }
> +        } else {
> +            writeRow(map, writer);
>          }
> +    }
>
> -        Object[] values = new Object[headers.size()];
> -        int index = 0;
> -        for (String header : headers) {
> -            values[index++] = map.get(header);
> -        }
> -        writer.writeRow(values);
> +    /**
> +     * Writes the given map as row.
> +     *
> +     * @param map row values by header
> +     * @param writer uniVocity writer to use
> +     */
> +    private void writeRow(Map<?, ?> map, W writer) {
> +      Object[] values = new Object[headers.size()];
> +      int index = 0;
> +      for (String header : headers) {
> +          values[index++] = map.get(header);
> +      }
> +      writer.writeRow(values);
>      }
>  }
>



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2