You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/02/18 09:33:03 UTC
[1/4] camel git commit: [CAMEL-10853] Add support for some more
properties
Repository: camel
Updated Branches:
refs/heads/camel-2.18.x d035f771c -> 1911e5015
refs/heads/master f140b2e88 -> da54b7c27
[CAMEL-10853] Add support for some more properties
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/11284d32
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/11284d32
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/11284d32
Branch: refs/heads/master
Commit: 11284d3208b26a356a5017e1e1dbbf38912e8b7a
Parents: f140b2e
Author: Christian Ribeaud <ch...@ribeaud.ch>
Authored: Fri Feb 17 18:55:18 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 18 10:21:45 2017 +0100
----------------------------------------------------------------------
.../camel/model/dataformat/CsvDataFormat.java | 68 +++++++++++++++
.../model/dataformat/CsvDataFormatTest.java | 89 +++++++++++++++++++
.../camel/dataformat/csv/CsvDataFormat.java | 90 ++++++++++++++++++++
.../camel/dataformat/csv/CsvDataFormatTest.java | 83 ++++++++++++++++++
4 files changed, 330 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/11284d32/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
index d1052e3..80ca6ea 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
@@ -17,6 +17,7 @@
package org.apache.camel.model.dataformat;
import java.util.List;
+import java.util.stream.Stream;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -78,6 +79,13 @@ public class CsvDataFormat extends DataFormatDefinition {
private Boolean skipHeaderRecord;
@XmlAttribute
private String quoteMode;
+ @XmlAttribute
+ private Boolean ignoreHeaderCase;
+ @XmlAttribute
+ private Boolean trim;
+ @XmlAttribute
+ private Boolean trailingDelimiter;
+
// Unmarshall options
@XmlAttribute
private Boolean lazyLoad;
@@ -163,6 +171,16 @@ public class CsvDataFormat extends DataFormatDefinition {
if (quoteMode != null) {
setProperty(camelContext, dataFormat, "quoteMode", quoteMode);
}
+ Stream.of("trim", "ignoreHeaderCase", "trailingDelimiter")
+ .forEach(item -> {
+ try {
+ setProperty(camelContext, dataFormat, item,
+ CsvDataFormat.class.getDeclaredField(item).get(this));
+ } catch (Exception e) {
+ // Not expected to happen
+ throw new AssertionError(e);
+ }
+ });
// Unmarshall options
if (lazyLoad != null) {
@@ -439,4 +457,54 @@ public class CsvDataFormat extends DataFormatDefinition {
this.recordConverterRef = recordConverterRef;
}
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trim whether or not to trim leading and trailing blanks.
+ * <code>null</code> value allowed.
+ */
+ public void setTrim(Boolean trim) {
+ this.trim = trim;
+ }
+
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ /**
+ * Sets whether or not to ignore case when accessing header names.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
+ * <code>null</code> value allowed.
+ */
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ }
+
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trailingDelimiter whether or not to add a trailing delimiter.
+ */
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ }
+
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/11284d32/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
new file mode 100644
index 0000000..6831b67
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model.dataformat;
+
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.BitSet;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.DataFormat;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Test cases for corresponding class {@link CsvDataFormat}.
+ */
+public class CsvDataFormatTest {
+
+ @Test
+ public void testConfigureDataFormatDataFormatCamelContext() {
+ CsvDataFormat csvDataFormat = new CsvDataFormat();
+ csvDataFormat.setIgnoreHeaderCase(true);
+ csvDataFormat.setTrim(true);
+ csvDataFormat.setTrailingDelimiter(true);
+ MyDataFormat dataFormat = new MyDataFormat();
+ DefaultCamelContext camelContext = new DefaultCamelContext();
+ csvDataFormat.configureDataFormat(dataFormat, camelContext);
+ assertEquals(3, dataFormat.bitSet.cardinality());
+ csvDataFormat.setIgnoreHeaderCase(false);
+ csvDataFormat.setTrim(false);
+ csvDataFormat.setTrailingDelimiter(false);
+ csvDataFormat.configureDataFormat(dataFormat, camelContext);
+ assertEquals(dataFormat.bitSet.cardinality(), 0);
+ }
+
+ //
+ // Helper classes
+ //
+
+ static final class MyDataFormat implements DataFormat {
+
+ final BitSet bitSet = new BitSet();
+
+ MyDataFormat() {
+ }
+
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ bitSet.set(0, ignoreHeaderCase);
+ }
+
+ public void setTrim(Boolean trim) {
+ bitSet.set(2, trim);
+ }
+
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ bitSet.set(3, trailingDelimiter);
+ }
+
+ @Override
+ public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/11284d32/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 53476d6..41c9529 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
@@ -57,6 +57,9 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
private boolean recordSeparatorDisabled;
private String recordSeparator;
private Boolean skipHeaderRecord;
+ private Boolean trim;
+ private Boolean ignoreHeaderCase;
+ private Boolean trailingDelimiter;
// Unmarshal options
private boolean lazyLoad;
@@ -159,6 +162,18 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
if (skipHeaderRecord != null) {
answer = answer.withSkipHeaderRecord(skipHeaderRecord);
}
+
+ if (trim != null) {
+ answer = answer.withTrim(trim);
+ }
+
+ if (ignoreHeaderCase != null) {
+ answer = answer.withIgnoreHeaderCase(ignoreHeaderCase);
+ }
+
+ if (trailingDelimiter != null) {
+ answer = answer.withTrailingDelimiter(trailingDelimiter);
+ }
return answer;
}
@@ -681,5 +696,80 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
}
//endregion
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trim whether or not to trim leading and trailing blanks.
+ * <code>null</code> value allowed.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setTrim(Boolean trim) {
+ this.trim = trim;
+ return this;
+ }
+ /**
+ * Indicates whether or not to trim leading and trailing blanks.
+ *
+ * @return {@link Boolean#TRUE} if leading and trailing blanks should be
+ * trimmed. {@link Boolean#FALSE} otherwise. Could return
+ * <code>null</code> if value has NOT been set.
+ */
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ /**
+ * Sets whether or not to ignore case when accessing header names.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
+ * <code>null</code> value allowed.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ return this;
+ }
+
+ /**
+ * Indicates whether or not to ignore case when accessing header names.
+ *
+ * @return {@link Boolean#TRUE} if case should be ignored when accessing
+ * header name. {@link Boolean#FALSE} otherwise. Could return
+ * <code>null</code> if value has NOT been set.
+ */
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trailingDelimiter whether or not to add a trailing delimiter.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ return this;
+ }
+
+ /**
+ * Indicates whether or not to add a trailing delimiter.
+ *
+ * @return {@link Boolean#TRUE} if a trailing delimiter should be added.
+ * {@link Boolean#FALSE} otherwise. Could return <code>null</code>
+ * if value has NOT been set.
+ */
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/11284d32/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
index 1d6e7b3..dc94686 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
@@ -435,4 +435,87 @@ public class CsvDataFormatTest {
// Properly used (it doesn't modify the format)
assertEquals(CSVFormat.DEFAULT, dataFormat.getActiveFormat());
}
+
+ @Test
+ public void testTrim() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setTrim(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getTrim());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getTrim());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getTrim());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrim());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setTrim(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getTrim());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrim());
+
+ }
+
+ @Test
+ public void testIgnoreHeaderCase() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setIgnoreHeaderCase(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setIgnoreHeaderCase(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+ }
+
+ @Test
+ public void testTrailingDelimiter() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setTrailingDelimiter(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getTrailingDelimiter());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrailingDelimiter());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setTrailingDelimiter(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrailingDelimiter());
+ }
+
}
[4/4] camel git commit: CAMEL-10853: Aligned code. This closes #1474
Posted by da...@apache.org.
CAMEL-10853: Aligned code. This closes #1474
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1911e501
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1911e501
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1911e501
Branch: refs/heads/camel-2.18.x
Commit: 1911e501563547e5aad0b2d859328a3f8e38d66e
Parents: 05a7d0c
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 18 10:28:21 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 18 10:33:02 2017 +0100
----------------------------------------------------------------------
.../camel/model/dataformat/CsvDataFormat.java | 39 +++------
.../model/dataformat/CsvDataFormatTest.java | 89 --------------------
.../springboot/CsvDataFormatConfiguration.java | 36 ++++++++
.../camel-csv/src/main/docs/csv-dataformat.adoc | 5 +-
4 files changed, 50 insertions(+), 119 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/1911e501/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
index 5e35f62..1a6838a 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
@@ -17,7 +17,6 @@
package org.apache.camel.model.dataformat;
import java.util.List;
-import java.util.stream.Stream;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -171,17 +170,16 @@ public class CsvDataFormat extends DataFormatDefinition {
if (quoteMode != null) {
setProperty(camelContext, dataFormat, "quoteMode", quoteMode);
}
- Stream.of("trim", "ignoreHeaderCase", "trailingDelimiter")
- .forEach(item -> {
- try {
- setProperty(camelContext, dataFormat, item,
- CsvDataFormat.class.getDeclaredField(item).get(this));
- } catch (Exception e) {
- // Not expected to happen
- throw new AssertionError(e);
- }
- });
-
+ if (trim != null) {
+ setProperty(camelContext, dataFormat, "trim", trim);
+ }
+ if (ignoreHeaderCase != null) {
+ setProperty(camelContext, dataFormat, "ignoreHeaderCase", ignoreHeaderCase);
+ }
+ if (trailingDelimiter != null) {
+ setProperty(camelContext, dataFormat, "trailingDelimiter", trailingDelimiter);
+ }
+
// Unmarshall options
if (lazyLoad != null) {
setProperty(camelContext, dataFormat, "lazyLoad", lazyLoad);
@@ -459,12 +457,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to trim leading and trailing blanks.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param trim whether or not to trim leading and trailing blanks.
- * <code>null</code> value allowed.
*/
public void setTrim(Boolean trim) {
this.trim = trim;
@@ -476,12 +468,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to ignore case when accessing header names.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
- * <code>null</code> value allowed.
*/
public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
this.ignoreHeaderCase = ignoreHeaderCase;
@@ -493,11 +479,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to add a trailing delimiter.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param trailingDelimiter whether or not to add a trailing delimiter.
*/
public void setTrailingDelimiter(Boolean trailingDelimiter) {
this.trailingDelimiter = trailingDelimiter;
http://git-wip-us.apache.org/repos/asf/camel/blob/1911e501/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
deleted file mode 100644
index 6831b67..0000000
--- a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model.dataformat;
-
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.BitSet;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.spi.DataFormat;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Test cases for corresponding class {@link CsvDataFormat}.
- */
-public class CsvDataFormatTest {
-
- @Test
- public void testConfigureDataFormatDataFormatCamelContext() {
- CsvDataFormat csvDataFormat = new CsvDataFormat();
- csvDataFormat.setIgnoreHeaderCase(true);
- csvDataFormat.setTrim(true);
- csvDataFormat.setTrailingDelimiter(true);
- MyDataFormat dataFormat = new MyDataFormat();
- DefaultCamelContext camelContext = new DefaultCamelContext();
- csvDataFormat.configureDataFormat(dataFormat, camelContext);
- assertEquals(3, dataFormat.bitSet.cardinality());
- csvDataFormat.setIgnoreHeaderCase(false);
- csvDataFormat.setTrim(false);
- csvDataFormat.setTrailingDelimiter(false);
- csvDataFormat.configureDataFormat(dataFormat, camelContext);
- assertEquals(dataFormat.bitSet.cardinality(), 0);
- }
-
- //
- // Helper classes
- //
-
- static final class MyDataFormat implements DataFormat {
-
- final BitSet bitSet = new BitSet();
-
- MyDataFormat() {
- }
-
- public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
- bitSet.set(0, ignoreHeaderCase);
- }
-
- public void setTrim(Boolean trim) {
- bitSet.set(2, trim);
- }
-
- public void setTrailingDelimiter(Boolean trailingDelimiter) {
- bitSet.set(3, trailingDelimiter);
- }
-
- @Override
- public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
- throw new UnsupportedOperationException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/1911e501/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java b/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
index 705275f..e09a34a 100644
--- a/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
+++ b/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
@@ -109,6 +109,18 @@ public class CsvDataFormatConfiguration {
*/
private String quoteMode;
/**
+ * Sets whether or not to ignore case when accessing header names.
+ */
+ private Boolean ignoreHeaderCase = false;
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ */
+ private Boolean trim = false;
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ */
+ private Boolean trailingDelimiter = false;
+ /**
* Whether the unmarshalling should produce an iterator that reads the lines
* on the fly or if all the lines must be read at one.
*/
@@ -284,6 +296,30 @@ public class CsvDataFormatConfiguration {
this.quoteMode = quoteMode;
}
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ }
+
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ public void setTrim(Boolean trim) {
+ this.trim = trim;
+ }
+
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
+
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ }
+
public Boolean getLazyLoad() {
return lazyLoad;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/1911e501/components/camel-csv/src/main/docs/csv-dataformat.adoc
----------------------------------------------------------------------
diff --git a/components/camel-csv/src/main/docs/csv-dataformat.adoc b/components/camel-csv/src/main/docs/csv-dataformat.adoc
index b10793a..f84ecbc 100644
--- a/components/camel-csv/src/main/docs/csv-dataformat.adoc
+++ b/components/camel-csv/src/main/docs/csv-dataformat.adoc
@@ -13,7 +13,7 @@ Options
^^^^^^^
// dataformat options: START
-The CSV dataformat supports 23 options which are listed below.
+The CSV dataformat supports 26 options which are listed below.
@@ -41,6 +41,9 @@ The CSV dataformat supports 23 options which are listed below.
| recordSeparator | | String | Sets the record separator (aka new line) which by default is \r\n (CRLF)
| skipHeaderRecord | false | Boolean | Whether to skip the header record in the output
| quoteMode | | String | Sets the quote mode
+| ignoreHeaderCase | false | Boolean | Sets whether or not to ignore case when accessing header names.
+| trim | false | Boolean | Sets whether or not to trim leading and trailing blanks.
+| trailingDelimiter | false | Boolean | Sets whether or not to add a trailing delimiter.
| lazyLoad | false | Boolean | Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one.
| useMaps | false | Boolean | Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected).
| recordConverterRef | | String | Refers to a custom CsvRecordConverter to lookup from the registry to use.
[3/4] camel git commit: [CAMEL-10853] Add support for some more
properties
Posted by da...@apache.org.
[CAMEL-10853] Add support for some more properties
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/05a7d0c3
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/05a7d0c3
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/05a7d0c3
Branch: refs/heads/camel-2.18.x
Commit: 05a7d0c395bb2a263d106211bfcb7be918de5162
Parents: d035f77
Author: Christian Ribeaud <ch...@ribeaud.ch>
Authored: Fri Feb 17 18:55:18 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 18 10:28:54 2017 +0100
----------------------------------------------------------------------
.../camel/model/dataformat/CsvDataFormat.java | 68 +++++++++++++++
.../model/dataformat/CsvDataFormatTest.java | 89 +++++++++++++++++++
.../camel/dataformat/csv/CsvDataFormat.java | 90 ++++++++++++++++++++
.../camel/dataformat/csv/CsvDataFormatTest.java | 83 ++++++++++++++++++
4 files changed, 330 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/05a7d0c3/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
index 91fa1e7..5e35f62 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
@@ -17,6 +17,7 @@
package org.apache.camel.model.dataformat;
import java.util.List;
+import java.util.stream.Stream;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -78,6 +79,13 @@ public class CsvDataFormat extends DataFormatDefinition {
private Boolean skipHeaderRecord;
@XmlAttribute
private String quoteMode;
+ @XmlAttribute
+ private Boolean ignoreHeaderCase;
+ @XmlAttribute
+ private Boolean trim;
+ @XmlAttribute
+ private Boolean trailingDelimiter;
+
// Unmarshall options
@XmlAttribute
private Boolean lazyLoad;
@@ -163,6 +171,16 @@ public class CsvDataFormat extends DataFormatDefinition {
if (quoteMode != null) {
setProperty(camelContext, dataFormat, "quoteMode", quoteMode);
}
+ Stream.of("trim", "ignoreHeaderCase", "trailingDelimiter")
+ .forEach(item -> {
+ try {
+ setProperty(camelContext, dataFormat, item,
+ CsvDataFormat.class.getDeclaredField(item).get(this));
+ } catch (Exception e) {
+ // Not expected to happen
+ throw new AssertionError(e);
+ }
+ });
// Unmarshall options
if (lazyLoad != null) {
@@ -439,4 +457,54 @@ public class CsvDataFormat extends DataFormatDefinition {
this.recordConverterRef = recordConverterRef;
}
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trim whether or not to trim leading and trailing blanks.
+ * <code>null</code> value allowed.
+ */
+ public void setTrim(Boolean trim) {
+ this.trim = trim;
+ }
+
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ /**
+ * Sets whether or not to ignore case when accessing header names.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
+ * <code>null</code> value allowed.
+ */
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ }
+
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trailingDelimiter whether or not to add a trailing delimiter.
+ */
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ }
+
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/05a7d0c3/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
new file mode 100644
index 0000000..6831b67
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model.dataformat;
+
+
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.BitSet;
+
+import javax.xml.bind.annotation.XmlAttribute;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.spi.DataFormat;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Test cases for corresponding class {@link CsvDataFormat}.
+ */
+public class CsvDataFormatTest {
+
+ @Test
+ public void testConfigureDataFormatDataFormatCamelContext() {
+ CsvDataFormat csvDataFormat = new CsvDataFormat();
+ csvDataFormat.setIgnoreHeaderCase(true);
+ csvDataFormat.setTrim(true);
+ csvDataFormat.setTrailingDelimiter(true);
+ MyDataFormat dataFormat = new MyDataFormat();
+ DefaultCamelContext camelContext = new DefaultCamelContext();
+ csvDataFormat.configureDataFormat(dataFormat, camelContext);
+ assertEquals(3, dataFormat.bitSet.cardinality());
+ csvDataFormat.setIgnoreHeaderCase(false);
+ csvDataFormat.setTrim(false);
+ csvDataFormat.setTrailingDelimiter(false);
+ csvDataFormat.configureDataFormat(dataFormat, camelContext);
+ assertEquals(dataFormat.bitSet.cardinality(), 0);
+ }
+
+ //
+ // Helper classes
+ //
+
+ static final class MyDataFormat implements DataFormat {
+
+ final BitSet bitSet = new BitSet();
+
+ MyDataFormat() {
+ }
+
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ bitSet.set(0, ignoreHeaderCase);
+ }
+
+ public void setTrim(Boolean trim) {
+ bitSet.set(2, trim);
+ }
+
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ bitSet.set(3, trailingDelimiter);
+ }
+
+ @Override
+ public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/05a7d0c3/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 53476d6..41c9529 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
@@ -57,6 +57,9 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
private boolean recordSeparatorDisabled;
private String recordSeparator;
private Boolean skipHeaderRecord;
+ private Boolean trim;
+ private Boolean ignoreHeaderCase;
+ private Boolean trailingDelimiter;
// Unmarshal options
private boolean lazyLoad;
@@ -159,6 +162,18 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
if (skipHeaderRecord != null) {
answer = answer.withSkipHeaderRecord(skipHeaderRecord);
}
+
+ if (trim != null) {
+ answer = answer.withTrim(trim);
+ }
+
+ if (ignoreHeaderCase != null) {
+ answer = answer.withIgnoreHeaderCase(ignoreHeaderCase);
+ }
+
+ if (trailingDelimiter != null) {
+ answer = answer.withTrailingDelimiter(trailingDelimiter);
+ }
return answer;
}
@@ -681,5 +696,80 @@ public class CsvDataFormat extends ServiceSupport implements DataFormat, DataFor
}
//endregion
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trim whether or not to trim leading and trailing blanks.
+ * <code>null</code> value allowed.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setTrim(Boolean trim) {
+ this.trim = trim;
+ return this;
+ }
+ /**
+ * Indicates whether or not to trim leading and trailing blanks.
+ *
+ * @return {@link Boolean#TRUE} if leading and trailing blanks should be
+ * trimmed. {@link Boolean#FALSE} otherwise. Could return
+ * <code>null</code> if value has NOT been set.
+ */
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ /**
+ * Sets whether or not to ignore case when accessing header names.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
+ * <code>null</code> value allowed.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ return this;
+ }
+
+ /**
+ * Indicates whether or not to ignore case when accessing header names.
+ *
+ * @return {@link Boolean#TRUE} if case should be ignored when accessing
+ * header name. {@link Boolean#FALSE} otherwise. Could return
+ * <code>null</code> if value has NOT been set.
+ */
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ * <p>
+ * If {@code null} then the default value of the format used.
+ * </p>
+ *
+ * @param trailingDelimiter whether or not to add a trailing delimiter.
+ * @return Current {@code CsvDataFormat}, fluent API.
+ */
+ public CsvDataFormat setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ return this;
+ }
+
+ /**
+ * Indicates whether or not to add a trailing delimiter.
+ *
+ * @return {@link Boolean#TRUE} if a trailing delimiter should be added.
+ * {@link Boolean#FALSE} otherwise. Could return <code>null</code>
+ * if value has NOT been set.
+ */
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/05a7d0c3/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
index 1d6e7b3..dc94686 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
@@ -435,4 +435,87 @@ public class CsvDataFormatTest {
// Properly used (it doesn't modify the format)
assertEquals(CSVFormat.DEFAULT, dataFormat.getActiveFormat());
}
+
+ @Test
+ public void testTrim() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setTrim(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getTrim());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getTrim());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getTrim());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrim());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setTrim(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getTrim());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrim());
+
+ }
+
+ @Test
+ public void testIgnoreHeaderCase() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setIgnoreHeaderCase(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setIgnoreHeaderCase(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getIgnoreHeaderCase());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getIgnoreHeaderCase());
+ }
+
+ @Test
+ public void testTrailingDelimiter() {
+ // Set to TRUE
+ CsvDataFormat dataFormat = new CsvDataFormat().setTrailingDelimiter(true);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.TRUE, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertTrue(dataFormat.getActiveFormat().getTrailingDelimiter());
+
+ // NOT set
+ dataFormat = new CsvDataFormat();
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(null, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrailingDelimiter());
+
+ // Set to false
+ dataFormat = new CsvDataFormat().setTrailingDelimiter(false);
+ // Properly saved
+ assertSame(CSVFormat.DEFAULT, dataFormat.getFormat());
+ assertEquals(Boolean.FALSE, dataFormat.getTrailingDelimiter());
+ // Properly used
+ assertFalse(dataFormat.getActiveFormat().getTrailingDelimiter());
+ }
+
}
[2/4] camel git commit: CAMEL-10853: Aligned code. This closes #1474
Posted by da...@apache.org.
CAMEL-10853: Aligned code. This closes #1474
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/da54b7c2
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/da54b7c2
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/da54b7c2
Branch: refs/heads/master
Commit: da54b7c275bd46fd97d59c018734045663ecf3e4
Parents: 11284d3
Author: Claus Ibsen <da...@apache.org>
Authored: Sat Feb 18 10:28:21 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat Feb 18 10:28:21 2017 +0100
----------------------------------------------------------------------
.../camel/model/dataformat/CsvDataFormat.java | 39 +++------
.../model/dataformat/CsvDataFormatTest.java | 89 --------------------
.../camel-csv/src/main/docs/csv-dataformat.adoc | 7 +-
.../springboot/CsvDataFormatConfiguration.java | 36 ++++++++
4 files changed, 51 insertions(+), 120 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/da54b7c2/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
index 80ca6ea..1c0213b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
@@ -17,7 +17,6 @@
package org.apache.camel.model.dataformat;
import java.util.List;
-import java.util.stream.Stream;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -171,17 +170,16 @@ public class CsvDataFormat extends DataFormatDefinition {
if (quoteMode != null) {
setProperty(camelContext, dataFormat, "quoteMode", quoteMode);
}
- Stream.of("trim", "ignoreHeaderCase", "trailingDelimiter")
- .forEach(item -> {
- try {
- setProperty(camelContext, dataFormat, item,
- CsvDataFormat.class.getDeclaredField(item).get(this));
- } catch (Exception e) {
- // Not expected to happen
- throw new AssertionError(e);
- }
- });
-
+ if (trim != null) {
+ setProperty(camelContext, dataFormat, "trim", trim);
+ }
+ if (ignoreHeaderCase != null) {
+ setProperty(camelContext, dataFormat, "ignoreHeaderCase", ignoreHeaderCase);
+ }
+ if (trailingDelimiter != null) {
+ setProperty(camelContext, dataFormat, "trailingDelimiter", trailingDelimiter);
+ }
+
// Unmarshall options
if (lazyLoad != null) {
setProperty(camelContext, dataFormat, "lazyLoad", lazyLoad);
@@ -459,12 +457,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to trim leading and trailing blanks.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param trim whether or not to trim leading and trailing blanks.
- * <code>null</code> value allowed.
*/
public void setTrim(Boolean trim) {
this.trim = trim;
@@ -476,12 +468,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to ignore case when accessing header names.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param ignoreHeaderCase whether or not to ignore case when accessing header names.
- * <code>null</code> value allowed.
*/
public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
this.ignoreHeaderCase = ignoreHeaderCase;
@@ -493,11 +479,6 @@ public class CsvDataFormat extends DataFormatDefinition {
/**
* Sets whether or not to add a trailing delimiter.
- * <p>
- * If {@code null} then the default value of the format used.
- * </p>
- *
- * @param trailingDelimiter whether or not to add a trailing delimiter.
*/
public void setTrailingDelimiter(Boolean trailingDelimiter) {
this.trailingDelimiter = trailingDelimiter;
http://git-wip-us.apache.org/repos/asf/camel/blob/da54b7c2/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java b/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
deleted file mode 100644
index 6831b67..0000000
--- a/camel-core/src/test/java/org/apache/camel/model/dataformat/CsvDataFormatTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model.dataformat;
-
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.BitSet;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.spi.DataFormat;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Test cases for corresponding class {@link CsvDataFormat}.
- */
-public class CsvDataFormatTest {
-
- @Test
- public void testConfigureDataFormatDataFormatCamelContext() {
- CsvDataFormat csvDataFormat = new CsvDataFormat();
- csvDataFormat.setIgnoreHeaderCase(true);
- csvDataFormat.setTrim(true);
- csvDataFormat.setTrailingDelimiter(true);
- MyDataFormat dataFormat = new MyDataFormat();
- DefaultCamelContext camelContext = new DefaultCamelContext();
- csvDataFormat.configureDataFormat(dataFormat, camelContext);
- assertEquals(3, dataFormat.bitSet.cardinality());
- csvDataFormat.setIgnoreHeaderCase(false);
- csvDataFormat.setTrim(false);
- csvDataFormat.setTrailingDelimiter(false);
- csvDataFormat.configureDataFormat(dataFormat, camelContext);
- assertEquals(dataFormat.bitSet.cardinality(), 0);
- }
-
- //
- // Helper classes
- //
-
- static final class MyDataFormat implements DataFormat {
-
- final BitSet bitSet = new BitSet();
-
- MyDataFormat() {
- }
-
- public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
- bitSet.set(0, ignoreHeaderCase);
- }
-
- public void setTrim(Boolean trim) {
- bitSet.set(2, trim);
- }
-
- public void setTrailingDelimiter(Boolean trailingDelimiter) {
- bitSet.set(3, trailingDelimiter);
- }
-
- @Override
- public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
- throw new UnsupportedOperationException();
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/da54b7c2/components/camel-csv/src/main/docs/csv-dataformat.adoc
----------------------------------------------------------------------
diff --git a/components/camel-csv/src/main/docs/csv-dataformat.adoc b/components/camel-csv/src/main/docs/csv-dataformat.adoc
index d17e1d2..454880f 100644
--- a/components/camel-csv/src/main/docs/csv-dataformat.adoc
+++ b/components/camel-csv/src/main/docs/csv-dataformat.adoc
@@ -11,7 +11,7 @@ exported/imported by Excel.
### Options
// dataformat options: START
-The CSV dataformat supports 24 options which are listed below.
+The CSV dataformat supports 27 options which are listed below.
@@ -39,6 +39,9 @@ The CSV dataformat supports 24 options which are listed below.
| recordSeparator | | String | Sets the record separator (aka new line) which by default is \r\n (CRLF)
| skipHeaderRecord | false | Boolean | Whether to skip the header record in the output
| quoteMode | | String | Sets the quote mode
+| ignoreHeaderCase | false | Boolean | Sets whether or not to ignore case when accessing header names.
+| trim | false | Boolean | Sets whether or not to trim leading and trailing blanks.
+| trailingDelimiter | false | Boolean | Sets whether or not to add a trailing delimiter.
| lazyLoad | false | Boolean | Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one.
| useMaps | false | Boolean | Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected).
| recordConverterRef | | String | Refers to a custom CsvRecordConverter to lookup from the registry to use.
@@ -362,4 +365,4 @@ link:download.html[the download page for the latest versions]).
<artifactId>camel-csv</artifactId>
<version>x.x.x</version>
</dependency>
--------------------------------------
\ No newline at end of file
+-------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/da54b7c2/platforms/spring-boot/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java b/platforms/spring-boot/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
index e07831e..bf5f8c4 100644
--- a/platforms/spring-boot/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-csv-starter/src/main/java/org/apache/camel/dataformat/csv/springboot/CsvDataFormatConfiguration.java
@@ -109,6 +109,18 @@ public class CsvDataFormatConfiguration {
*/
private String quoteMode;
/**
+ * Sets whether or not to ignore case when accessing header names.
+ */
+ private Boolean ignoreHeaderCase = false;
+ /**
+ * Sets whether or not to trim leading and trailing blanks.
+ */
+ private Boolean trim = false;
+ /**
+ * Sets whether or not to add a trailing delimiter.
+ */
+ private Boolean trailingDelimiter = false;
+ /**
* Whether the unmarshalling should produce an iterator that reads the lines
* on the fly or if all the lines must be read at one.
*/
@@ -291,6 +303,30 @@ public class CsvDataFormatConfiguration {
this.quoteMode = quoteMode;
}
+ public Boolean getIgnoreHeaderCase() {
+ return ignoreHeaderCase;
+ }
+
+ public void setIgnoreHeaderCase(Boolean ignoreHeaderCase) {
+ this.ignoreHeaderCase = ignoreHeaderCase;
+ }
+
+ public Boolean getTrim() {
+ return trim;
+ }
+
+ public void setTrim(Boolean trim) {
+ this.trim = trim;
+ }
+
+ public Boolean getTrailingDelimiter() {
+ return trailingDelimiter;
+ }
+
+ public void setTrailingDelimiter(Boolean trailingDelimiter) {
+ this.trailingDelimiter = trailingDelimiter;
+ }
+
public Boolean getLazyLoad() {
return lazyLoad;
}