You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2022/11/07 13:03:42 UTC

[camel] 01/02: CAMEL-17505: camel-core - Propose primitive types in builder methods

This is an automated email from the ASF dual-hosted git repository.

nfilotto pushed a commit to branch CAMEL-17505/dataformat-dsl-with-primitive-types
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 6c2770c0d7d768083bf4bc35c496603147a0af7c
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Mon Nov 7 12:12:21 2022 +0100

    CAMEL-17505: camel-core - Propose primitive types in builder methods
---
 .../camel/model/dataformat/ASN1DataFormat.java     |   9 ++
 .../camel/model/dataformat/AvroDataFormat.java     |  57 +++++++++
 .../camel/model/dataformat/BarcodeDataFormat.java  |  16 +++
 .../camel/model/dataformat/Base64DataFormat.java   |  19 +++
 .../camel/model/dataformat/BindyDataFormat.java    |  18 +++
 .../camel/model/dataformat/CBORDataFormat.java     |  46 ++++++++
 .../camel/model/dataformat/CryptoDataFormat.java   |  26 +++++
 .../camel/model/dataformat/CsvDataFormat.java      | 128 +++++++++++++++++++++
 .../camel/model/dataformat/FhirDataformat.java     |  95 +++++++++++++++
 .../camel/model/dataformat/FlatpackDataFormat.java |  34 ++++++
 .../camel/model/dataformat/GrokDataFormat.java     |  26 +++++
 .../camel/model/dataformat/HL7DataFormat.java      |  10 ++
 .../camel/model/dataformat/IcalDataFormat.java     |   8 ++
 .../model/dataformat/JacksonXMLDataFormat.java     |  52 +++++++++
 .../camel/model/dataformat/JaxbDataFormat.java     |  80 +++++++++++++
 .../camel/model/dataformat/JsonDataFormat.java     |  77 +++++++++++++
 .../camel/model/dataformat/LZFDataFormat.java      |   8 ++
 .../model/dataformat/MimeMultipartDataFormat.java  |  32 ++++++
 .../camel/model/dataformat/PGPDataFormat.java      |  46 ++++++++
 .../camel/model/dataformat/ProtobufDataFormat.java |  57 +++++++++
 .../camel/model/dataformat/TarFileDataFormat.java  |  39 +++++++
 .../camel/model/dataformat/ThriftDataFormat.java   |   5 +
 .../model/dataformat/TidyMarkupDataFormat.java     |   8 ++
 .../dataformat/UniVocityAbstractDataFormat.java    |  81 +++++++++++++
 .../model/dataformat/UniVocityCsvDataFormat.java   |   8 ++
 .../model/dataformat/UniVocityFixedDataFormat.java |  20 ++++
 .../model/dataformat/XMLSecurityDataFormat.java    |  18 +++
 .../camel/model/dataformat/XStreamDataFormat.java  |   5 +
 .../camel/model/dataformat/YAMLDataFormat.java     |  40 +++++++
 .../model/dataformat/ZipDeflaterDataFormat.java    |   9 ++
 .../camel/model/dataformat/ZipFileDataFormat.java  |  39 +++++++
 31 files changed, 1116 insertions(+)

diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
index cc4db1f2839..53ea6572811 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ASN1DataFormat.java
@@ -124,6 +124,15 @@ public class ASN1DataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the asn1 file has more than one entry, the setting this option to true, allows working with the splitter
+         * EIP, to split the data using an iterator in a streaming mode.
+         */
+        public Builder usingIterator(boolean usingIterator) {
+            this.usingIterator = Boolean.toString(usingIterator);
+            return this;
+        }
+
         /**
          * Class to use when unmarshalling.
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
index 4ffe779bf1b..385c6611ddb 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/AvroDataFormat.java
@@ -578,6 +578,11 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         /**
          * Lookup and use the existing ObjectMapper with the given id when using Jackson.
          */
@@ -594,6 +599,14 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to lookup and use default Jackson ObjectMapper from the registry.
+         */
+        public Builder useDefaultObjectMapper(boolean useDefaultObjectMapper) {
+            this.useDefaultObjectMapper = Boolean.toString(useDefaultObjectMapper);
+            return this;
+        }
+
         /**
          * Class name of the java type to use when unmarshalling
          */
@@ -648,6 +661,15 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
+         * unmarshal to.
+         */
+        public Builder allowJmsType(boolean allowJmsType) {
+            this.allowJmsType = Boolean.toString(allowJmsType);
+            return this;
+        }
+
         /**
          * Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but
          * allows to use different collection types than java.util.Collection based as default.
@@ -670,6 +692,14 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * To unmarshal to a List of Map or a List of Pojo.
+         */
+        public Builder useList(boolean useList) {
+            this.useList = Boolean.toString(useList);
+            return this;
+        }
+
         /**
          * To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class
          * names. Multiple classes can be separated by comma.
@@ -728,6 +758,17 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the
+         * unmarshalling.
+         * <p/>
+         * This should only be enabled when desired to be used.
+         */
+        public Builder allowUnmarshallType(boolean allowUnmarshallType) {
+            this.allowUnmarshallType = Boolean.toString(allowUnmarshallType);
+            return this;
+        }
+
         /**
          * If set then Jackson will use the Timezone when marshalling/unmarshalling.
          */
@@ -744,6 +785,14 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If set to true then Jackson will lookup for an objectMapper into the registry
+         */
+        public Builder autoDiscoverObjectMapper(boolean autoDiscoverObjectMapper) {
+            this.autoDiscoverObjectMapper = Boolean.toString(autoDiscoverObjectMapper);
+            return this;
+        }
+
         /**
          * Optional schema resolver used to lookup schemas for the data in transit.
          */
@@ -760,6 +809,14 @@ public class AvroDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * When not disabled, the SchemaResolver will be looked up into the registry
+         */
+        public Builder autoDiscoverSchemaResolver(boolean autoDiscoverSchemaResolver) {
+            this.autoDiscoverSchemaResolver = Boolean.toString(autoDiscoverSchemaResolver);
+            return this;
+        }
+
         @Override
         public AvroDataFormat end() {
             return new AvroDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
index c6365593517..e83a8b41e9e 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BarcodeDataFormat.java
@@ -120,6 +120,14 @@ public class BarcodeDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Width of the barcode
+         */
+        public Builder width(int width) {
+            this.width = Integer.toString(width);
+            return this;
+        }
+
         /**
          * Height of the barcode
          */
@@ -128,6 +136,14 @@ public class BarcodeDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Height of the barcode
+         */
+        public Builder height(int height) {
+            this.height = Integer.toString(height);
+            return this;
+        }
+
         /**
          * Image type of the barcode such as png
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
index e34a2ecac92..f72157eaeb7 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/Base64DataFormat.java
@@ -113,6 +113,16 @@ public class Base64DataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * To specific a maximum line length for the encoded data.
+         * <p/>
+         * By default 76 is used.
+         */
+        public Builder lineLength(int lineLength) {
+            this.lineLength = Integer.toString(lineLength);
+            return this;
+        }
+
         /**
          * The line separators to use.
          * <p/>
@@ -132,6 +142,15 @@ public class Base64DataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode
+         * operations. Decoding seamlessly handles both modes. Is by default false.
+         */
+        public Builder urlSafe(boolean urlSafe) {
+            this.urlSafe = Boolean.toString(urlSafe);
+            return this;
+        }
+
         @Override
         public Base64DataFormat end() {
             return new Base64DataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
index 7c4f7d55dcc..6e953ad105d 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/BindyDataFormat.java
@@ -280,6 +280,15 @@ public class BindyDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * When unmarshalling should a single instance be unwrapped and returned instead of wrapped in a
+         * <tt>java.util.List</tt>.
+         */
+        public Builder unwrapSingleInstance(boolean unwrapSingleInstance) {
+            this.unwrapSingleInstance = Boolean.toString(unwrapSingleInstance);
+            return this;
+        }
+
         /**
          * Whether to allow empty streams in the unmarshal process. If true, no exception will be thrown when a body
          * without records is provided.
@@ -289,6 +298,15 @@ public class BindyDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to allow empty streams in the unmarshal process. If true, no exception will be thrown when a body
+         * without records is provided.
+         */
+        public Builder allowEmptyStream(boolean allowEmptyStream) {
+            this.allowEmptyStream = Boolean.toString(allowEmptyStream);
+            return this;
+        }
+
         @Override
         public BindyDataFormat end() {
             return new BindyDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CBORDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CBORDataFormat.java
index 1525019da99..27e7a84f1a6 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CBORDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CBORDataFormat.java
@@ -272,6 +272,14 @@ public class CBORDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to lookup and use default Jackson CBOR ObjectMapper from the registry.
+         */
+        public Builder useDefaultObjectMapper(boolean useDefaultObjectMapper) {
+            this.useDefaultObjectMapper = Boolean.toString(useDefaultObjectMapper);
+            return this;
+        }
+
         /**
          * Class name of the java type to use when unmarshalling
          */
@@ -290,6 +298,16 @@ public class CBORDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * To enable pretty printing output nicely formatted.
+         * <p/>
+         * Is by default false.
+         */
+        public Builder prettyPrint(boolean prettyPrint) {
+            this.prettyPrint = Boolean.toString(prettyPrint);
+            return this;
+        }
+
         /**
          * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
          * unmarshal to.
@@ -299,6 +317,15 @@ public class CBORDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
+         * unmarshal to.
+         */
+        public Builder allowJmsType(boolean allowJmsType) {
+            this.allowJmsType = Boolean.toString(allowJmsType);
+            return this;
+        }
+
         /**
          * Class of the java type to use when unmarshalling
          */
@@ -329,6 +356,14 @@ public class CBORDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * To unmarshal to a List of Map or a List of Pojo.
+         */
+        public Builder useList(boolean useList) {
+            this.useList = Boolean.toString(useList);
+            return this;
+        }
+
         /**
          * If enabled then Jackson CBOR is allowed to attempt to use the CamelCBORUnmarshalType header during the
          * unmarshalling.
@@ -340,6 +375,17 @@ public class CBORDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If enabled then Jackson CBOR is allowed to attempt to use the CamelCBORUnmarshalType header during the
+         * unmarshalling.
+         * <p/>
+         * This should only be enabled when desired to be used.
+         */
+        public Builder allowUnmarshallType(boolean allowUnmarshallType) {
+            this.allowUnmarshallType = Boolean.toString(allowUnmarshallType);
+            return this;
+        }
+
         /**
          * Set of features to enable on the Jackson <tt>com.fasterxml.jackson.databind.ObjectMapper</tt>.
          * <p/>
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
index 0cfdf8149a5..ce51e6e4bb8 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CryptoDataFormat.java
@@ -246,6 +246,14 @@ public class CryptoDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * The size of the buffer used in the signature process.
+         */
+        public Builder bufferSize(int bufferSize) {
+            this.bufferSize = Integer.toString(bufferSize);
+            return this;
+        }
+
         /**
          * The JCE algorithm name indicating the Message Authentication algorithm.
          */
@@ -262,6 +270,14 @@ public class CryptoDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Flag indicating that a Message Authentication Code should be calculated and appended to the encrypted data.
+         */
+        public Builder shouldAppendHMAC(boolean shouldAppendHMAC) {
+            this.shouldAppendHMAC = Boolean.toString(shouldAppendHMAC);
+            return this;
+        }
+
         /**
          * Flag indicating that the configured IV should be inlined into the encrypted data stream.
          * <p/>
@@ -272,6 +288,16 @@ public class CryptoDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Flag indicating that the configured IV should be inlined into the encrypted data stream.
+         * <p/>
+         * Is by default false.
+         */
+        public Builder inline(boolean inline) {
+            this.inline = Boolean.toString(inline);
+            return this;
+        }
+
         @Override
         public CryptoDataFormat end() {
             return new CryptoDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
index 86e3aa92073..fdf6d303944 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java
@@ -575,6 +575,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Disables the comment marker of the reference format.
+         */
+        public Builder commentMarkerDisabled(boolean commentMarkerDisabled) {
+            this.commentMarkerDisabled = Boolean.toString(commentMarkerDisabled);
+            return this;
+        }
+
         /**
          * Sets the comment marker of the reference format.
          */
@@ -601,6 +609,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Use for disabling using escape character
+         */
+        public Builder escapeDisabled(boolean escapeDisabled) {
+            this.escapeDisabled = Boolean.toString(escapeDisabled);
+            return this;
+        }
+
         /**
          * Sets the escape character to use
          */
@@ -614,6 +630,11 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        public Builder headerDisabled(boolean headerDisabled) {
+            this.headerDisabled = Boolean.toString(headerDisabled);
+            return this;
+        }
+
         /**
          * To configure the CSV headers
          */
@@ -630,6 +651,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to allow missing column names.
+         */
+        public Builder allowMissingColumnNames(boolean allowMissingColumnNames) {
+            this.allowMissingColumnNames = Boolean.toString(allowMissingColumnNames);
+            return this;
+        }
+
         /**
          * Whether to ignore empty lines.
          */
@@ -638,6 +667,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to ignore empty lines.
+         */
+        public Builder ignoreEmptyLines(boolean ignoreEmptyLines) {
+            this.ignoreEmptyLines = Boolean.toString(ignoreEmptyLines);
+            return this;
+        }
+
         /**
          * Whether to ignore surrounding spaces
          */
@@ -646,6 +683,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to ignore surrounding spaces
+         */
+        public Builder ignoreSurroundingSpaces(boolean ignoreSurroundingSpaces) {
+            this.ignoreSurroundingSpaces = Boolean.toString(ignoreSurroundingSpaces);
+            return this;
+        }
+
         /**
          * Used to disable null strings
          */
@@ -654,6 +699,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Used to disable null strings
+         */
+        public Builder nullStringDisabled(boolean nullStringDisabled) {
+            this.nullStringDisabled = Boolean.toString(nullStringDisabled);
+            return this;
+        }
+
         /**
          * Sets the null string
          */
@@ -670,6 +723,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Used to disable quotes
+         */
+        public Builder quoteDisabled(boolean quoteDisabled) {
+            this.quoteDisabled = Boolean.toString(quoteDisabled);
+            return this;
+        }
+
         /**
          * Sets the quote which by default is "
          */
@@ -702,6 +763,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to skip the header record in the output
+         */
+        public Builder skipHeaderRecord(boolean skipHeaderRecord) {
+            this.skipHeaderRecord = Boolean.toString(skipHeaderRecord);
+            return this;
+        }
+
         /**
          * Sets the quote mode
          */
@@ -719,6 +788,15 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must
+         * be read at one.
+         */
+        public Builder lazyLoad(boolean lazyLoad) {
+            this.lazyLoad = Boolean.toString(lazyLoad);
+            return this;
+        }
+
         /**
          * Whether the unmarshalling should produce maps (HashMap)for the lines values instead of lists. It requires to
          * have header (either defined or collected).
@@ -728,6 +806,15 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether the unmarshalling should produce maps (HashMap)for the lines values instead of lists. It requires to
+         * have header (either defined or collected).
+         */
+        public Builder useMaps(boolean useMaps) {
+            this.useMaps = Boolean.toString(useMaps);
+            return this;
+        }
+
         /**
          * Whether the unmarshalling should produce ordered maps (LinkedHashMap) for the lines values instead of lists.
          * It requires to have header (either defined or collected).
@@ -737,6 +824,15 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether the unmarshalling should produce ordered maps (LinkedHashMap) for the lines values instead of lists.
+         * It requires to have header (either defined or collected).
+         */
+        public Builder useOrderedMaps(boolean useOrderedMaps) {
+            this.useOrderedMaps = Boolean.toString(useOrderedMaps);
+            return this;
+        }
+
         /**
          * Refers to a custom <tt>CsvRecordConverter</tt> to lookup from the registry to use.
          */
@@ -753,6 +849,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Sets whether or not to trim leading and trailing blanks.
+         */
+        public Builder trim(boolean trim) {
+            this.trim = Boolean.toString(trim);
+            return this;
+        }
+
         /**
          * Sets whether or not to ignore case when accessing header names.
          */
@@ -761,6 +865,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Sets whether or not to ignore case when accessing header names.
+         */
+        public Builder ignoreHeaderCase(boolean ignoreHeaderCase) {
+            this.ignoreHeaderCase = Boolean.toString(ignoreHeaderCase);
+            return this;
+        }
+
         /**
          * Sets whether or not to add a trailing delimiter.
          */
@@ -769,6 +881,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Sets whether or not to add a trailing delimiter.
+         */
+        public Builder trailingDelimiter(boolean trailingDelimiter) {
+            this.trailingDelimiter = Boolean.toString(trailingDelimiter);
+            return this;
+        }
+
         /**
          * Whether the unmarshalling should capture the header record and store it in the message header
          */
@@ -777,6 +897,14 @@ public class CsvDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether the unmarshalling should capture the header record and store it in the message header
+         */
+        public Builder captureHeaderRecord(boolean captureHeaderRecord) {
+            this.captureHeaderRecord = Boolean.toString(captureHeaderRecord);
+            return this;
+        }
+
         @Override
         public CsvDataFormat end() {
             return new CsvDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FhirDataformat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FhirDataformat.java
index 065078b9e39..58f46bcf704 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FhirDataformat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FhirDataformat.java
@@ -445,6 +445,17 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * Sets the "pretty print" flag, meaning that the parser will encode resources with human-readable spacing and
+         * newlines between elements instead of condensing output as much as possible.
+         *
+         * @param prettyPrint The flag
+         */
+        public T prettyPrint(boolean prettyPrint) {
+            this.prettyPrint = Boolean.toString(prettyPrint);
+            return (T) this;
+        }
+
         /**
          * Registers an error handler which will be invoked when any parse errors are found
          *
@@ -510,6 +521,19 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true</code> (default is <code>false</code>) the ID of any resources being encoded will not be
+         * included in the output. Note that this does not apply to contained resources, only to root resources. In
+         * other words, if this is set to <code>true</code>, contained resources will still have local IDs but the
+         * outer/containing ID will not have an ID.
+         *
+         * @param omitResourceId Should resource IDs be omitted
+         */
+        public T omitResourceId(boolean omitResourceId) {
+            this.omitResourceId = Boolean.toString(omitResourceId);
+            return (T) this;
+        }
+
         /**
          * If set to <code>true</code> (default is false), the values supplied to {@link #setEncodeElements(Set)} will
          * not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained
@@ -520,6 +544,16 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true</code> (default is false), the values supplied to {@link #setEncodeElements(Set)} will
+         * not be applied to the root resource (typically a Bundle), but will be applied to any sub-resources contained
+         * within it (i.e. search result resources in that bundle)
+         */
+        public T encodeElementsAppliesToChildResourcesOnly(boolean encodeElementsAppliesToChildResourcesOnly) {
+            this.encodeElementsAppliesToChildResourcesOnly = Boolean.toString(encodeElementsAppliesToChildResourcesOnly);
+            return (T) this;
+        }
+
         /**
          * If provided, specifies the elements which should be encoded, to the exclusion of all others. Valid values for
          * this field would include:
@@ -586,6 +620,28 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true<code> (which is the default), resource references containing a version
+         * will have the version removed when the resource is encoded. This is generally good behaviour because
+         * in most situations, references from one resource to another should be to the resource by ID, not
+         * by ID and version. In some cases though, it may be desirable to preserve the version in resource
+         * links. In that case, this value should be set to <code>false</code>.
+         * <p>
+         * This method provides the ability to globally disable reference encoding. If finer-grained control is needed,
+         * use {@link #setDontStripVersionsFromReferencesAtPaths(List)}
+         * </p>
+         *
+         * @param stripVersionsFromReferences Set this to
+         *                                    <code>false<code> to prevent the parser from removing resource versions
+         *                                    from references (or <code>null</code> to apply the default setting from
+         *                                    the {@link #setParserOptions(Object)}
+         * @see                               #setDontStripVersionsFromReferencesAtPaths(List)
+         */
+        public T stripVersionsFromReferences(boolean stripVersionsFromReferences) {
+            this.stripVersionsFromReferences = Boolean.toString(stripVersionsFromReferences);
+            return (T) this;
+        }
+
         /**
          * If set to <code>true</code> (which is the default), the Bundle.entry.fullUrl will override the
          * Bundle.entry.resource's resource id if the fullUrl is defined. This behavior happens when parsing the source
@@ -602,6 +658,22 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true</code> (which is the default), the Bundle.entry.fullUrl will override the
+         * Bundle.entry.resource's resource id if the fullUrl is defined. This behavior happens when parsing the source
+         * data into a Bundle object. Set this to <code>false</code> if this is not the desired behavior (e.g. the
+         * client code wishes to perform additional validation checks between the fullUrl and the resource id).
+         *
+         * @param overrideResourceIdWithBundleEntryFullUrl Set this to <code>false</code> to prevent the parser from
+         *                                                 overriding resource ids with the Bundle.entry.fullUrl (or
+         *                                                 <code>null</code> to apply the default setting from the
+         *                                                 {@link #setParserOptions(Object)})
+         */
+        public T overrideResourceIdWithBundleEntryFullUrl(boolean overrideResourceIdWithBundleEntryFullUrl) {
+            this.overrideResourceIdWithBundleEntryFullUrl = Boolean.toString(overrideResourceIdWithBundleEntryFullUrl);
+            return (T) this;
+        }
+
         /**
          * If set to <code>true</code> (default is <code>false</code>) only elements marked by the FHIR specification as
          * being "summary elements" will be included.
@@ -611,6 +683,15 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true</code> (default is <code>false</code>) only elements marked by the FHIR specification as
+         * being "summary elements" will be included.
+         */
+        public T summaryMode(boolean summaryMode) {
+            this.summaryMode = Boolean.toString(summaryMode);
+            return (T) this;
+        }
+
         /**
          * If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded
          * values.
@@ -620,6 +701,15 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             return (T) this;
         }
 
+        /**
+         * If set to <code>true</code> (default is <code>false</code>), narratives will not be included in the encoded
+         * values.
+         */
+        public T suppressNarratives(boolean suppressNarratives) {
+            this.suppressNarratives = Boolean.toString(suppressNarratives);
+            return (T) this;
+        }
+
         /**
          * If supplied value(s), any resource references at the specified paths will have their resource versions
          * encoded instead of being automatically stripped during the encoding process. This setting has no effect on
@@ -649,5 +739,10 @@ public abstract class FhirDataformat extends DataFormatDefinition implements Con
             this.contentTypeHeader = contentTypeHeader;
             return (T) this;
         }
+
+        public T contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return (T) this;
+        }
     }
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java
index df28a29699c..1e3b59e25ca 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/FlatpackDataFormat.java
@@ -199,6 +199,14 @@ public class FlatpackDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Delimited or fixed. Is by default false = delimited
+         */
+        public Builder fixed(boolean fixed) {
+            this.fixed = Boolean.toString(fixed);
+            return this;
+        }
+
         /**
          * Whether the first line is ignored for delimited files (for the column headers).
          * <p/>
@@ -209,6 +217,16 @@ public class FlatpackDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether the first line is ignored for delimited files (for the column headers).
+         * <p/>
+         * Is by default true.
+         */
+        public Builder ignoreFirstRecord(boolean ignoreFirstRecord) {
+            this.ignoreFirstRecord = Boolean.toString(ignoreFirstRecord);
+            return this;
+        }
+
         /**
          * If the text is qualified with a character.
          * <p/>
@@ -235,6 +253,14 @@ public class FlatpackDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Allows for lines to be shorter than expected and ignores the extra characters
+         */
+        public Builder allowShortLines(boolean allowShortLines) {
+            this.allowShortLines = Boolean.toString(allowShortLines);
+            return this;
+        }
+
         /**
          * Allows for lines to be longer than expected and ignores the extra characters.
          */
@@ -243,6 +269,14 @@ public class FlatpackDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Allows for lines to be longer than expected and ignores the extra characters.
+         */
+        public Builder ignoreExtraColumns(boolean ignoreExtraColumns) {
+            this.ignoreExtraColumns = Boolean.toString(ignoreExtraColumns);
+            return this;
+        }
+
         /**
          * References to a custom parser factory to lookup in the registry
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/GrokDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/GrokDataFormat.java
index ebd242d8d9e..3f5e041db08 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/GrokDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/GrokDataFormat.java
@@ -138,6 +138,15 @@ public class GrokDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Turns on flattened mode. In flattened mode the exception is thrown when there are multiple pattern matches
+         * with same key.
+         */
+        public Builder flattened(boolean flattened) {
+            this.flattened = Boolean.toString(flattened);
+            return this;
+        }
+
         /**
          * If false, every line of input is matched for pattern only once. Otherwise the line can be scanned multiple
          * times when non-terminal pattern is used.
@@ -147,6 +156,15 @@ public class GrokDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If false, every line of input is matched for pattern only once. Otherwise the line can be scanned multiple
+         * times when non-terminal pattern is used.
+         */
+        public Builder allowMultipleMatchesPerLine(boolean allowMultipleMatchesPerLine) {
+            this.allowMultipleMatchesPerLine = Boolean.toString(allowMultipleMatchesPerLine);
+            return this;
+        }
+
         /**
          * Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP})
          */
@@ -155,6 +173,14 @@ public class GrokDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP})
+         */
+        public Builder namedOnly(boolean namedOnly) {
+            this.namedOnly = Boolean.toString(namedOnly);
+            return this;
+        }
+
         @Override
         public GrokDataFormat end() {
             return new GrokDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
index 7f63be878b0..0bacf9ecd16 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/HL7DataFormat.java
@@ -95,6 +95,16 @@ public class HL7DataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to validate the HL7 message
+         * <p/>
+         * Is by default true.
+         */
+        public Builder validate(boolean validate) {
+            this.validate = Boolean.toString(validate);
+            return this;
+        }
+
         /**
          * To use a custom HL7 parser
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/IcalDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/IcalDataFormat.java
index bee04c10459..26263ef5161 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/IcalDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/IcalDataFormat.java
@@ -74,6 +74,14 @@ public class IcalDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Whether to validate.
+         */
+        public Builder validating(boolean validating) {
+            this.validating = Boolean.toString(validating);
+            return this;
+        }
+
         @Override
         public IcalDataFormat end() {
             return new IcalDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
index a9baa562819..9a3143fd99b 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JacksonXMLDataFormat.java
@@ -387,6 +387,16 @@ public class JacksonXMLDataFormat extends DataFormatDefinition implements Conten
             return this;
         }
 
+        /**
+         * To enable pretty printing output nicely formatted.
+         * <p/>
+         * Is by default false.
+         */
+        public Builder prettyPrint(boolean prettyPrint) {
+            this.prettyPrint = Boolean.toString(prettyPrint);
+            return this;
+        }
+
         /**
          * Class name of the java type to use when unmarshalling
          */
@@ -441,6 +451,15 @@ public class JacksonXMLDataFormat extends DataFormatDefinition implements Conten
             return this;
         }
 
+        /**
+         * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
+         * unmarshal to.
+         */
+        public Builder allowJmsType(boolean allowJmsType) {
+            this.allowJmsType = Boolean.toString(allowJmsType);
+            return this;
+        }
+
         /**
          * Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but
          * allows to use different collection types than java.util.Collection based as default.
@@ -463,6 +482,14 @@ public class JacksonXMLDataFormat extends DataFormatDefinition implements Conten
             return this;
         }
 
+        /**
+         * To unmarshal to a List of Map or a List of Pojo.
+         */
+        public Builder useList(boolean useList) {
+            this.useList = Boolean.toString(useList);
+            return this;
+        }
+
         /**
          * Whether to enable the JAXB annotations module when using jackson. When enabled then JAXB annotations can be
          * used by Jackson.
@@ -472,6 +499,15 @@ public class JacksonXMLDataFormat extends DataFormatDefinition implements Conten
             return this;
         }
 
+        /**
+         * Whether to enable the JAXB annotations module when using jackson. When enabled then JAXB annotations can be
+         * used by Jackson.
+         */
+        public Builder enableJaxbAnnotationModule(boolean enableJaxbAnnotationModule) {
+            this.enableJaxbAnnotationModule = Boolean.toString(enableJaxbAnnotationModule);
+            return this;
+        }
+
         /**
          * To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class
          * names. Multiple classes can be separated by comma.
@@ -530,11 +566,27 @@ public class JacksonXMLDataFormat extends DataFormatDefinition implements Conten
             return this;
         }
 
+        /**
+         * If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the
+         * unmarshalling.
+         * <p/>
+         * This should only be enabled when desired to be used.
+         */
+        public Builder allowUnmarshallType(boolean allowUnmarshallType) {
+            this.allowUnmarshallType = Boolean.toString(allowUnmarshallType);
+            return this;
+        }
+
         public Builder contentTypeHeader(String contentTypeHeader) {
             this.contentTypeHeader = contentTypeHeader;
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         /**
          * If set then Jackson will use the Timezone when marshalling/unmarshalling.
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
index 6508d6b97e0..7c826cb8db3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java
@@ -389,6 +389,14 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * This can be set to true to mark that the contextPath is referring to a classname and not a package name.
+         */
+        public Builder contextPathIsClassName(boolean contextPathIsClassName) {
+            this.contextPathIsClassName = Boolean.toString(contextPathIsClassName);
+            return this;
+        }
+
         /**
          * To validate against an existing schema. Your can use the prefix classpath:, file:* or *http: to specify how
          * the resource should be resolved. You can separate multiple schema files by using the ',' character.
@@ -409,6 +417,17 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Sets the schema severity level to use when validating against a schema. This level determines the minimum
+         * severity error that triggers JAXB to stop continue parsing. The default value of 0 (warning) means that any
+         * error (warning, error or fatal error) will trigger JAXB to stop. There are the following three levels:
+         * 0=warning, 1=error, 2=fatal error.
+         */
+        public Builder schemaSeverityLevel(int schemaSeverityLevel) {
+            this.schemaSeverityLevel = Integer.toString(schemaSeverityLevel);
+            return this;
+        }
+
         /**
          * To enable pretty printing output nicely formatted.
          * <p/>
@@ -419,6 +438,16 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * To enable pretty printing output nicely formatted.
+         * <p/>
+         * Is by default false.
+         */
+        public Builder prettyPrint(boolean prettyPrint) {
+            this.prettyPrint = Boolean.toString(prettyPrint);
+            return this;
+        }
+
         /**
          * Whether to allow using ObjectFactory classes to create the POJO classes during marshalling. This only applies
          * to POJO classes that has not been annotated with JAXB and providing jaxb.index descriptor files.
@@ -428,6 +457,15 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Whether to allow using ObjectFactory classes to create the POJO classes during marshalling. This only applies
+         * to POJO classes that has not been annotated with JAXB and providing jaxb.index descriptor files.
+         */
+        public Builder objectFactory(boolean objectFactory) {
+            this.objectFactory = Boolean.toString(objectFactory);
+            return this;
+        }
+
         /**
          * Whether to ignore JAXBElement elements - only needed to be set to false in very special use-cases.
          */
@@ -436,6 +474,14 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Whether to ignore JAXBElement elements - only needed to be set to false in very special use-cases.
+         */
+        public Builder ignoreJAXBElement(boolean ignoreJAXBElement) {
+            this.ignoreJAXBElement = Boolean.toString(ignoreJAXBElement);
+            return this;
+        }
+
         /**
          * Whether marhsalling must be java objects with JAXB annotations. And if not then it fails. This option can be
          * set to false to relax that, such as when the data is already in XML format.
@@ -445,6 +491,15 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Whether marhsalling must be java objects with JAXB annotations. And if not then it fails. This option can be
+         * set to false to relax that, such as when the data is already in XML format.
+         */
+        public Builder mustBeJAXBElement(boolean mustBeJAXBElement) {
+            this.mustBeJAXBElement = Boolean.toString(mustBeJAXBElement);
+            return this;
+        }
+
         /**
          * To turn on marshalling XML fragment trees. By default JAXB looks for @XmlRootElement annotation on given
          * class to operate on whole XML tree. This is useful but not always - sometimes generated code does not
@@ -457,6 +512,18 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * To turn on marshalling XML fragment trees. By default JAXB looks for @XmlRootElement annotation on given
+         * class to operate on whole XML tree. This is useful but not always - sometimes generated code does not
+         * have @XmlRootElement annotation, sometimes you need unmarshall only part of tree. In that case you can use
+         * partial unmarshalling. To enable this behaviours you need set property partClass. Camel will pass this class
+         * to JAXB's unmarshaler.
+         */
+        public Builder fragment(boolean fragment) {
+            this.fragment = Boolean.toString(fragment);
+            return this;
+        }
+
         /**
          * To ignore non xml characters and replace them with an empty space.
          */
@@ -465,6 +532,14 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * To ignore non xml characters and replace them with an empty space.
+         */
+        public Builder filterNonXmlChars(boolean filterNonXmlChars) {
+            this.filterNonXmlChars = Boolean.toString(filterNonXmlChars);
+            return this;
+        }
+
         /**
          * To overrule and use a specific encoding
          */
@@ -541,6 +616,11 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         @Override
         public JaxbDataFormat end() {
             return new JaxbDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index e210c1da6c1..a8184d42a0c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -674,6 +674,11 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         /**
          * Lookup and use the existing ObjectMapper with the given id when using Jackson.
          */
@@ -690,6 +695,14 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Whether to lookup and use default Jackson ObjectMapper from the registry.
+         */
+        public Builder useDefaultObjectMapper(boolean useDefaultObjectMapper) {
+            this.useDefaultObjectMapper = Boolean.toString(useDefaultObjectMapper);
+            return this;
+        }
+
         /**
          * To enable pretty printing output nicely formatted.
          * <p/>
@@ -700,6 +713,16 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * To enable pretty printing output nicely formatted.
+         * <p/>
+         * Is by default false.
+         */
+        public Builder prettyPrint(boolean prettyPrint) {
+            this.prettyPrint = Boolean.toString(prettyPrint);
+            return this;
+        }
+
         /**
          * Class name of the java type to use when unmarshalling
          */
@@ -762,6 +785,15 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
+         * unmarshal to.
+         */
+        public Builder allowJmsType(boolean allowJmsType) {
+            this.allowJmsType = Boolean.toString(allowJmsType);
+            return this;
+        }
+
         /**
          * Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but
          * allows using different collection types than java.util.Collection based as default.
@@ -784,6 +816,14 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * To unmarshal to a List of Map or a List of Pojo.
+         */
+        public Builder useList(boolean useList) {
+            this.useList = Boolean.toString(useList);
+            return this;
+        }
+
         /**
          * To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class
          * names. Multiple classes can be separated by comma.
@@ -869,6 +909,17 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the
+         * unmarshalling.
+         * <p/>
+         * This should only be enabled when desired to be used.
+         */
+        public Builder allowUnmarshallType(boolean allowUnmarshallType) {
+            this.allowUnmarshallType = Boolean.toString(allowUnmarshallType);
+            return this;
+        }
+
         /**
          * If set then Jackson will use the Timezone when marshalling/unmarshalling. This option will have no effect on
          * the others Json DataFormat, like gson, fastjson and xstream.
@@ -886,6 +937,14 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * If set to true then Jackson will look for an objectMapper to use from the registry
+         */
+        public Builder autoDiscoverObjectMapper(boolean autoDiscoverObjectMapper) {
+            this.autoDiscoverObjectMapper = Boolean.toString(autoDiscoverObjectMapper);
+            return this;
+        }
+
         /**
          * Whether XStream will drop the root node in the generated JSon. You may want to enable this when using POJOs;
          * as then the written object will include the class name as root node, which is often not intended to be
@@ -896,6 +955,16 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * Whether XStream will drop the root node in the generated JSon. You may want to enable this when using POJOs;
+         * as then the written object will include the class name as root node, which is often not intended to be
+         * written in the JSON output.
+         */
+        public Builder dropRootNode(boolean dropRootNode) {
+            this.dropRootNode = Boolean.toString(dropRootNode);
+            return this;
+        }
+
         /**
          * Optional schema resolver used to lookup schemas for the data in transit.
          */
@@ -912,6 +981,14 @@ public class JsonDataFormat extends DataFormatDefinition implements ContentTypeH
             return this;
         }
 
+        /**
+         * When not disabled, the SchemaResolver will be looked up into the registry
+         */
+        public Builder autoDiscoverSchemaResolver(boolean autoDiscoverSchemaResolver) {
+            this.autoDiscoverSchemaResolver = Boolean.toString(autoDiscoverSchemaResolver);
+            return this;
+        }
+
         /**
          * If set then Jackson will use the the defined Property Naming Strategy. Possible values are: LOWER_CAMEL_CASE,
          * LOWER_DOT_CASE, LOWER_CASE, KEBAB_CASE, SNAKE_CASE and UPPER_CAMEL_CASE
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/LZFDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/LZFDataFormat.java
index 8e950bf1391..e3af37c43b7 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/LZFDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/LZFDataFormat.java
@@ -74,6 +74,14 @@ public class LZFDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Enable encoding (compress) using multiple processing cores.
+         */
+        public Builder usingParallelCompression(boolean usingParallelCompression) {
+            this.usingParallelCompression = Boolean.toString(usingParallelCompression);
+            return this;
+        }
+
         @Override
         public LZFDataFormat end() {
             return new LZFDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/MimeMultipartDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/MimeMultipartDataFormat.java
index 292e0cd579a..58998aa3981 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/MimeMultipartDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/MimeMultipartDataFormat.java
@@ -162,6 +162,17 @@ public class MimeMultipartDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Defines whether a message without attachment is also marshaled into a MIME Multipart (with only one body
+         * part).
+         * <p>
+         * Default is false.
+         */
+        public Builder multipartWithoutAttachment(boolean multipartWithoutAttachment) {
+            this.multipartWithoutAttachment = Boolean.toString(multipartWithoutAttachment);
+            return this;
+        }
+
         /**
          * Defines whether the MIME-Multipart headers are part of the message body (true) or are set as Camel headers
          * (false).
@@ -173,6 +184,17 @@ public class MimeMultipartDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Defines whether the MIME-Multipart headers are part of the message body (true) or are set as Camel headers
+         * (false).
+         * <p>
+         * Default is false.
+         */
+        public Builder headersInline(boolean headersInline) {
+            this.headersInline = Boolean.toString(headersInline);
+            return this;
+        }
+
         /**
          * A regex that defines which Camel headers are also included as MIME headers into the MIME multipart. This will
          * only work if headersInline is set to true.
@@ -194,6 +216,16 @@ public class MimeMultipartDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Defines whether the content of binary parts in the MIME multipart is binary (true) or Base-64 encoded (false)
+         * <p>
+         * Default is false.
+         */
+        public Builder binaryContent(boolean binaryContent) {
+            this.binaryContent = Boolean.toString(binaryContent);
+            return this;
+        }
+
         @Override
         public MimeMultipartDataFormat end() {
             return new MimeMultipartDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
index 6600be9fa4d..07c03d1c906 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
@@ -337,6 +337,15 @@ public class PGPDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Signature hash algorithm; possible values are defined in org.bouncycastle.bcpg.HashAlgorithmTags; for example
+         * 2 (= SHA1), 8 (= SHA256), 9 (= SHA384), 10 (= SHA512), 11 (=SHA224). Only relevant for signing.
+         */
+        public Builder hashAlgorithm(int hashAlgorithm) {
+            this.hashAlgorithm = Integer.toString(hashAlgorithm);
+            return this;
+        }
+
         /**
          * This option will cause PGP to base64 encode the encrypted text, making it available for copy/paste, etc.
          */
@@ -345,6 +354,14 @@ public class PGPDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * This option will cause PGP to base64 encode the encrypted text, making it available for copy/paste, etc.
+         */
+        public Builder armored(boolean armored) {
+            this.armored = Boolean.toString(armored);
+            return this;
+        }
+
         /**
          * Adds an integrity check/sign into the encryption file.
          * <p/>
@@ -355,6 +372,16 @@ public class PGPDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Adds an integrity check/sign into the encryption file.
+         * <p/>
+         * The default value is true.
+         */
+        public Builder integrity(boolean integrity) {
+            this.integrity = Boolean.toString(integrity);
+            return this;
+        }
+
         /**
          * Filename of the keyring; must be accessible as a classpath resource (but you can specify a location in the
          * file system by using the "file:" prefix).
@@ -384,6 +411,16 @@ public class PGPDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Symmetric key encryption algorithm; possible values are defined in
+         * org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags; for example 2 (= TRIPLE DES), 3 (= CAST5), 4 (= BLOWFISH), 6
+         * (= DES), 7 (= AES_128). Only relevant for encrypting.
+         */
+        public Builder algorithm(int algorithm) {
+            this.algorithm = Integer.toString(algorithm);
+            return this;
+        }
+
         /**
          * Compression algorithm; possible values are defined in org.bouncycastle.bcpg.CompressionAlgorithmTags; for
          * example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting.
@@ -393,6 +430,15 @@ public class PGPDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Compression algorithm; possible values are defined in org.bouncycastle.bcpg.CompressionAlgorithmTags; for
+         * example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting.
+         */
+        public Builder compressionAlgorithm(int compressionAlgorithm) {
+            this.compressionAlgorithm = Integer.toString(compressionAlgorithm);
+            return this;
+        }
+
         /**
          * Password used when opening the private key (not used for encryption).
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
index 47b2107a23d..9ee7e7b9472 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ProtobufDataFormat.java
@@ -597,6 +597,11 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         public Builder defaultInstance(Object defaultInstance) {
             this.defaultInstance = defaultInstance;
             return this;
@@ -626,6 +631,14 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * Whether to lookup and use default Jackson ObjectMapper from the registry.
+         */
+        public Builder useDefaultObjectMapper(boolean useDefaultObjectMapper) {
+            this.useDefaultObjectMapper = Boolean.toString(useDefaultObjectMapper);
+            return this;
+        }
+
         /**
          * Class name of the java type to use when unmarshalling
          */
@@ -680,6 +693,15 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to
+         * unmarshal to.
+         */
+        public Builder allowJmsType(boolean allowJmsType) {
+            this.allowJmsType = Boolean.toString(allowJmsType);
+            return this;
+        }
+
         /**
          * Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but
          * allows to use different collection types than java.util.Collection based as default.
@@ -702,6 +724,14 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * To unmarshal to a List of Map or a List of Pojo.
+         */
+        public Builder useList(boolean useList) {
+            this.useList = Boolean.toString(useList);
+            return this;
+        }
+
         /**
          * To use custom Jackson modules com.fasterxml.jackson.databind.Module specified as a String with FQN class
          * names. Multiple classes can be separated by comma.
@@ -760,6 +790,17 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the
+         * unmarshalling.
+         * <p/>
+         * This should only be enabled when desired to be used.
+         */
+        public Builder allowUnmarshallType(boolean allowUnmarshallType) {
+            this.allowUnmarshallType = Boolean.toString(allowUnmarshallType);
+            return this;
+        }
+
         /**
          * If set then Jackson will use the Timezone when marshalling/unmarshalling.
          */
@@ -776,6 +817,14 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * If set to true then Jackson will lookup for an objectMapper into the registry
+         */
+        public Builder autoDiscoverObjectMapper(boolean autoDiscoverObjectMapper) {
+            this.autoDiscoverObjectMapper = Boolean.toString(autoDiscoverObjectMapper);
+            return this;
+        }
+
         /**
          * Optional schema resolver used to lookup schemas for the data in transit.
          */
@@ -792,6 +841,14 @@ public class ProtobufDataFormat extends DataFormatDefinition implements ContentT
             return this;
         }
 
+        /**
+         * When not disabled, the SchemaResolver will be looked up into the registry
+         */
+        public Builder autoDiscoverSchemaResolver(boolean autoDiscoverSchemaResolver) {
+            this.autoDiscoverSchemaResolver = Boolean.toString(autoDiscoverSchemaResolver);
+            return this;
+        }
+
         @Override
         public ProtobufDataFormat end() {
             return new ProtobufDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TarFileDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TarFileDataFormat.java
index 76279d5e21a..f9208c19f65 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TarFileDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TarFileDataFormat.java
@@ -129,6 +129,15 @@ public class TarFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the tar file has more than one entry, the setting this option to true, allows working with the splitter
+         * EIP, to split the data using an iterator in a streaming mode.
+         */
+        public Builder usingIterator(boolean usingIterator) {
+            this.usingIterator = Boolean.toString(usingIterator);
+            return this;
+        }
+
         /**
          * If the tar file has more than one entry, setting this option to true, allows to get the iterator even if the
          * directory is empty
@@ -138,6 +147,15 @@ public class TarFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the tar file has more than one entry, setting this option to true, allows to get the iterator even if the
+         * directory is empty
+         */
+        public Builder allowEmptyDirectory(boolean allowEmptyDirectory) {
+            this.allowEmptyDirectory = Boolean.toString(allowEmptyDirectory);
+            return this;
+        }
+
         /**
          * If the file name contains path elements, setting this option to true, allows the path to be maintained in the
          * tar file.
@@ -147,6 +165,15 @@ public class TarFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the file name contains path elements, setting this option to true, allows the path to be maintained in the
+         * tar file.
+         */
+        public Builder preservePathElements(boolean preservePathElements) {
+            this.preservePathElements = Boolean.toString(preservePathElements);
+            return this;
+        }
+
         /**
          * Set the maximum decompressed size of a tar file (in bytes). The default value if not specified corresponds to
          * 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable
@@ -159,6 +186,18 @@ public class TarFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Set the maximum decompressed size of a tar file (in bytes). The default value if not specified corresponds to
+         * 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable
+         * setting a maximum decompressed size.
+         *
+         * @param maxDecompressedSize the maximum decompressed size of a tar file (in bytes)
+         */
+        public Builder maxDecompressedSize(long maxDecompressedSize) {
+            this.maxDecompressedSize = Long.toString(maxDecompressedSize);
+            return this;
+        }
+
         @Override
         public TarFileDataFormat end() {
             return new TarFileDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
index f65d14a4140..7707d111d9e 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ThriftDataFormat.java
@@ -145,6 +145,11 @@ public class ThriftDataFormat extends DataFormatDefinition implements ContentTyp
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         public Builder defaultInstance(Object defaultInstance) {
             this.defaultInstance = defaultInstance;
             return this;
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
index fdf2e21d3f6..459df6aa409 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
@@ -142,6 +142,14 @@ public class TidyMarkupDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * When returning a String, do we omit the XML declaration in the top.
+         */
+        public Builder omitXmlDeclaration(boolean omitXmlDeclaration) {
+            this.omitXmlDeclaration = Boolean.toString(omitXmlDeclaration);
+            return this;
+        }
+
         @Override
         public TidyMarkupDataFormat end() {
             return new TidyMarkupDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityAbstractDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityAbstractDataFormat.java
index 5a9ce8df80b..bf58917b70c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityAbstractDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityAbstractDataFormat.java
@@ -325,6 +325,16 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether or not the empty lines must be ignored.
+         * <p/>
+         * The default value is true
+         */
+        public T skipEmptyLines(boolean skipEmptyLines) {
+            this.skipEmptyLines = Boolean.toString(skipEmptyLines);
+            return (T) this;
+        }
+
         /**
          * Whether or not the trailing white spaces must be ignored.
          * <p/>
@@ -335,6 +345,16 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether or not the trailing white spaces must be ignored.
+         * <p/>
+         * The default value is true
+         */
+        public T ignoreTrailingWhitespaces(boolean ignoreTrailingWhitespaces) {
+            this.ignoreTrailingWhitespaces = Boolean.toString(ignoreTrailingWhitespaces);
+            return (T) this;
+        }
+
         /**
          * Whether or not the leading white spaces must be ignored.
          * <p/>
@@ -345,6 +365,16 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether or not the leading white spaces must be ignored.
+         * <p/>
+         * The default value is true
+         */
+        public T ignoreLeadingWhitespaces(boolean ignoreLeadingWhitespaces) {
+            this.ignoreLeadingWhitespaces = Boolean.toString(ignoreLeadingWhitespaces);
+            return (T) this;
+        }
+
         /**
          * Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which
          * indicates that there is no header.
@@ -356,6 +386,17 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which
+         * indicates that there is no header.
+         * <p/>
+         * The default value is false
+         */
+        public T headersDisabled(boolean headersDisabled) {
+            this.headersDisabled = Boolean.toString(headersDisabled);
+            return (T) this;
+        }
+
         /**
          * The headers to use.
          */
@@ -374,6 +415,16 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether or not the header must be read in the first line of the test document
+         * <p/>
+         * The default value is false
+         */
+        public T headerExtractionEnabled(boolean headerExtractionEnabled) {
+            this.headerExtractionEnabled = Boolean.toString(headerExtractionEnabled);
+            return (T) this;
+        }
+
         /**
          * The maximum number of record to read.
          */
@@ -382,6 +433,14 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * The maximum number of record to read.
+         */
+        public T numberOfRecordsToRead(int numberOfRecordsToRead) {
+            this.numberOfRecordsToRead = Integer.toString(numberOfRecordsToRead);
+            return (T) this;
+        }
+
         /**
          * The String representation of an empty value
          */
@@ -431,6 +490,17 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             return (T) this;
         }
 
+        /**
+         * Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must
+         * be read at one.
+         * <p/>
+         * The default value is false
+         */
+        public T lazyLoad(boolean lazyLoad) {
+            this.lazyLoad = Boolean.toString(lazyLoad);
+            return (T) this;
+        }
+
         /**
          * Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have
          * header (either defined or collected).
@@ -441,5 +511,16 @@ public abstract class UniVocityAbstractDataFormat extends DataFormatDefinition {
             this.asMap = asMap;
             return (T) this;
         }
+
+        /**
+         * Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have
+         * header (either defined or collected).
+         * <p/>
+         * The default value is false
+         */
+        public T asMap(boolean asMap) {
+            this.asMap = Boolean.toString(asMap);
+            return (T) this;
+        }
     }
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityCsvDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityCsvDataFormat.java
index 14bc3d9f864..e52cea6e485 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityCsvDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityCsvDataFormat.java
@@ -120,6 +120,14 @@ public class UniVocityCsvDataFormat extends UniVocityAbstractDataFormat {
             return this;
         }
 
+        /**
+         * Whether or not all values must be quoted when writing them.
+         */
+        public Builder quoteAllFields(boolean quoteAllFields) {
+            this.quoteAllFields = Boolean.toString(quoteAllFields);
+            return this;
+        }
+
         /**
          * The quote symbol.
          */
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityFixedDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityFixedDataFormat.java
index c2ccd5d5e72..d60a7c86199 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityFixedDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/UniVocityFixedDataFormat.java
@@ -111,6 +111,16 @@ public class UniVocityFixedDataFormat extends UniVocityAbstractDataFormat {
             return this;
         }
 
+        /**
+         * Whether or not the trailing characters until new line must be ignored.
+         * <p/>
+         * The default value is false
+         */
+        public Builder skipTrailingCharsUntilNewline(boolean skipTrailingCharsUntilNewline) {
+            this.skipTrailingCharsUntilNewline = Boolean.toString(skipTrailingCharsUntilNewline);
+            return this;
+        }
+
         /**
          * Whether or not the record ends on new line.
          * <p/>
@@ -121,6 +131,16 @@ public class UniVocityFixedDataFormat extends UniVocityAbstractDataFormat {
             return this;
         }
 
+        /**
+         * Whether or not the record ends on new line.
+         * <p/>
+         * The default value is false
+         */
+        public Builder recordEndsOnNewline(boolean recordEndsOnNewline) {
+            this.recordEndsOnNewline = Boolean.toString(recordEndsOnNewline);
+            return this;
+        }
+
         /**
          * The padding character.
          * <p/>
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
index 7495e0b229b..067bde9d1e4 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
@@ -378,6 +378,15 @@ public class XMLSecurityDataFormat extends DataFormatDefinition implements Names
             return this;
         }
 
+        /**
+         * A boolean value to specify whether the XML Element is to be encrypted or the contents of the XML Element.
+         * false = Element Level. true = Element Content Level.
+         */
+        public Builder secureTagContents(boolean secureTagContents) {
+            this.secureTagContents = Boolean.toString(secureTagContents);
+            return this;
+        }
+
         /**
          * The cipher algorithm to be used for encryption/decryption of the asymmetric key. The available choices are:
          * <ul>
@@ -465,6 +474,15 @@ public class XMLSecurityDataFormat extends DataFormatDefinition implements Names
             return this;
         }
 
+        /**
+         * Whether to add the public key used to encrypt the session key as a KeyValue in the EncryptedKey structure or
+         * not.
+         */
+        public Builder addKeyValueForEncryptedKey(boolean addKeyValueForEncryptedKey) {
+            this.addKeyValueForEncryptedKey = Boolean.toString(addKeyValueForEncryptedKey);
+            return this;
+        }
+
         /**
          * Injects the XML Namespaces of prefix -> uri mappings
          *
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
index 9bc97483a3c..9a82de88875 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
@@ -441,6 +441,11 @@ public class XStreamDataFormat extends DataFormatDefinition implements ContentTy
             return this;
         }
 
+        public Builder contentTypeHeader(boolean contentTypeHeader) {
+            this.contentTypeHeader = Boolean.toString(contentTypeHeader);
+            return this;
+        }
+
         @Override
         public XStreamDataFormat end() {
             return new XStreamDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
index 8b5915cb9ca..03d0f29127b 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/YAMLDataFormat.java
@@ -370,6 +370,14 @@ public class YAMLDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Use ApplicationContextClassLoader as custom ClassLoader
+         */
+        public Builder useApplicationContextClassLoader(boolean useApplicationContextClassLoader) {
+            this.useApplicationContextClassLoader = Boolean.toString(useApplicationContextClassLoader);
+            return this;
+        }
+
         /**
          * Force the emitter to produce a pretty YAML document when using the flow style.
          */
@@ -378,6 +386,14 @@ public class YAMLDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Force the emitter to produce a pretty YAML document when using the flow style.
+         */
+        public Builder prettyFlow(boolean prettyFlow) {
+            this.prettyFlow = Boolean.toString(prettyFlow);
+            return this;
+        }
+
         /**
          * Allow any class to be un-marshaled
          */
@@ -386,6 +402,14 @@ public class YAMLDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Allow any class to be un-marshaled
+         */
+        public Builder allowAnyType(boolean allowAnyType) {
+            this.allowAnyType = Boolean.toString(allowAnyType);
+            return this;
+        }
+
         /**
          * Set the types SnakeYAML is allowed to un-marshall
          */
@@ -402,6 +426,14 @@ public class YAMLDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Set the maximum amount of aliases allowed for collections.
+         */
+        public Builder maxAliasesForCollections(int maxAliasesForCollections) {
+            this.maxAliasesForCollections = Integer.toString(maxAliasesForCollections);
+            return this;
+        }
+
         /**
          * Set whether recursive keys are allowed.
          */
@@ -410,6 +442,14 @@ public class YAMLDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Set whether recursive keys are allowed.
+         */
+        public Builder allowRecursiveKeys(boolean allowRecursiveKeys) {
+            this.allowRecursiveKeys = Boolean.toString(allowRecursiveKeys);
+            return this;
+        }
+
         @Override
         public YAMLDataFormat end() {
             return new YAMLDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipDeflaterDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipDeflaterDataFormat.java
index 681ef750265..907313ea43c 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipDeflaterDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipDeflaterDataFormat.java
@@ -76,6 +76,15 @@ public class ZipDeflaterDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is the
+         * best compression.
+         */
+        public Builder compressionLevel(int compressionLevel) {
+            this.compressionLevel = Integer.toString(compressionLevel);
+            return this;
+        }
+
         @Override
         public ZipDeflaterDataFormat end() {
             return new ZipDeflaterDataFormat(this);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipFileDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipFileDataFormat.java
index 74e72ea4d6a..363d54845a5 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipFileDataFormat.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/ZipFileDataFormat.java
@@ -130,6 +130,15 @@ public class ZipFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the zip file has more than one entry, the setting this option to true, allows working with the splitter
+         * EIP, to split the data using an iterator in a streaming mode.
+         */
+        public Builder usingIterator(boolean usingIterator) {
+            this.usingIterator = Boolean.toString(usingIterator);
+            return this;
+        }
+
         /**
          * If the zip file has more than one entry, setting this option to true, allows to get the iterator even if the
          * directory is empty
@@ -139,6 +148,15 @@ public class ZipFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the zip file has more than one entry, setting this option to true, allows to get the iterator even if the
+         * directory is empty
+         */
+        public Builder allowEmptyDirectory(boolean allowEmptyDirectory) {
+            this.allowEmptyDirectory = Boolean.toString(allowEmptyDirectory);
+            return this;
+        }
+
         /**
          * If the file name contains path elements, setting this option to true, allows the path to be maintained in the
          * zip file.
@@ -148,6 +166,15 @@ public class ZipFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * If the file name contains path elements, setting this option to true, allows the path to be maintained in the
+         * zip file.
+         */
+        public Builder preservePathElements(boolean preservePathElements) {
+            this.preservePathElements = Boolean.toString(preservePathElements);
+            return this;
+        }
+
         /**
          * Set the maximum decompressed size of a zip file (in bytes). The default value if not specified corresponds to
          * 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable
@@ -160,6 +187,18 @@ public class ZipFileDataFormat extends DataFormatDefinition {
             return this;
         }
 
+        /**
+         * Set the maximum decompressed size of a zip file (in bytes). The default value if not specified corresponds to
+         * 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable
+         * setting a maximum decompressed size.
+         *
+         * @param maxDecompressedSize the maximum decompressed size of a zip file (in bytes)
+         */
+        public Builder maxDecompressedSize(long maxDecompressedSize) {
+            this.maxDecompressedSize = Long.toString(maxDecompressedSize);
+            return this;
+        }
+
         @Override
         public ZipFileDataFormat end() {
             return new ZipFileDataFormat(this);