http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentAutoConfiguration.java
 
b/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentAutoConfiguration.java
index 6e18352..5af3cc4 100644
--- 
a/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentAutoConfiguration.java
+++ 
b/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentAutoConfiguration.java
@@ -45,6 +45,26 @@ public class UndertowComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentConfiguration.java
 
b/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentConfiguration.java
index 4bece05..a03aa81 100644
--- 
a/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentConfiguration.java
+++ 
b/components-starter/camel-undertow-starter/src/main/java/org/apache/camel/component/undertow/springboot/UndertowComponentConfiguration.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.undertow.springboot;
 import org.apache.camel.component.undertow.UndertowHttpBinding;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * The undertow component provides HTTP-based endpoints for consuming and
@@ -33,10 +34,12 @@ public class UndertowComponentConfiguration {
      * To use a custom HttpBinding to control the mapping between Camel message
      * and HttpClient.
      */
+    @NestedConfigurationProperty
     private UndertowHttpBinding undertowHttpBinding;
     /**
      * To configure security using SSLContextParameters
      */
+    @NestedConfigurationProperty
     private SSLContextParameters sslContextParameters;
 
     public UndertowHttpBinding getUndertowHttpBinding() {

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentAutoConfiguration.java
 
b/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentAutoConfiguration.java
index be0b585..46b851b 100644
--- 
a/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentAutoConfiguration.java
+++ 
b/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentAutoConfiguration.java
@@ -45,6 +45,26 @@ public class VelocityComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentConfiguration.java
 
b/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentConfiguration.java
index 70776ac..de0eed8 100644
--- 
a/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentConfiguration.java
+++ 
b/components-starter/camel-velocity-starter/src/main/java/org/apache/camel/component/velocity/springboot/VelocityComponentConfiguration.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.velocity.springboot;
 
 import org.apache.velocity.app.VelocityEngine;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * Transforms the message using a Velocity template.
@@ -30,6 +31,7 @@ public class VelocityComponentConfiguration {
     /**
      * To use the VelocityEngine otherwise a new engine is created
      */
+    @NestedConfigurationProperty
     private VelocityEngine velocityEngine;
 
     public VelocityEngine getVelocityEngine() {

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentAutoConfiguration.java
 
b/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentAutoConfiguration.java
index 57f3d1b..e98951b 100644
--- 
a/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentAutoConfiguration.java
+++ 
b/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentAutoConfiguration.java
@@ -44,6 +44,26 @@ public class VertxComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentConfiguration.java
 
b/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentConfiguration.java
index 74d8d91..29bb37a 100644
--- 
a/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentConfiguration.java
+++ 
b/components-starter/camel-vertx-starter/src/main/java/org/apache/camel/component/vertx/springboot/VertxComponentConfiguration.java
@@ -20,6 +20,7 @@ import io.vertx.core.Vertx;
 import io.vertx.core.VertxOptions;
 import io.vertx.core.spi.VertxFactory;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * The vertx component is used for sending and receive messages from a vertx
@@ -33,6 +34,7 @@ public class VertxComponentConfiguration {
     /**
      * To use a custom VertxFactory implementation
      */
+    @NestedConfigurationProperty
     private VertxFactory vertxFactory;
     /**
      * Hostname for creating an embedded clustered EventBus
@@ -45,11 +47,13 @@ public class VertxComponentConfiguration {
     /**
      * Options to use for creating vertx
      */
+    @NestedConfigurationProperty
     private VertxOptions vertxOptions;
     /**
      * To use the given vertx EventBus instead of creating a new embedded
      * EventBus
      */
+    @NestedConfigurationProperty
     private Vertx vertx;
     /**
      * Timeout in seconds to wait for clustered Vertx EventBus to be ready. The

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentAutoConfiguration.java
 
b/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentAutoConfiguration.java
index afa2ea6..43c66b9 100644
--- 
a/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentAutoConfiguration.java
+++ 
b/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentAutoConfiguration.java
@@ -45,6 +45,26 @@ public class WebsocketComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentConfiguration.java
 
b/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentConfiguration.java
index 4797773..bf13ca8 100644
--- 
a/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentConfiguration.java
+++ 
b/components-starter/camel-websocket-starter/src/main/java/org/apache/camel/component/websocket/springboot/WebsocketComponentConfiguration.java
@@ -21,6 +21,7 @@ import org.apache.camel.component.websocket.WebSocketFactory;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.eclipse.jetty.util.thread.ThreadPool;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * The websocket component provides websocket endpoints for communicating with
@@ -81,10 +82,12 @@ public class WebsocketComponentConfiguration {
      * To use a custom thread pool for the server. MaxThreads/minThreads or
      * threadPool fields are required due to switch to Jetty9.
      */
+    @NestedConfigurationProperty
     private ThreadPool threadPool;
     /**
      * To configure security using SSLContextParameters
      */
+    @NestedConfigurationProperty
     private SSLContextParameters sslContextParameters;
     /**
      * To configure a map which contains custom WebSocketFactory for sub

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentAutoConfiguration.java
 
b/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentAutoConfiguration.java
index 2e3c549..19017ff 100644
--- 
a/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentAutoConfiguration.java
+++ 
b/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentAutoConfiguration.java
@@ -45,6 +45,26 @@ public class XmlSignatureComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
 
b/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
index 0a34deb..56524dd 100644
--- 
a/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
+++ 
b/components-starter/camel-xmlsecurity-starter/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
@@ -16,9 +16,20 @@
  */
 package org.apache.camel.component.xmlsecurity.springboot;
 
-import org.apache.camel.component.xmlsecurity.processor.XmlSignerConfiguration;
-import 
org.apache.camel.component.xmlsecurity.processor.XmlVerifierConfiguration;
+import java.util.List;
+import java.util.Map;
+import javax.xml.crypto.AlgorithmMethod;
+import javax.xml.crypto.KeySelector;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.dsig.spec.XPathFilterParameterSpec;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.xmlsecurity.api.KeyAccessor;
+import org.apache.camel.component.xmlsecurity.api.ValidationFailedHandler;
+import org.apache.camel.component.xmlsecurity.api.XmlSignature2Message;
+import org.apache.camel.component.xmlsecurity.api.XmlSignatureChecker;
+import org.apache.camel.component.xmlsecurity.api.XmlSignatureProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * Used to sign and verify exchanges using the XML signature specification.
@@ -32,28 +43,842 @@ public class XmlSignatureComponentConfiguration {
      * To use a shared XmlSignerConfiguration configuration to use as base for
      * configuring endpoints.
      */
-    private XmlSignerConfiguration signerConfiguration;
+    private XmlSignerConfigurationNestedConfiguration signerConfiguration;
     /**
      * To use a shared XmlVerifierConfiguration configuration to use as base 
for
      * configuring endpoints.
      */
-    private XmlVerifierConfiguration verifierConfiguration;
+    private XmlVerifierConfigurationNestedConfiguration verifierConfiguration;
 
-    public XmlSignerConfiguration getSignerConfiguration() {
+    public XmlSignerConfigurationNestedConfiguration getSignerConfiguration() {
         return signerConfiguration;
     }
 
     public void setSignerConfiguration(
-            XmlSignerConfiguration signerConfiguration) {
+            XmlSignerConfigurationNestedConfiguration signerConfiguration) {
         this.signerConfiguration = signerConfiguration;
     }
 
-    public XmlVerifierConfiguration getVerifierConfiguration() {
+    public XmlVerifierConfigurationNestedConfiguration 
getVerifierConfiguration() {
         return verifierConfiguration;
     }
 
     public void setVerifierConfiguration(
-            XmlVerifierConfiguration verifierConfiguration) {
+            XmlVerifierConfigurationNestedConfiguration verifierConfiguration) 
{
         this.verifierConfiguration = verifierConfiguration;
     }
+
+    public static class XmlSignerConfigurationNestedConfiguration {
+        public static final Class CAMEL_NESTED_CLASS = 
org.apache.camel.component.xmlsecurity.processor.XmlSignerConfiguration.class;
+        @NestedConfigurationProperty
+        private CamelContext camelContext;
+        /**
+         * For the signing process, a private key is necessary. You specify a
+         * key accessor bean which provides this private key. The key accessor
+         * bean must implement the KeyAccessor interface. The package
+         * org.apache.camel.component.xmlsecurity.api contains the default
+         * implementation class DefaultKeyAccessor which reads the private key
+         * from a Java keystore.
+         */
+        @NestedConfigurationProperty
+        private KeyAccessor keyAccessor;
+        /**
+         * Canonicalization method used to canonicalize the SignedInfo element
+         * before the digest is calculated. You can use the helper methods
+         * XmlSignatureHelper.getCanonicalizationMethod(String algorithm) or
+         * getCanonicalizationMethod(String algorithm, List<String>
+         * inclusiveNamespacePrefixes) to create a canonicalization method.
+         */
+        private AlgorithmMethod canonicalizationMethod;
+        /**
+         * Transforms which are executed on the message body before the digest
+         * is calculated. By default, C14n is added and in the case of 
enveloped
+         * signature (see option parentLocalName) also
+         * http://www.w3.org/2000/09/xmldsig#enveloped-signature is added at
+         * position 0 of the list. Use methods in XmlSignatureHelper to create
+         * the transform methods.
+         */
+        private List transformMethods;
+        /**
+         * Signature algorithm. Default value is
+         * "http://www.w3.org/2000/09/xmldsig#rsa-sha1";.
+         */
+        private String signatureAlgorithm = 
"http://www.w3.org/2000/09/xmldsig#rsa-sha1";;
+        /**
+         * Digest algorithm URI. Optional parameter. This digest algorithm is
+         * used for calculating the digest of the input message. If this digest
+         * algorithm is not specified then the digest algorithm is calculated
+         * from the signature algorithm. Example:
+         * "http://www.w3.org/2001/04/xmlenc#sha256";
+         */
+        private String digestAlgorithm;
+        /**
+         * In order to protect the KeyInfo element from tampering you can add a
+         * reference to the signed info element so that it is protected via the
+         * signature value. The default value is <tt>true</tt>.
+         * <p>
+         * Only relevant when a KeyInfo is returned by {@link KeyAccessor} . 
and
+         * {@link KeyInfo#getId()} is not <code>null</code>.
+         */
+        private Boolean addKeyInfoReference;
+        /**
+         * Namespace prefix for the XML signature namespace
+         * "http://www.w3.org/2000/09/xmldsig#";. Default value is "ds". If
+         * <code>null</code> or an empty value is set then no prefix is used 
for
+         * the XML signature namespace.
+         * <p>
+         * See best practice
+         * http://www.w3.org/TR/xmldsig-bestpractices/#signing-xml-
+         * without-namespaces
+         * 
+         * @param prefixForXmlSignatureNamespaceprefix
+         */
+        private String prefixForXmlSignatureNamespace = "ds";
+        /**
+         * Local name of the parent element to which the XML signature element
+         * will be added. Only relevant for enveloped XML signature.
+         * Alternatively you can also use
+         * {@link #setParentXpath(XPathFilterParameterSpec)} .
+         * <p>
+         * Default value is <code>null</code>. The value must be
+         * <code>null</code> for enveloping and detached XML signature.
+         * <p>
+         * This parameter or the parameter
+         * {@link #setParentXpath(XPathFilterParameterSpec)} for enveloped
+         * signature and the parameter {@link #setXpathsToIdAttributes(List)}
+         * for detached signature must not be set in the same configuration.
+         * <p>
+         * If the parameters <tt>parentXpath</tt> and <tt>parentLocalName</tt>
+         * are specified in the same configuration then an exception is thrown.
+         * 
+         * @param parentLocalNamelocal
+         *            name
+         */
+        private String parentLocalName;
+        /**
+         * Namespace of the parent element to which the XML signature element
+         * will be added.
+         */
+        private String parentNamespace;
+        /**
+         * Sets the content object Id attribute value. By default a UUID is
+         * generated. If you set the <code>null</code> value, then a new UUID
+         * will be generated. Only used in the enveloping case.
+         */
+        private String contentObjectId;
+        /**
+         * Sets the signature Id. If this parameter is not set (null value) 
then
+         * a unique ID is generated for the signature ID (default). If this
+         * parameter is set to "" (empty string) then no Id attribute is 
created
+         * in the signature element.
+         */
+        private String signatureId;
+        /**
+         * Reference URI for the content to be signed. Only used in the
+         * enveloped case. If the reference URI contains an ID attribute value,
+         * then the resource schema URI ( {@link #setSchemaResourceUri(String)}
+         * ) must also be set because the schema validator will then find out
+         * which attributes are ID attributes. Will be ignored in the 
enveloping
+         * or detached case.
+         */
+        private String contentReferenceUri;
+        /**
+         * Type of the content reference. The default value is 
<code>null</code>
+         * . This value can be overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_CONTENT_REFERENCE_TYPE} .
+         */
+        private String contentReferenceType;
+        /**
+         * Indicator whether the message body contains plain text. The default
+         * value is <code>false</code>, indicating that the message body
+         * contains XML. The value can be overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_MESSAGE_IS_PLAIN_TEXT} .
+         */
+        private Boolean plainText;
+        /**
+         * Encoding of the plain text. Only relevant if the message body is
+         * plain text (see parameter {@link #plainText} . Default value is
+         * "UTF-8".
+         */
+        private String plainTextEncoding = "UTF-8";
+        /**
+         * For adding additional References and Objects to the XML signature
+         * which contain additional properties, you can provide a bean which
+         * implements the XmlSignatureProperties interface.
+         */
+        @NestedConfigurationProperty
+        private XmlSignatureProperties properties;
+        private String keyAccessorName;
+        private String canonicalizationMethodName;
+        private String transformMethodsName;
+        private String propertiesName;
+        /**
+         * Define the elements which are signed in the detached case via XPATH
+         * expressions to ID attributes (attributes of type ID). For each
+         * element found via the XPATH expression a detached signature is
+         * created whose reference URI contains the corresponding attribute
+         * value (preceded by '#'). The signature becomes the last sibling of
+         * the signed element. Elements with deeper hierarchy level are signed
+         * first.
+         * <p>
+         * You can also set the XPATH list dynamically via the header
+         * {@link XmlSignatureConstants#HEADER_XPATHS_TO_ID_ATTRIBUTES} .
+         * <p>
+         * The parameter {@link #setParentLocalName(String)} or
+         * {@link #setParentXpath(XPathFilterParameterSpec)} for enveloped
+         * signature and this parameter for detached signature must not be set
+         * in the same configuration.
+         */
+        private List xpathsToIdAttributes;
+        /**
+         * Sets the XPath to find the parent node in the enveloped case. Either
+         * you specify the parent node via this method or the local name and
+         * namespace of the parent with the methods
+         * {@link #setParentLocalName(String)} and
+         * {@link #setParentNamespace(String)} .
+         * <p>
+         * Default value is <code>null</code>. The value must be
+         * <code>null</code> for enveloping and detached XML signature.
+         * <p>
+         * If the parameters <tt>parentXpath</tt> and <tt>parentLocalName</tt>
+         * are specified in the same configuration then an exception is thrown.
+         * 
+         * @param parentXpath
+         *            xpath to the parent node, if the xpath returns several
+         *            values then the first Element node is used
+         */
+        private XPathFilterParameterSpec parentXpath;
+        /**
+         * If you want to restrict the remote access via reference URIs, you 
can
+         * set an own dereferencer. Optional parameter. If not set the provider
+         * default dereferencer is used which can resolve URI fragments, HTTP,
+         * file and XPpointer URIs.
+         * <p>
+         * Attention: The implementation is provider dependent!
+         * 
+         * @seeXMLCryptoContext#setURIDereferencer(URIDereferencer)
+         */
+        private URIDereferencer uriDereferencer;
+        /**
+         * You can set a base URI which is used in the URI dereferencing.
+         * Relative URIs are then concatenated with the base URI.
+         * 
+         * @seeXMLCryptoContext#setBaseURI(String)
+         */
+        private String baseUri;
+        /**
+         * Sets the crypto context properties. See
+         * {@link XMLCryptoContext#setProperty(String,Object)} . Possible
+         * properties are defined in {@link XMLSignContext} an
+         * {@link XMLValidateContext} (see Supported Properties).
+         * <p>
+         * The following properties are set by default to the value
+         * {@link Boolean#TRUE} for the XML validation. If you want to switch
+         * these features off you must set the property value to
+         * {@link Boolean#FALSE} .
+         * <ul>
+         * <li><code>"org.jcp.xml.dsig.validateManifests"</code></li>
+         * <li><code>"javax.xml.crypto.dsig.cacheReference"</code></li>
+         * </ul>
+         */
+        private Map cryptoContextProperties;
+        /**
+         * Disallows that the incoming XML document contains DTD DOCTYPE
+         * declaration. The default value is {@link Boolean#TRUE} .
+         * 
+         * @param disallowDoctypeDecl
+         *            if set to {@link Boolean#FALSE} then DOCTYPE declaration
+         *            is allowed, otherwise not
+         */
+        private Boolean disallowDoctypeDecl;
+        /**
+         * Indicator whether the XML declaration in the outgoing message body
+         * should be omitted. Default value is <code>false</code>. Can be
+         * overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION} .
+         */
+        private Boolean omitXmlDeclaration;
+        /**
+         * Determines if the XML signature specific headers be cleared after
+         * signing and verification. Defaults to true.
+         */
+        private Boolean clearHeaders;
+        /**
+         * Classpath to the XML Schema. Must be specified in the detached XML
+         * Signature case for determining the ID attributes, might be set in 
the
+         * enveloped and enveloping case. If set, then the XML document is
+         * validated with the specified XML schema. The schema resource URI can
+         * be overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI} .
+         */
+        private String schemaResourceUri;
+        /**
+         * The character encoding of the resulting signed XML document. If
+         * <code>null</code> then the encoding of the original XML document is
+         * used.
+         */
+        private String outputXmlEncoding;
+
+        public CamelContext getCamelContext() {
+            return camelContext;
+        }
+
+        public void setCamelContext(CamelContext camelContext) {
+            this.camelContext = camelContext;
+        }
+
+        public KeyAccessor getKeyAccessor() {
+            return keyAccessor;
+        }
+
+        public void setKeyAccessor(KeyAccessor keyAccessor) {
+            this.keyAccessor = keyAccessor;
+        }
+
+        public AlgorithmMethod getCanonicalizationMethod() {
+            return canonicalizationMethod;
+        }
+
+        public void setCanonicalizationMethod(
+                AlgorithmMethod canonicalizationMethod) {
+            this.canonicalizationMethod = canonicalizationMethod;
+        }
+
+        public List getTransformMethods() {
+            return transformMethods;
+        }
+
+        public void setTransformMethods(List transformMethods) {
+            this.transformMethods = transformMethods;
+        }
+
+        public String getSignatureAlgorithm() {
+            return signatureAlgorithm;
+        }
+
+        public void setSignatureAlgorithm(String signatureAlgorithm) {
+            this.signatureAlgorithm = signatureAlgorithm;
+        }
+
+        public String getDigestAlgorithm() {
+            return digestAlgorithm;
+        }
+
+        public void setDigestAlgorithm(String digestAlgorithm) {
+            this.digestAlgorithm = digestAlgorithm;
+        }
+
+        public Boolean getAddKeyInfoReference() {
+            return addKeyInfoReference;
+        }
+
+        public void setAddKeyInfoReference(Boolean addKeyInfoReference) {
+            this.addKeyInfoReference = addKeyInfoReference;
+        }
+
+        public String getPrefixForXmlSignatureNamespace() {
+            return prefixForXmlSignatureNamespace;
+        }
+
+        public void setPrefixForXmlSignatureNamespace(
+                String prefixForXmlSignatureNamespace) {
+            this.prefixForXmlSignatureNamespace = 
prefixForXmlSignatureNamespace;
+        }
+
+        public String getParentLocalName() {
+            return parentLocalName;
+        }
+
+        public void setParentLocalName(String parentLocalName) {
+            this.parentLocalName = parentLocalName;
+        }
+
+        public String getParentNamespace() {
+            return parentNamespace;
+        }
+
+        public void setParentNamespace(String parentNamespace) {
+            this.parentNamespace = parentNamespace;
+        }
+
+        public String getContentObjectId() {
+            return contentObjectId;
+        }
+
+        public void setContentObjectId(String contentObjectId) {
+            this.contentObjectId = contentObjectId;
+        }
+
+        public String getSignatureId() {
+            return signatureId;
+        }
+
+        public void setSignatureId(String signatureId) {
+            this.signatureId = signatureId;
+        }
+
+        public String getContentReferenceUri() {
+            return contentReferenceUri;
+        }
+
+        public void setContentReferenceUri(String contentReferenceUri) {
+            this.contentReferenceUri = contentReferenceUri;
+        }
+
+        public String getContentReferenceType() {
+            return contentReferenceType;
+        }
+
+        public void setContentReferenceType(String contentReferenceType) {
+            this.contentReferenceType = contentReferenceType;
+        }
+
+        public Boolean getPlainText() {
+            return plainText;
+        }
+
+        public void setPlainText(Boolean plainText) {
+            this.plainText = plainText;
+        }
+
+        public String getPlainTextEncoding() {
+            return plainTextEncoding;
+        }
+
+        public void setPlainTextEncoding(String plainTextEncoding) {
+            this.plainTextEncoding = plainTextEncoding;
+        }
+
+        public XmlSignatureProperties getProperties() {
+            return properties;
+        }
+
+        public void setProperties(XmlSignatureProperties properties) {
+            this.properties = properties;
+        }
+
+        public String getKeyAccessorName() {
+            return keyAccessorName;
+        }
+
+        public void setKeyAccessorName(String keyAccessorName) {
+            this.keyAccessorName = keyAccessorName;
+        }
+
+        public String getCanonicalizationMethodName() {
+            return canonicalizationMethodName;
+        }
+
+        public void setCanonicalizationMethodName(
+                String canonicalizationMethodName) {
+            this.canonicalizationMethodName = canonicalizationMethodName;
+        }
+
+        public String getTransformMethodsName() {
+            return transformMethodsName;
+        }
+
+        public void setTransformMethodsName(String transformMethodsName) {
+            this.transformMethodsName = transformMethodsName;
+        }
+
+        public String getPropertiesName() {
+            return propertiesName;
+        }
+
+        public void setPropertiesName(String propertiesName) {
+            this.propertiesName = propertiesName;
+        }
+
+        public List getXpathsToIdAttributes() {
+            return xpathsToIdAttributes;
+        }
+
+        public void setXpathsToIdAttributes(List xpathsToIdAttributes) {
+            this.xpathsToIdAttributes = xpathsToIdAttributes;
+        }
+
+        public XPathFilterParameterSpec getParentXpath() {
+            return parentXpath;
+        }
+
+        public void setParentXpath(XPathFilterParameterSpec parentXpath) {
+            this.parentXpath = parentXpath;
+        }
+
+        public URIDereferencer getUriDereferencer() {
+            return uriDereferencer;
+        }
+
+        public void setUriDereferencer(URIDereferencer uriDereferencer) {
+            this.uriDereferencer = uriDereferencer;
+        }
+
+        public String getBaseUri() {
+            return baseUri;
+        }
+
+        public void setBaseUri(String baseUri) {
+            this.baseUri = baseUri;
+        }
+
+        public Map getCryptoContextProperties() {
+            return cryptoContextProperties;
+        }
+
+        public void setCryptoContextProperties(Map cryptoContextProperties) {
+            this.cryptoContextProperties = cryptoContextProperties;
+        }
+
+        public Boolean getDisallowDoctypeDecl() {
+            return disallowDoctypeDecl;
+        }
+
+        public void setDisallowDoctypeDecl(Boolean disallowDoctypeDecl) {
+            this.disallowDoctypeDecl = disallowDoctypeDecl;
+        }
+
+        public Boolean getOmitXmlDeclaration() {
+            return omitXmlDeclaration;
+        }
+
+        public void setOmitXmlDeclaration(Boolean omitXmlDeclaration) {
+            this.omitXmlDeclaration = omitXmlDeclaration;
+        }
+
+        public Boolean getClearHeaders() {
+            return clearHeaders;
+        }
+
+        public void setClearHeaders(Boolean clearHeaders) {
+            this.clearHeaders = clearHeaders;
+        }
+
+        public String getSchemaResourceUri() {
+            return schemaResourceUri;
+        }
+
+        public void setSchemaResourceUri(String schemaResourceUri) {
+            this.schemaResourceUri = schemaResourceUri;
+        }
+
+        public String getOutputXmlEncoding() {
+            return outputXmlEncoding;
+        }
+
+        public void setOutputXmlEncoding(String outputXmlEncoding) {
+            this.outputXmlEncoding = outputXmlEncoding;
+        }
+    }
+
+    public static class XmlVerifierConfigurationNestedConfiguration {
+        public static final Class CAMEL_NESTED_CLASS = 
org.apache.camel.component.xmlsecurity.processor.XmlVerifierConfiguration.class;
+        @NestedConfigurationProperty
+        private CamelContext camelContext;
+        /**
+         * Provides the key for validating the XML signature.
+         */
+        private KeySelector keySelector;
+        /**
+         * This interface allows the application to check the XML signature
+         * before the validation is executed. This step is recommended in
+         * http://www.w3.org/TR/xmldsig-bestpractices/#check-what-is-signed
+         */
+        @NestedConfigurationProperty
+        private XmlSignatureChecker xmlSignatureChecker;
+        /**
+         * Bean which maps the XML signature to the output-message after the
+         * validation. How this mapping should be done can be configured by the
+         * options outputNodeSearchType, outputNodeSearch, and
+         * removeSignatureElements. The default implementation offers three
+         * possibilities which are related to the three output node search 
types
+         * "Default", "ElementName", and "XPath". The default implementation
+         * determines a node which is then serialized and set to the body of 
the
+         * output message If the search type is "ElementName" then the output
+         * node (which must be in this case an element) is determined by the
+         * local name and namespace defined in the search value (see option
+         * outputNodeSearch). If the search type is "XPath" then the output 
node
+         * is determined by the XPath specified in the search value (in this
+         * case the output node can be of type "Element", "TextNode" or
+         * "Document"). If the output node search type is "Default" then the
+         * following rules apply: In the enveloped XML signature case (there is
+         * a reference with URI="" and transform
+         * "http://www.w3.org/2000/09/xmldsig#enveloped-signature";), the
+         * incoming XML document without the Signature element is set to the
+         * output message body. In the non-enveloped XML signature case, the
+         * message body is determined from a referenced Object; this is
+         * explained in more detail in chapter
+         * "Output Node Determination in Enveloping XML Signature Case".
+         */
+        @NestedConfigurationProperty
+        private XmlSignature2Message xmlSignature2Message;
+        /**
+         * Handles the different validation failed situations. The default
+         * implementation throws specific exceptions for the different
+         * situations (All exceptions have the package name
+         * org.apache.camel.component.xmlsecurity.api and are a sub-class of
+         * XmlSignatureInvalidException. If the signature value validation
+         * fails, a XmlSignatureInvalidValueException is thrown. If a reference
+         * validation fails, a XmlSignatureInvalidContentHashException is
+         * thrown. For more detailed information, see the JavaDoc.
+         */
+        @NestedConfigurationProperty
+        private ValidationFailedHandler validationFailedHandler;
+        /**
+         * Sets the output node search value for determining the node from the
+         * XML signature document which shall be set to the output message 
body.
+         * The class of the value depends on the type of the output node 
search.
+         * The output node search is forwarded to {@link XmlSignature2Message} 
.
+         */
+        private Object outputNodeSearch;
+        /**
+         * Determines the search type for determining the output node which is
+         * serialized into the output message bodyF. See
+         * {@link #setOutputNodeSearch(Object)} . The supported default search
+         * types you can find in {@link DefaultXmlSignature2Message} .
+         */
+        private String outputNodeSearchType = 
"DefaultXmlSignature2Message.OUTPUT_NODE_SEARCH_TYPE_DEFAULT";
+        /**
+         * Indicator whether the XML signature elements (elements with local
+         * name "Signature" and namesapce
+         * ""http://www.w3.org/2000/09/xmldsig#"";) shall be removed from the
+         * document set to the output message. Normally, this is only 
necessary,
+         * if the XML signature is enveloped. The default value is
+         * {@link Boolean#FALSE} . This parameter is forwarded to
+         * {@link XmlSignature2Message} .
+         * <p>
+         * This indicator has no effect if the output node search is of type
+         * {@link DefaultXmlSignature2Message#OUTPUT_NODE_SEARCH_TYPE_DEFAULT}
+         * .F
+         */
+        private Boolean removeSignatureElements;
+        /**
+         * Enables secure validation. If true then secure validation is 
enabled.
+         */
+        private Boolean secureValidation;
+        /**
+         * Name of handler to
+         * 
+         * @param validationFailedHandlerName
+         */
+        private String validationFailedHandlerName;
+        /**
+         * If you want to restrict the remote access via reference URIs, you 
can
+         * set an own dereferencer. Optional parameter. If not set the provider
+         * default dereferencer is used which can resolve URI fragments, HTTP,
+         * file and XPpointer URIs.
+         * <p>
+         * Attention: The implementation is provider dependent!
+         * 
+         * @seeXMLCryptoContext#setURIDereferencer(URIDereferencer)
+         */
+        private URIDereferencer uriDereferencer;
+        /**
+         * You can set a base URI which is used in the URI dereferencing.
+         * Relative URIs are then concatenated with the base URI.
+         * 
+         * @seeXMLCryptoContext#setBaseURI(String)
+         */
+        private String baseUri;
+        /**
+         * Sets the crypto context properties. See
+         * {@link XMLCryptoContext#setProperty(String,Object)} . Possible
+         * properties are defined in {@link XMLSignContext} an
+         * {@link XMLValidateContext} (see Supported Properties).
+         * <p>
+         * The following properties are set by default to the value
+         * {@link Boolean#TRUE} for the XML validation. If you want to switch
+         * these features off you must set the property value to
+         * {@link Boolean#FALSE} .
+         * <ul>
+         * <li><code>"org.jcp.xml.dsig.validateManifests"</code></li>
+         * <li><code>"javax.xml.crypto.dsig.cacheReference"</code></li>
+         * </ul>
+         */
+        private Map cryptoContextProperties;
+        /**
+         * Disallows that the incoming XML document contains DTD DOCTYPE
+         * declaration. The default value is {@link Boolean#TRUE} .
+         * 
+         * @param disallowDoctypeDecl
+         *            if set to {@link Boolean#FALSE} then DOCTYPE declaration
+         *            is allowed, otherwise not
+         */
+        private Boolean disallowDoctypeDecl;
+        /**
+         * Indicator whether the XML declaration in the outgoing message body
+         * should be omitted. Default value is <code>false</code>. Can be
+         * overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_OMIT_XML_DECLARATION} .
+         */
+        private Boolean omitXmlDeclaration;
+        /**
+         * Determines if the XML signature specific headers be cleared after
+         * signing and verification. Defaults to true.
+         */
+        private Boolean clearHeaders;
+        /**
+         * Classpath to the XML Schema. Must be specified in the detached XML
+         * Signature case for determining the ID attributes, might be set in 
the
+         * enveloped and enveloping case. If set, then the XML document is
+         * validated with the specified XML schema. The schema resource URI can
+         * be overwritten by the header
+         * {@link XmlSignatureConstants#HEADER_SCHEMA_RESOURCE_URI} .
+         */
+        private String schemaResourceUri;
+        /**
+         * The character encoding of the resulting signed XML document. If
+         * <code>null</code> then the encoding of the original XML document is
+         * used.
+         */
+        private String outputXmlEncoding;
+
+        public CamelContext getCamelContext() {
+            return camelContext;
+        }
+
+        public void setCamelContext(CamelContext camelContext) {
+            this.camelContext = camelContext;
+        }
+
+        public KeySelector getKeySelector() {
+            return keySelector;
+        }
+
+        public void setKeySelector(KeySelector keySelector) {
+            this.keySelector = keySelector;
+        }
+
+        public XmlSignatureChecker getXmlSignatureChecker() {
+            return xmlSignatureChecker;
+        }
+
+        public void setXmlSignatureChecker(
+                XmlSignatureChecker xmlSignatureChecker) {
+            this.xmlSignatureChecker = xmlSignatureChecker;
+        }
+
+        public XmlSignature2Message getXmlSignature2Message() {
+            return xmlSignature2Message;
+        }
+
+        public void setXmlSignature2Message(
+                XmlSignature2Message xmlSignature2Message) {
+            this.xmlSignature2Message = xmlSignature2Message;
+        }
+
+        public ValidationFailedHandler getValidationFailedHandler() {
+            return validationFailedHandler;
+        }
+
+        public void setValidationFailedHandler(
+                ValidationFailedHandler validationFailedHandler) {
+            this.validationFailedHandler = validationFailedHandler;
+        }
+
+        public Object getOutputNodeSearch() {
+            return outputNodeSearch;
+        }
+
+        public void setOutputNodeSearch(Object outputNodeSearch) {
+            this.outputNodeSearch = outputNodeSearch;
+        }
+
+        public String getOutputNodeSearchType() {
+            return outputNodeSearchType;
+        }
+
+        public void setOutputNodeSearchType(String outputNodeSearchType) {
+            this.outputNodeSearchType = outputNodeSearchType;
+        }
+
+        public Boolean getRemoveSignatureElements() {
+            return removeSignatureElements;
+        }
+
+        public void setRemoveSignatureElements(Boolean 
removeSignatureElements) {
+            this.removeSignatureElements = removeSignatureElements;
+        }
+
+        public Boolean getSecureValidation() {
+            return secureValidation;
+        }
+
+        public void setSecureValidation(Boolean secureValidation) {
+            this.secureValidation = secureValidation;
+        }
+
+        public String getValidationFailedHandlerName() {
+            return validationFailedHandlerName;
+        }
+
+        public void setValidationFailedHandlerName(
+                String validationFailedHandlerName) {
+            this.validationFailedHandlerName = validationFailedHandlerName;
+        }
+
+        public URIDereferencer getUriDereferencer() {
+            return uriDereferencer;
+        }
+
+        public void setUriDereferencer(URIDereferencer uriDereferencer) {
+            this.uriDereferencer = uriDereferencer;
+        }
+
+        public String getBaseUri() {
+            return baseUri;
+        }
+
+        public void setBaseUri(String baseUri) {
+            this.baseUri = baseUri;
+        }
+
+        public Map getCryptoContextProperties() {
+            return cryptoContextProperties;
+        }
+
+        public void setCryptoContextProperties(Map cryptoContextProperties) {
+            this.cryptoContextProperties = cryptoContextProperties;
+        }
+
+        public Boolean getDisallowDoctypeDecl() {
+            return disallowDoctypeDecl;
+        }
+
+        public void setDisallowDoctypeDecl(Boolean disallowDoctypeDecl) {
+            this.disallowDoctypeDecl = disallowDoctypeDecl;
+        }
+
+        public Boolean getOmitXmlDeclaration() {
+            return omitXmlDeclaration;
+        }
+
+        public void setOmitXmlDeclaration(Boolean omitXmlDeclaration) {
+            this.omitXmlDeclaration = omitXmlDeclaration;
+        }
+
+        public Boolean getClearHeaders() {
+            return clearHeaders;
+        }
+
+        public void setClearHeaders(Boolean clearHeaders) {
+            this.clearHeaders = clearHeaders;
+        }
+
+        public String getSchemaResourceUri() {
+            return schemaResourceUri;
+        }
+
+        public void setSchemaResourceUri(String schemaResourceUri) {
+            this.schemaResourceUri = schemaResourceUri;
+        }
+
+        public String getOutputXmlEncoding() {
+            return outputXmlEncoding;
+        }
+
+        public void setOutputXmlEncoding(String outputXmlEncoding) {
+            this.outputXmlEncoding = outputXmlEncoding;
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentAutoConfiguration.java
 
b/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentAutoConfiguration.java
index 354e12b..cea062f 100644
--- 
a/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentAutoConfiguration.java
+++ 
b/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentAutoConfiguration.java
@@ -44,6 +44,26 @@ public class YammerComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentConfiguration.java
 
b/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentConfiguration.java
index 1ba82a4..223d5bd 100644
--- 
a/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentConfiguration.java
+++ 
b/components-starter/camel-yammer-starter/src/main/java/org/apache/camel/component/yammer/springboot/YammerComponentConfiguration.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.yammer.springboot;
 
-import org.apache.camel.component.yammer.YammerConfiguration;
+import org.apache.camel.component.yammer.ApiRequestor;
+import org.apache.camel.component.yammer.YammerFunctionType;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
 
 /**
  * The yammer component allows you to interact with the Yammer enterprise 
social
@@ -43,7 +45,7 @@ public class YammerComponentConfiguration {
     /**
      * To use a shared yammer configuration
      */
-    private YammerConfiguration config;
+    private YammerConfigurationNestedConfiguration config;
 
     public String getConsumerKey() {
         return consumerKey;
@@ -69,11 +71,185 @@ public class YammerComponentConfiguration {
         this.accessToken = accessToken;
     }
 
-    public YammerConfiguration getConfig() {
+    public YammerConfigurationNestedConfiguration getConfig() {
         return config;
     }
 
-    public void setConfig(YammerConfiguration config) {
+    public void setConfig(YammerConfigurationNestedConfiguration config) {
         this.config = config;
     }
+
+    public static class YammerConfigurationNestedConfiguration {
+        public static final Class CAMEL_NESTED_CLASS = 
org.apache.camel.component.yammer.YammerConfiguration.class;
+        /**
+         * The consumer key
+         */
+        private String consumerKey;
+        /**
+         * The consumer secret
+         */
+        private String consumerSecret;
+        /**
+         * Delay between polling in millis
+         */
+        private Long delay;
+        /**
+         * The access token
+         */
+        private String accessToken;
+        /**
+         * The function to use
+         */
+        private YammerFunctionType functionType;
+        /**
+         * The function to use
+         */
+        private String function;
+        /**
+         * Set to true if you want to use raw JSON rather than converting to
+         * POJOs.
+         */
+        private Boolean useJson;
+        @NestedConfigurationProperty
+        private ApiRequestor requestor;
+        /**
+         * Return only the specified number of messages. Works for 
threaded=true
+         * and threaded=extended.
+         */
+        private Integer limit;
+        /**
+         * Returns messages older than the message ID specified as a numeric
+         * string. This is useful for paginating messages. For example, if
+         * you're currently viewing 20 messages and the oldest is number 2912,
+         * you could append "?olderThan=2912″ to your request to get the 20
+         * messages prior to those you're seeing.
+         */
+        private Integer olderThan;
+        /**
+         * Returns messages newer than the message ID specified as a numeric
+         * string. This should be used when polling for new messages. If you're
+         * looking at messages, and the most recent message returned is 3516,
+         * you can make a request with the parameter "?newerThan=3516″ to 
ensure
+         * that you do not get duplicate copies of messages already on your
+         * page.
+         */
+        private Integer newerThan;
+        /**
+         * threaded=true will only return the first message in each thread. 
This
+         * parameter is intended for apps which display message threads
+         * collapsed. threaded=extended will return the thread starter messages
+         * in order of most recently active as well as the two most recent
+         * messages, as they are viewed in the default view on the Yammer web
+         * interface.
+         */
+        private String threaded;
+        /**
+         * The user id
+         */
+        private String userId;
+
+        public String getConsumerKey() {
+            return consumerKey;
+        }
+
+        public void setConsumerKey(String consumerKey) {
+            this.consumerKey = consumerKey;
+        }
+
+        public String getConsumerSecret() {
+            return consumerSecret;
+        }
+
+        public void setConsumerSecret(String consumerSecret) {
+            this.consumerSecret = consumerSecret;
+        }
+
+        public Long getDelay() {
+            return delay;
+        }
+
+        public void setDelay(Long delay) {
+            this.delay = delay;
+        }
+
+        public String getAccessToken() {
+            return accessToken;
+        }
+
+        public void setAccessToken(String accessToken) {
+            this.accessToken = accessToken;
+        }
+
+        public YammerFunctionType getFunctionType() {
+            return functionType;
+        }
+
+        public void setFunctionType(YammerFunctionType functionType) {
+            this.functionType = functionType;
+        }
+
+        public String getFunction() {
+            return function;
+        }
+
+        public void setFunction(String function) {
+            this.function = function;
+        }
+
+        public Boolean getUseJson() {
+            return useJson;
+        }
+
+        public void setUseJson(Boolean useJson) {
+            this.useJson = useJson;
+        }
+
+        public ApiRequestor getRequestor() {
+            return requestor;
+        }
+
+        public void setRequestor(ApiRequestor requestor) {
+            this.requestor = requestor;
+        }
+
+        public Integer getLimit() {
+            return limit;
+        }
+
+        public void setLimit(Integer limit) {
+            this.limit = limit;
+        }
+
+        public Integer getOlderThan() {
+            return olderThan;
+        }
+
+        public void setOlderThan(Integer olderThan) {
+            this.olderThan = olderThan;
+        }
+
+        public Integer getNewerThan() {
+            return newerThan;
+        }
+
+        public void setNewerThan(Integer newerThan) {
+            this.newerThan = newerThan;
+        }
+
+        public String getThreaded() {
+            return threaded;
+        }
+
+        public void setThreaded(String threaded) {
+            this.threaded = threaded;
+        }
+
+        public String getUserId() {
+            return userId;
+        }
+
+        public void setUserId(String userId) {
+            this.userId = userId;
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentAutoConfiguration.java
 
b/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentAutoConfiguration.java
index 705bc04..3cc05f3 100644
--- 
a/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentAutoConfiguration.java
+++ 
b/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentAutoConfiguration.java
@@ -45,6 +45,26 @@ public class ZooKeeperComponentAutoConfiguration {
         Map<String, Object> parameters = new HashMap<>();
         IntrospectionSupport.getProperties(configuration, parameters, null,
                 false);
+        for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+            Object value = entry.getValue();
+            Class<?> paramClass = value.getClass();
+            if (paramClass.getName().endsWith("NestedConfiguration")) {
+                Class nestedClass = null;
+                try {
+                    nestedClass = (Class) paramClass.getDeclaredField(
+                            "CAMEL_NESTED_CLASS").get(null);
+                    HashMap<String, Object> nestedParameters = new HashMap<>();
+                    IntrospectionSupport.getProperties(value, nestedParameters,
+                            null, false);
+                    Object nestedProperty = nestedClass.newInstance();
+                    IntrospectionSupport.setProperties(camelContext,
+                            camelContext.getTypeConverter(), nestedProperty,
+                            nestedParameters);
+                    entry.setValue(nestedProperty);
+                } catch (NoSuchFieldException e) {
+                }
+            }
+        }
         IntrospectionSupport.setProperties(camelContext,
                 camelContext.getTypeConverter(), component, parameters);
         return component;

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
 
b/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
index 41906c0..57b177f 100644
--- 
a/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
+++ 
b/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
@@ -17,8 +17,8 @@
 package org.apache.camel.component.zookeeper.springboot;
 
 import java.util.List;
-import org.apache.camel.component.zookeeper.ZooKeeperConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import 
org.springframework.boot.context.properties.DeprecatedConfigurationProperty;
 
 /**
  * The zookeeper component allows interaction with a ZooKeeper cluster.
@@ -29,125 +29,147 @@ import 
org.springframework.boot.context.properties.ConfigurationProperties;
 public class ZooKeeperComponentConfiguration {
 
     /**
-     * To use a shared ZooKeeperConfiguration. Properties of the shared
-     * configuration can also be set individually.
+     * To use a shared ZooKeeperConfiguration
      */
-    private ZooKeeperConfiguration configuration;
-    /**
-     * The zookeeper server hosts
-     */
-    private List<String> servers;
-    /**
-     * The time interval to wait on connection before timing out.
-     */
-    private Integer timeout;
-    /**
-     * Whether the children of the node should be listed
-     */
-    private Boolean listChildren;
-    /**
-     * The node in the ZooKeeper server (aka znode)
-     */
-    private String path;
-    /**
-     * Should changes to the znode be 'watched' and repeatedly processed.
-     */
-    private Boolean repeat;
-    /**
-     * The time interval to backoff for after an error before retrying.
-     */
-    private long backoff;
-    /**
-     * Should the endpoint create the node if it does not currently exist.
-     */
-    private Boolean create;
-    /**
-     * The create mode that should be used for the newly created node
-     */
-    private String createMode;
-    /**
-     * Upon the delete of a znode should an empty message be send to the
-     * consumer
-     */
-    private Boolean sendEmptyMessageOnDelete;
+    private ZooKeeperConfigurationNestedConfiguration configuration;
 
-    public ZooKeeperConfiguration getConfiguration() {
+    public ZooKeeperConfigurationNestedConfiguration getConfiguration() {
         return configuration;
     }
 
-    public void setConfiguration(ZooKeeperConfiguration configuration) {
+    public void setConfiguration(
+            ZooKeeperConfigurationNestedConfiguration configuration) {
         this.configuration = configuration;
     }
 
-    public List<String> getServers() {
-        return servers;
-    }
-
-    public void setServers(List<String> servers) {
-        this.servers = servers;
-    }
-
-    public Integer getTimeout() {
-        return timeout;
-    }
-
-    public void setTimeout(Integer timeout) {
-        this.timeout = timeout;
-    }
-
-    public Boolean getListChildren() {
-        return listChildren;
-    }
-
-    public void setListChildren(Boolean listChildren) {
-        this.listChildren = listChildren;
-    }
-
-    public String getPath() {
-        return path;
-    }
-
-    public void setPath(String path) {
-        this.path = path;
-    }
-
-    public Boolean getRepeat() {
-        return repeat;
-    }
-
-    public void setRepeat(Boolean repeat) {
-        this.repeat = repeat;
-    }
-
-    public long getBackoff() {
-        return backoff;
-    }
-
-    public void setBackoff(long backoff) {
-        this.backoff = backoff;
-    }
-
-    public Boolean getCreate() {
-        return create;
-    }
-
-    public void setCreate(Boolean create) {
-        this.create = create;
-    }
-
-    public String getCreateMode() {
-        return createMode;
-    }
-
-    public void setCreateMode(String createMode) {
-        this.createMode = createMode;
-    }
-
-    public Boolean getSendEmptyMessageOnDelete() {
-        return sendEmptyMessageOnDelete;
-    }
-
-    public void setSendEmptyMessageOnDelete(Boolean sendEmptyMessageOnDelete) {
-        this.sendEmptyMessageOnDelete = sendEmptyMessageOnDelete;
+    public static class ZooKeeperConfigurationNestedConfiguration {
+        public static final Class CAMEL_NESTED_CLASS = 
org.apache.camel.component.zookeeper.ZooKeeperConfiguration.class;
+        /**
+         * The zookeeper server hosts
+         */
+        private List servers;
+        /**
+         * The time interval to wait on connection before timing out.
+         */
+        private Integer timeout;
+        /**
+         * Whether the children of the node should be listed
+         */
+        private Boolean listChildren;
+        /**
+         * The node in the ZooKeeper server (aka znode)
+         */
+        private String path;
+        /**
+         * Should changes to the znode be 'watched' and repeatedly processed.
+         */
+        private Boolean repeat;
+        /**
+         * Not in use
+         * 
+         * @deprecated The usage of this option has no effect at all.
+         */
+        @Deprecated
+        private Boolean awaitExistence;
+        /**
+         * The time interval to backoff for after an error before retrying.
+         */
+        private Long backoff;
+        /**
+         * Should the endpoint create the node if it does not currently exist.
+         */
+        private Boolean create;
+        /**
+         * The create mode that should be used for the newly created node
+         */
+        private String createMode = "EPHEMERAL";
+        /**
+         * Upon the delete of a znode, should an empty message be send to the
+         * consumer
+         */
+        private Boolean sendEmptyMessageOnDelete;
+
+        public List getServers() {
+            return servers;
+        }
+
+        public void setServers(List servers) {
+            this.servers = servers;
+        }
+
+        public Integer getTimeout() {
+            return timeout;
+        }
+
+        public void setTimeout(Integer timeout) {
+            this.timeout = timeout;
+        }
+
+        public Boolean getListChildren() {
+            return listChildren;
+        }
+
+        public void setListChildren(Boolean listChildren) {
+            this.listChildren = listChildren;
+        }
+
+        public String getPath() {
+            return path;
+        }
+
+        public void setPath(String path) {
+            this.path = path;
+        }
+
+        public Boolean getRepeat() {
+            return repeat;
+        }
+
+        public void setRepeat(Boolean repeat) {
+            this.repeat = repeat;
+        }
+
+        @Deprecated
+        @DeprecatedConfigurationProperty
+        public Boolean getAwaitExistence() {
+            return awaitExistence;
+        }
+
+        @Deprecated
+        public void setAwaitExistence(Boolean awaitExistence) {
+            this.awaitExistence = awaitExistence;
+        }
+
+        public Long getBackoff() {
+            return backoff;
+        }
+
+        public void setBackoff(Long backoff) {
+            this.backoff = backoff;
+        }
+
+        public Boolean getCreate() {
+            return create;
+        }
+
+        public void setCreate(Boolean create) {
+            this.create = create;
+        }
+
+        public String getCreateMode() {
+            return createMode;
+        }
+
+        public void setCreateMode(String createMode) {
+            this.createMode = createMode;
+        }
+
+        public Boolean getSendEmptyMessageOnDelete() {
+            return sendEmptyMessageOnDelete;
+        }
+
+        public void setSendEmptyMessageOnDelete(Boolean 
sendEmptyMessageOnDelete) {
+            this.sendEmptyMessageOnDelete = sendEmptyMessageOnDelete;
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components/camel-avro/src/main/docs/avro-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/docs/avro-component.adoc 
b/components/camel-avro/src/main/docs/avro-component.adoc
index 8dab9c5..7d46a25 100644
--- a/components/camel-avro/src/main/docs/avro-component.adoc
+++ b/components/camel-avro/src/main/docs/avro-component.adoc
@@ -181,7 +181,7 @@ Avro RPC URI Options
 
 
 // component options: START
-The Avro component supports 11 options which are listed below.
+The Avro component supports 1 options which are listed below.
 
 
 
@@ -189,17 +189,7 @@ The Avro component supports 11 options which are listed 
below.
 [width="100%",cols="2,1m,7",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | AvroConfiguration | To use a shared AvroConfiguration to 
configure options once. Properties of the shared configuration can also be set 
individually.
-| host | String | Hostname to use
-| port | int | Port number to use
-| protocol | Protocol | Avro protocol to use
-| transport | String | Transport to use
-| protocolLocation | String | Avro protocol location
-| protocolClassName | String | Avro protocol to use defined by the FQN class 
name
-| messageName | String | The name of the message to send.
-| uriAuthority | String | Authority to use (username and password)
-| reflectionProtocol | boolean | If protocol object provided is reflection 
protocol. Should be used only with protocol parameter because for 
protocolClassName protocol type will be auto detected
-| singleParameter | boolean | If true consumer parameter won't be wrapped into 
array. Will fail if protocol specifies more then 1 parameter for the message
+| configuration | AvroConfiguration | To use a shared AvroConfiguration to 
configure options once
 |=======================================================================
 {% endraw %}
 // component options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components/camel-box/src/main/docs/box-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/docs/box-component.adoc 
b/components/camel-box/src/main/docs/box-component.adoc
index 7457d65..f21de5b 100644
--- a/components/camel-box/src/main/docs/box-component.adoc
+++ b/components/camel-box/src/main/docs/box-component.adoc
@@ -42,7 +42,7 @@ Box Options
 
 
 // component options: START
-The Box component supports 17 options which are listed below.
+The Box component supports 1 options which are listed below.
 
 
 
@@ -50,23 +50,7 @@ The Box component supports 17 options which are listed below.
 [width="100%",cols="2,1m,7",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | BoxConfiguration | To use the shared configuration. 
Properties of the shared configuration can also be set individually.
-| apiName | BoxApiName | What kind of operation to perform
-| methodName | String | What sub operation to use for the selected operation
-| clientId | String | Box application client ID
-| clientSecret | String | Box application client secret
-| authSecureStorage | IAuthSecureStorage | OAuth Secure Storage callback can 
be used to provide and or save OAuth tokens. The callback may return null on 
first call to allow the component to login and authorize application and obtain 
an OAuth token which can then be saved in the secure storage. For the component 
to be able to create a token automatically a user password must be provided.
-| userName | String | Box user name MUST be provided
-| userPassword | String | Box user password MUST be provided if 
authSecureStorage is not set or returns null on first call
-| refreshListener | OAuthRefreshListener | OAuth listener for token updates if 
the Camel application needs to use the access token outside the route
-| revokeOnShutdown | boolean | Flag to revoke OAuth refresh token on route 
shutdown default false. Will require a fresh refresh token on restart using 
either a custom IAuthSecureStorage or automatic component login by providing a 
user password
-| sharedLink | String | Box shared link for shared endpoints can be a link for 
a shared comment file or folder
-| sharedPassword | String | Password associated with the shared link MUST be 
provided with sharedLink
-| boxConfig | IBoxConfig | Custom Box SDK configuration not required normally
-| connectionManagerBuilder | BoxConnectionManagerBuilder | Custom Box 
connection manager builder used to override default settings like max 
connections for underlying HttpClient.
-| httpParams | Map | Custom HTTP params for settings like proxy host
-| sslContextParameters | SSLContextParameters | To configure security using 
SSLContextParameters.
-| loginTimeout | int | Amount of time the component will wait for a response 
from Box.com default is 30 seconds
+| configuration | BoxConfiguration | To use the shared configuration
 |=======================================================================
 {% endraw %}
 // component options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components/camel-braintree/src/main/docs/braintree-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-braintree/src/main/docs/braintree-component.adoc 
b/components/camel-braintree/src/main/docs/braintree-component.adoc
index 0e3142e..c985c87 100644
--- a/components/camel-braintree/src/main/docs/braintree-component.adoc
+++ b/components/camel-braintree/src/main/docs/braintree-component.adoc
@@ -39,7 +39,7 @@ Braintree Options
 
 
 // component options: START
-The Braintree component supports 12 options which are listed below.
+The Braintree component supports 1 options which are listed below.
 
 
 
@@ -47,18 +47,7 @@ The Braintree component supports 12 options which are listed 
below.
 [width="100%",cols="2,1m,7",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | BraintreeConfiguration | To use the shared configuration. 
Properties of the shared configuration can also be set individually.
-| apiName | BraintreeApiName | What kind of operation to perform
-| methodName | String | What sub operation to use for the selected operation
-| environment | String | The environment Either SANDBOX or PRODUCTION
-| merchantId | String | The merchant id provided by Braintree.
-| publicKey | String | The public key provided by Braintree.
-| privateKey | String | The private key provided by Braintree.
-| proxyHost | String | The proxy host
-| proxyPort | Integer | The proxy port
-| httpLogLevel | String | Set logging level for http calls see 
java.util.logging.Level
-| httpLogName | String | Set log category to use to log http calls default 
Braintree
-| httpReadTimeout | Integer | Set read timeout for http calls.
+| configuration | BraintreeConfiguration | To use the shared configuration
 |=======================================================================
 {% endraw %}
 // component options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/d485f2f0/components/camel-cache/src/main/docs/cache-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/docs/cache-component.adoc 
b/components/camel-cache/src/main/docs/cache-component.adoc
index 063f456..9b1f336 100644
--- a/components/camel-cache/src/main/docs/cache-component.adoc
+++ b/components/camel-cache/src/main/docs/cache-component.adoc
@@ -50,7 +50,7 @@ Options
 
 
 // component options: START
-The EHCache component supports 15 options which are listed below.
+The EHCache component supports 3 options which are listed below.
 
 
 
@@ -59,20 +59,8 @@ The EHCache component supports 15 options which are listed 
below.
 |=======================================================================
 | Name | Java Type | Description
 | cacheManagerFactory | CacheManagerFactory | To use the given 
CacheManagerFactory for creating the CacheManager. By default the 
DefaultCacheManagerFactory is used.
-| configuration | CacheConfiguration | Sets the Cache configuration. 
Properties of the shared configuration can also be set individually.
+| configuration | CacheConfiguration | Sets the Cache configuration
 | configurationFile | String | Sets the location of the ehcache.xml file to 
load from classpath or file system. By default the file is loaded from 
classpath:ehcache.xml
-| cacheName | String | Name of the cache
-| maxElementsInMemory | int | The number of elements that may be stored in the 
defined cache in memory.
-| memoryStoreEvictionPolicy | MemoryStoreEvictionPolicy | Which eviction 
strategy to use when maximum number of elements in memory is reached. The 
strategy defines which elements to be removed. LRU - Lest Recently Used LFU - 
Lest Frequently Used FIFO - First In First Out
-| overflowToDisk | boolean | Specifies whether cache may overflow to disk
-| eternal | boolean | Sets whether elements are eternal. If eternal timeouts 
are ignored and the element never expires.
-| timeToLiveSeconds | long | The maximum time between creation time and when 
an element expires. Is used only if the element is not eternal
-| timeToIdleSeconds | long | The maximum amount of time between accesses 
before an element expires
-| diskPersistent | boolean | Whether the disk store persists between restarts 
of the application.
-| diskExpiryThreadIntervalSeconds | long | The number of seconds between runs 
of the disk expiry thread.
-| eventListenerRegistry | CacheEventListenerRegistry | To configure event 
listeners using the CacheEventListenerRegistry
-| cacheLoaderRegistry | CacheLoaderRegistry | To configure cache loader using 
the CacheLoaderRegistry
-| objectCache | boolean | Whether to turn on allowing to store non 
serializable objects in the cache. If this option is enabled then overflow to 
disk cannot be enabled as well.
 |=======================================================================
 {% endraw %}
 // component options: END

Reply via email to