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