You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/08/02 06:43:29 UTC

[01/11] camel git commit: CAMEL-10197: Fix for camel-avro configuration

Repository: camel
Updated Branches:
  refs/heads/master 089f93edb -> 018b3e160


CAMEL-10197: Fix for camel-avro configuration


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

Branch: refs/heads/master
Commit: 018b3e160f37ff5f445eecde7ce26970e6592658
Parents: 519765f
Author: Nicola Ferraro <ni...@gmail.com>
Authored: Mon Aug 1 23:42:34 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Aug 2 08:13:50 2016 +0200

----------------------------------------------------------------------
 .../camel/component/avro/AvroComponent.java     | 49 +++++++++++---------
 1 file changed, 28 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/018b3e16/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
index cea618f..c541107 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
@@ -167,8 +167,15 @@ public class AvroComponent extends UriEndpointComponent {
         this.configuration = configuration;
     }
 
+    private AvroConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new AvroConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
     public String getHost() {
-        return configuration.getHost();
+        return getConfigurationOrCreate().getHost();
     }
 
     /**
@@ -176,11 +183,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param host
      */
     public void setHost(String host) {
-        configuration.setHost(host);
+        getConfigurationOrCreate().setHost(host);
     }
 
     public int getPort() {
-        return configuration.getPort();
+        return getConfigurationOrCreate().getPort();
     }
 
     /**
@@ -188,11 +195,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param port
      */
     public void setPort(int port) {
-        configuration.setPort(port);
+        getConfigurationOrCreate().setPort(port);
     }
 
     public Protocol getProtocol() {
-        return configuration.getProtocol();
+        return getConfigurationOrCreate().getProtocol();
     }
 
     /**
@@ -200,11 +207,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param protocol
      */
     public void setProtocol(Protocol protocol) {
-        configuration.setProtocol(protocol);
+        getConfigurationOrCreate().setProtocol(protocol);
     }
 
     public AvroTransport getTransport() {
-        return configuration.getTransport();
+        return getConfigurationOrCreate().getTransport();
     }
 
     /**
@@ -212,15 +219,15 @@ public class AvroComponent extends UriEndpointComponent {
      * @param transport
      */
     public void setTransport(String transport) {
-        configuration.setTransport(transport);
+        getConfigurationOrCreate().setTransport(transport);
     }
 
     public void setTransport(AvroTransport transport) {
-        configuration.setTransport(transport);
+        getConfigurationOrCreate().setTransport(transport);
     }
 
     public String getProtocolLocation() {
-        return configuration.getProtocolLocation();
+        return getConfigurationOrCreate().getProtocolLocation();
     }
 
     /**
@@ -228,11 +235,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param protocolLocation
      */
     public void setProtocolLocation(String protocolLocation) {
-        configuration.setProtocolLocation(protocolLocation);
+        getConfigurationOrCreate().setProtocolLocation(protocolLocation);
     }
 
     public String getProtocolClassName() {
-        return configuration.getProtocolClassName();
+        return getConfigurationOrCreate().getProtocolClassName();
     }
 
     /**
@@ -240,11 +247,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param protocolClassName
      */
     public void setProtocolClassName(String protocolClassName) {
-        configuration.setProtocolClassName(protocolClassName);
+        getConfigurationOrCreate().setProtocolClassName(protocolClassName);
     }
 
     public String getMessageName() {
-        return configuration.getMessageName();
+        return getConfigurationOrCreate().getMessageName();
     }
 
     /**
@@ -252,11 +259,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param messageName
      */
     public void setMessageName(String messageName) {
-        configuration.setMessageName(messageName);
+        getConfigurationOrCreate().setMessageName(messageName);
     }
 
     public String getUriAuthority() {
-        return configuration.getUriAuthority();
+        return getConfigurationOrCreate().getUriAuthority();
     }
 
     /**
@@ -264,11 +271,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param uriAuthority
      */
     public void setUriAuthority(String uriAuthority) {
-        configuration.setUriAuthority(uriAuthority);
+        getConfigurationOrCreate().setUriAuthority(uriAuthority);
     }
 
     public boolean isReflectionProtocol() {
-        return configuration.isReflectionProtocol();
+        return getConfigurationOrCreate().isReflectionProtocol();
     }
 
     /**
@@ -276,11 +283,11 @@ public class AvroComponent extends UriEndpointComponent {
      * @param isReflectionProtocol
      */
     public void setReflectionProtocol(boolean isReflectionProtocol) {
-        configuration.setReflectionProtocol(isReflectionProtocol);
+        getConfigurationOrCreate().setReflectionProtocol(isReflectionProtocol);
     }
 
     public boolean isSingleParameter() {
-        return configuration.isSingleParameter();
+        return getConfigurationOrCreate().isSingleParameter();
     }
 
     /**
@@ -288,6 +295,6 @@ public class AvroComponent extends UriEndpointComponent {
      * @param singleParameter
      */
     public void setSingleParameter(boolean singleParameter) {
-        configuration.setSingleParameter(singleParameter);
+        getConfigurationOrCreate().setSingleParameter(singleParameter);
     }
 }


[11/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
CAMEL-10197: Added plain get/set to components for spring-boot configuration


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

Branch: refs/heads/master
Commit: bdab2fc632afa9270a7ca79ea55952887e56f644
Parents: 089f93e
Author: Nicola Ferraro <ni...@gmail.com>
Authored: Mon Aug 1 18:27:09 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Aug 2 08:13:50 2016 +0200

----------------------------------------------------------------------
 components/camel-avro/src/main/docs/avro.adoc   |  18 +-
 .../camel/component/avro/AvroComponent.java     | 140 ++-
 .../springboot/AvroComponentConfiguration.java  | 127 ++-
 components/camel-box/src/main/docs/box.adoc     |  24 +-
 .../camel/component/box/BoxComponent.java       | 214 ++++-
 .../springboot/BoxComponentConfiguration.java   | 216 ++++-
 .../src/main/docs/braintree.adoc                |  17 +-
 .../component/braintree/BraintreeComponent.java | 150 +++-
 .../BraintreeComponentConfiguration.java        | 136 ++-
 components/camel-cache/src/main/docs/cache.adoc |  16 +-
 .../camel/component/cache/CacheComponent.java   | 155 +++-
 .../springboot/CacheComponentConfiguration.java | 156 ++++
 .../crypto/DigitalSignatureComponent.java       | 344 ++++++-
 .../DigitalSignatureComponentConfiguration.java | 273 +++++-
 .../camel/component/docker/DockerComponent.java | 181 +++-
 .../DockerComponentConfiguration.java           | 185 +++-
 .../camel-facebook/src/main/docs/facebook.adoc  |  33 +-
 .../component/facebook/FacebookComponent.java   | 326 ++++++-
 .../FacebookComponentConfiguration.java         | 329 ++++++-
 .../camel-ganglia/src/main/docs/ganglia.adoc    |  20 +-
 .../component/ganglia/GangliaComponent.java     | 182 +++-
 .../GangliaComponentConfiguration.java          | 180 +++-
 .../src/main/docs/google-calendar.adoc          |  17 +-
 .../calendar/GoogleCalendarComponent.java       | 144 ++-
 .../GoogleCalendarComponentConfiguration.java   | 145 ++-
 .../src/main/docs/google-drive.adoc             |  14 +-
 .../google/drive/GoogleDriveComponent.java      | 108 ++-
 .../GoogleDriveComponentConfiguration.java      | 106 ++-
 .../src/main/docs/google-mail.adoc              |  14 +-
 .../google/mail/GoogleMailComponent.java        | 108 ++-
 .../GoogleMailComponentConfiguration.java       | 106 ++-
 .../camel-kestrel/src/main/docs/kestrel.adoc    |   7 +-
 .../component/kestrel/KestrelComponent.java     |  38 +
 .../component/kestrel/KestrelConfiguration.java |   9 +
 .../KestrelComponentConfiguration.java          |  36 +
 .../src/main/docs/linkedin.adoc                 |  15 +-
 .../component/linkedin/LinkedInComponent.java   | 155 +++-
 .../LinkedInComponentConfiguration.java         | 144 +++
 .../camel-lucene/src/main/docs/lucene.adoc      |  12 +-
 .../camel/component/lucene/LuceneComponent.java |  85 +-
 .../LuceneComponentConfiguration.java           |  84 +-
 components/camel-mail/src/main/docs/imap.adoc   |  44 +-
 components/camel-mail/src/main/docs/imaps.adoc  |  44 +-
 components/camel-mail/src/main/docs/pop3.adoc   |  44 +-
 components/camel-mail/src/main/docs/pop3s.adoc  |  44 +-
 components/camel-mail/src/main/docs/smtp.adoc   |  44 +-
 components/camel-mail/src/main/docs/smtps.adoc  |  44 +-
 .../camel/component/mail/MailComponent.java     | 486 +++++++++-
 .../springboot/MailComponentConfiguration.java  | 494 +++++++++-
 components/camel-mina/src/main/docs/mina.adoc   |  26 +-
 .../camel/component/mina/MinaComponent.java     | 271 +++++-
 .../springboot/MinaComponentConfiguration.java  | 273 +++++-
 components/camel-mina2/src/main/docs/mina2.adoc |  31 +-
 .../camel/component/mina2/Mina2Component.java   | 336 ++++++-
 .../springboot/Mina2ComponentConfiguration.java | 337 ++++++-
 .../camel-nagios/src/main/docs/nagios.adoc      |  12 +-
 .../camel/component/nagios/NagiosComponent.java |  77 +-
 .../NagiosComponentConfiguration.java           |  76 +-
 components/camel-netty/src/main/docs/netty.adoc |  69 +-
 .../camel/component/netty/NettyComponent.java   | 815 ++++++++++++++++-
 .../springboot/NettyComponentConfiguration.java | 856 ++++++++++++++++++
 .../camel-netty4/src/main/docs/netty4.adoc      |  72 +-
 .../camel/component/netty4/NettyComponent.java  | 851 +++++++++++++++++-
 .../springboot/NettyComponentConfiguration.java | 897 +++++++++++++++++++
 .../src/main/docs/olingo2.adoc                  |  16 +-
 .../component/olingo2/Olingo2Component.java     | 130 ++-
 .../Olingo2ComponentConfiguration.java          | 137 ++-
 .../src/main/docs/salesforce.adoc               |  49 +-
 .../salesforce/SalesforceComponent.java         | 493 +++++++++-
 .../SalesforceComponentConfiguration.java       | 489 +++++++++-
 components/camel-smpp/src/main/docs/smpp.adoc   |  41 +-
 .../camel/component/smpp/SmppComponent.java     | 557 +++++++++++-
 .../springboot/SmppComponentConfiguration.java  | 499 ++++++++++-
 .../src/main/docs/xmlsecurity.adoc              |  49 +-
 .../xmlsecurity/XmlSignatureComponent.java      | 747 ++++++++++++++-
 .../XmlSignatureComponentConfiguration.java     | 662 +++++++++++++-
 .../component/zookeeper/ZooKeeperComponent.java | 121 ++-
 .../zookeeper/ZooKeeperConfiguration.java       |   3 +
 .../ZooKeeperComponentConfiguration.java        | 113 ++-
 79 files changed, 14992 insertions(+), 126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-avro/src/main/docs/avro.adoc
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/docs/avro.adoc b/components/camel-avro/src/main/docs/avro.adoc
index c3b8ba4..96b96ff 100644
--- a/components/camel-avro/src/main/docs/avro.adoc
+++ b/components/camel-avro/src/main/docs/avro.adoc
@@ -177,8 +177,10 @@ Avro RPC URI Options
 ^^^^^^^^^^^^^^^^^^^^
 
 
+
+
 // component options: START
-The Avro component supports 1 options which are listed below.
+The Avro component supports 11 options which are listed below.
 
 
 
@@ -186,13 +188,25 @@ The Avro component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | AvroConfiguration | To use a shared AvroConfiguration to configure options once
+| 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
 |=======================================================================
 {% endraw %}
 // component options: END
 
 
 
+
+
 // endpoint options: START
 The Avro component supports 14 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
index 108348b..cea618f 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/component/avro/AvroComponent.java
@@ -89,7 +89,7 @@ public class AvroComponent extends UriEndpointComponent {
                 try {
                     Field f = protocolClass.getField("PROTOCOL");
                     if (f != null) {
-                        Protocol protocol = (Protocol)f.get(null);
+                        Protocol protocol = (Protocol) f.get(null);
                         config.setProtocol(protocol);
                     }
                 } catch (NoSuchFieldException e) {
@@ -110,9 +110,9 @@ public class AvroComponent extends UriEndpointComponent {
 
         if (config.isSingleParameter()) {
             Map<String, Protocol.Message> messageMap = config.getProtocol().getMessages();
-            Iterable<Protocol.Message> messagesToCheck = config.getMessageName() == null 
-                ? messageMap.values() 
-                : Collections.singleton(messageMap.get(config.getMessageName()));
+            Iterable<Protocol.Message> messagesToCheck = config.getMessageName() == null
+                    ? messageMap.values()
+                    : Collections.singleton(messageMap.get(config.getMessageName()));
             for (Protocol.Message message : messagesToCheck) {
                 if (message.getRequest().getFields().size() != 1) {
                     throw new IllegalArgumentException("Single parameter option can't be used with message "
@@ -123,12 +123,12 @@ public class AvroComponent extends UriEndpointComponent {
             }
         }
     }
-    
+
     /**
      * Registers new responder with uri as key. Registers consumer in responder.
      * In case if responder is already registered by this uri then just
      * registers consumer.
-     * 
+     *
      * @param uri URI of the endpoint without message name
      * @param messageName message name
      * @param consumer consumer that will be registered in providers` registry
@@ -142,7 +142,7 @@ public class AvroComponent extends UriEndpointComponent {
         }
         listener.register(messageName, consumer);
     }
-    
+
     /**
      * Calls unregister of consumer by appropriate message name.
      * In case if all consumers are unregistered then it removes responder from the registry.
@@ -161,9 +161,133 @@ public class AvroComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared {@link AvroConfiguration} to configure options once
+     * To use a shared {@link AvroConfiguration} to configure options once. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(AvroConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return configuration.getHost();
+    }
+
+    /**
+     * Hostname to use
+     * @param host
+     */
+    public void setHost(String host) {
+        configuration.setHost(host);
+    }
+
+    public int getPort() {
+        return configuration.getPort();
+    }
+
+    /**
+     * Port number to use
+     * @param port
+     */
+    public void setPort(int port) {
+        configuration.setPort(port);
+    }
+
+    public Protocol getProtocol() {
+        return configuration.getProtocol();
+    }
+
+    /**
+     * Avro protocol to use
+     * @param protocol
+     */
+    public void setProtocol(Protocol protocol) {
+        configuration.setProtocol(protocol);
+    }
+
+    public AvroTransport getTransport() {
+        return configuration.getTransport();
+    }
+
+    /**
+     * Transport to use
+     * @param transport
+     */
+    public void setTransport(String transport) {
+        configuration.setTransport(transport);
+    }
+
+    public void setTransport(AvroTransport transport) {
+        configuration.setTransport(transport);
+    }
+
+    public String getProtocolLocation() {
+        return configuration.getProtocolLocation();
+    }
+
+    /**
+     * Avro protocol location
+     * @param protocolLocation
+     */
+    public void setProtocolLocation(String protocolLocation) {
+        configuration.setProtocolLocation(protocolLocation);
+    }
+
+    public String getProtocolClassName() {
+        return configuration.getProtocolClassName();
+    }
+
+    /**
+     * Avro protocol to use defined by the FQN class name
+     * @param protocolClassName
+     */
+    public void setProtocolClassName(String protocolClassName) {
+        configuration.setProtocolClassName(protocolClassName);
+    }
+
+    public String getMessageName() {
+        return configuration.getMessageName();
+    }
+
+    /**
+     * The name of the message to send.
+     * @param messageName
+     */
+    public void setMessageName(String messageName) {
+        configuration.setMessageName(messageName);
+    }
+
+    public String getUriAuthority() {
+        return configuration.getUriAuthority();
+    }
+
+    /**
+     * Authority to use (username and password)
+     * @param uriAuthority
+     */
+    public void setUriAuthority(String uriAuthority) {
+        configuration.setUriAuthority(uriAuthority);
+    }
+
+    public boolean isReflectionProtocol() {
+        return configuration.isReflectionProtocol();
+    }
+
+    /**
+     * If protocol object provided is reflection protocol. Should be used only with protocol parameter because for protocolClassName protocol type will be auto detected
+     * @param isReflectionProtocol
+     */
+    public void setReflectionProtocol(boolean isReflectionProtocol) {
+        configuration.setReflectionProtocol(isReflectionProtocol);
+    }
+
+    public boolean isSingleParameter() {
+        return configuration.isSingleParameter();
+    }
+
+    /**
+     * If true, consumer parameter won't be wrapped into array. Will fail if protocol specifies more then 1 parameter for the message
+     * @param singleParameter
+     */
+    public void setSingleParameter(boolean singleParameter) {
+        configuration.setSingleParameter(singleParameter);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-avro/src/main/java/org/apache/camel/component/avro/springboot/AvroComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-avro/src/main/java/org/apache/camel/component/avro/springboot/AvroComponentConfiguration.java b/components/camel-avro/src/main/java/org/apache/camel/component/avro/springboot/AvroComponentConfiguration.java
index 7d13a39..edb360e 100644
--- a/components/camel-avro/src/main/java/org/apache/camel/component/avro/springboot/AvroComponentConfiguration.java
+++ b/components/camel-avro/src/main/java/org/apache/camel/component/avro/springboot/AvroComponentConfiguration.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.avro.springboot;
 
+import org.apache.avro.Protocol;
 import org.apache.camel.component.avro.AvroConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
@@ -28,9 +29,53 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class AvroComponentConfiguration {
 
     /**
-     * To use a shared AvroConfiguration to configure options once
+     * To use a shared AvroConfiguration to configure options once. Properties
+     * of the shared configuration can also be set individually.
      */
     private AvroConfiguration configuration;
+    /**
+     * Hostname to use
+     */
+    private String host;
+    /**
+     * Port number to use
+     */
+    private Integer port;
+    /**
+     * Avro protocol to use
+     */
+    private Protocol protocol;
+    /**
+     * Transport to use
+     */
+    private String transport;
+    /**
+     * Avro protocol location
+     */
+    private String protocolLocation;
+    /**
+     * Avro protocol to use defined by the FQN class name
+     */
+    private String protocolClassName;
+    /**
+     * The name of the message to send.
+     */
+    private String messageName;
+    /**
+     * Authority to use (username and password)
+     */
+    private String uriAuthority;
+    /**
+     * If protocol object provided is reflection protocol. Should be used only
+     * with protocol parameter because for protocolClassName protocol type will
+     * be auto detected
+     */
+    private Boolean reflectionProtocol = false;
+    /**
+     * If true consumer parameter won't be wrapped into array. Will fail if
+     * protocol specifies more then 1 parameter for the message
+     */
+    private Boolean singleParameter = false;
 
     public AvroConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +84,84 @@ public class AvroComponentConfiguration {
     public void setConfiguration(AvroConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Protocol getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(Protocol protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getTransport() {
+        return transport;
+    }
+
+    public void setTransport(String transport) {
+        this.transport = transport;
+    }
+
+    public String getProtocolLocation() {
+        return protocolLocation;
+    }
+
+    public void setProtocolLocation(String protocolLocation) {
+        this.protocolLocation = protocolLocation;
+    }
+
+    public String getProtocolClassName() {
+        return protocolClassName;
+    }
+
+    public void setProtocolClassName(String protocolClassName) {
+        this.protocolClassName = protocolClassName;
+    }
+
+    public String getMessageName() {
+        return messageName;
+    }
+
+    public void setMessageName(String messageName) {
+        this.messageName = messageName;
+    }
+
+    public String getUriAuthority() {
+        return uriAuthority;
+    }
+
+    public void setUriAuthority(String uriAuthority) {
+        this.uriAuthority = uriAuthority;
+    }
+
+    public Boolean getReflectionProtocol() {
+        return reflectionProtocol;
+    }
+
+    public void setReflectionProtocol(Boolean reflectionProtocol) {
+        this.reflectionProtocol = reflectionProtocol;
+    }
+
+    public Boolean getSingleParameter() {
+        return singleParameter;
+    }
+
+    public void setSingleParameter(Boolean singleParameter) {
+        this.singleParameter = singleParameter;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-box/src/main/docs/box.adoc
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/docs/box.adoc b/components/camel-box/src/main/docs/box.adoc
index 9d03522..9348bd2 100644
--- a/components/camel-box/src/main/docs/box.adoc
+++ b/components/camel-box/src/main/docs/box.adoc
@@ -38,8 +38,10 @@ Box Options
 ^^^^^^^^^^^
 
 
+
+
 // component options: START
-The Box component supports 1 options which are listed below.
+The Box component supports 17 options which are listed below.
 
 
 
@@ -47,7 +49,23 @@ The Box component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | BoxConfiguration | To use the shared configuration
+| 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
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -55,6 +73,8 @@ The Box component supports 1 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The Box component supports 21 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-box/src/main/java/org/apache/camel/component/box/BoxComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/java/org/apache/camel/component/box/BoxComponent.java b/components/camel-box/src/main/java/org/apache/camel/component/box/BoxComponent.java
index c770d8f..65b8b5a 100644
--- a/components/camel-box/src/main/java/org/apache/camel/component/box/BoxComponent.java
+++ b/components/camel-box/src/main/java/org/apache/camel/component/box/BoxComponent.java
@@ -16,6 +16,13 @@
  */
 package org.apache.camel.component.box;
 
+import java.util.Map;
+
+import com.box.boxjavalibv2.BoxConnectionManagerBuilder;
+import com.box.boxjavalibv2.IBoxConfig;
+import com.box.boxjavalibv2.authorization.IAuthSecureStorage;
+import com.box.boxjavalibv2.authorization.OAuthRefreshListener;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.box.internal.BoxApiCollection;
@@ -23,6 +30,7 @@ import org.apache.camel.component.box.internal.BoxApiName;
 import org.apache.camel.component.box.internal.BoxClientHelper;
 import org.apache.camel.component.box.internal.CachedBoxClient;
 import org.apache.camel.util.component.AbstractApiComponent;
+import org.apache.camel.util.jsse.SSLContextParameters;
 
 /**
  * Represents the component that manages {@link BoxEndpoint}.
@@ -57,7 +65,7 @@ public class BoxComponent extends AbstractApiComponent<BoxApiName, BoxConfigurat
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(BoxConfiguration configuration) {
@@ -105,4 +113,208 @@ public class BoxComponent extends AbstractApiComponent<BoxApiName, BoxConfigurat
             super.doShutdown();
         }
     }
+
+    private BoxConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new BoxConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public BoxApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(BoxApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getClientId() {
+        return getConfigurationOrCreate().getClientId();
+    }
+
+    /**
+     * Box application client ID
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getConfigurationOrCreate().setClientId(clientId);
+    }
+
+    public String getClientSecret() {
+        return getConfigurationOrCreate().getClientSecret();
+    }
+
+    /**
+     * Box application client secret
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getConfigurationOrCreate().setClientSecret(clientSecret);
+    }
+
+    public IAuthSecureStorage getAuthSecureStorage() {
+        return getConfigurationOrCreate().getAuthSecureStorage();
+    }
+
+    /**
+     * 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.
+     * @param authSecureStorage
+     */
+    public void setAuthSecureStorage(IAuthSecureStorage authSecureStorage) {
+        getConfigurationOrCreate().setAuthSecureStorage(authSecureStorage);
+    }
+
+    public String getUserName() {
+        return getConfigurationOrCreate().getUserName();
+    }
+
+    /**
+     * Box user name, MUST be provided
+     * @param userName
+     */
+    public void setUserName(String userName) {
+        getConfigurationOrCreate().setUserName(userName);
+    }
+
+    public String getUserPassword() {
+        return getConfigurationOrCreate().getUserPassword();
+    }
+
+    /**
+     * Box user password, MUST be provided if authSecureStorage is not set, or returns null on first call
+     * @param userPassword
+     */
+    public void setUserPassword(String userPassword) {
+        getConfigurationOrCreate().setUserPassword(userPassword);
+    }
+
+    public OAuthRefreshListener getRefreshListener() {
+        return getConfigurationOrCreate().getRefreshListener();
+    }
+
+    /**
+     * OAuth listener for token updates, if the Camel application needs to use the access token outside the route
+     * @param refreshListener
+     */
+    public void setRefreshListener(OAuthRefreshListener refreshListener) {
+        getConfigurationOrCreate().setRefreshListener(refreshListener);
+    }
+
+    public boolean isRevokeOnShutdown() {
+        return getConfigurationOrCreate().isRevokeOnShutdown();
+    }
+
+    /**
+     * 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
+     * @param revokeOnShutdown
+     */
+    public void setRevokeOnShutdown(boolean revokeOnShutdown) {
+        getConfigurationOrCreate().setRevokeOnShutdown(revokeOnShutdown);
+    }
+
+    public String getSharedLink() {
+        return getConfigurationOrCreate().getSharedLink();
+    }
+
+    /**
+     * Box shared link for shared endpoints, can be a link for a shared comment, file or folder
+     * @param sharedLink
+     */
+    public void setSharedLink(String sharedLink) {
+        getConfigurationOrCreate().setSharedLink(sharedLink);
+    }
+
+    public String getSharedPassword() {
+        return getConfigurationOrCreate().getSharedPassword();
+    }
+
+    /**
+     * Password associated with the shared link, MUST be provided with sharedLink
+     * @param sharedPassword
+     */
+    public void setSharedPassword(String sharedPassword) {
+        getConfigurationOrCreate().setSharedPassword(sharedPassword);
+    }
+
+    public IBoxConfig getBoxConfig() {
+        return getConfigurationOrCreate().getBoxConfig();
+    }
+
+    /**
+     * Custom Box SDK configuration, not required normally
+     * @param boxConfig
+     */
+    public void setBoxConfig(IBoxConfig boxConfig) {
+        getConfigurationOrCreate().setBoxConfig(boxConfig);
+    }
+
+    public BoxConnectionManagerBuilder getConnectionManagerBuilder() {
+        return getConfigurationOrCreate().getConnectionManagerBuilder();
+    }
+
+    /**
+     * Custom Box connection manager builder, used to override default settings like max connections for underlying HttpClient.
+     * @param connectionManagerBuilder
+     */
+    public void setConnectionManagerBuilder(BoxConnectionManagerBuilder connectionManagerBuilder) {
+        getConfigurationOrCreate().setConnectionManagerBuilder(connectionManagerBuilder);
+    }
+
+    public Map<String, Object> getHttpParams() {
+        return getConfigurationOrCreate().getHttpParams();
+    }
+
+    /**
+     * Custom HTTP params for settings like proxy host
+     * @param httpParams
+     */
+    public void setHttpParams(Map<String, Object> httpParams) {
+        getConfigurationOrCreate().setHttpParams(httpParams);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfigurationOrCreate().getSslContextParameters();
+    }
+
+    /**
+     * To configure security using SSLContextParameters.
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfigurationOrCreate().setSslContextParameters(sslContextParameters);
+    }
+
+    public int getLoginTimeout() {
+        return getConfigurationOrCreate().getLoginTimeout();
+    }
+
+    /**
+     * Amount of time the component will wait for a response from Box.com, default is 30 seconds
+     * @param loginTimeout
+     */
+    public void setLoginTimeout(int loginTimeout) {
+        getConfigurationOrCreate().setLoginTimeout(loginTimeout);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-box/src/main/java/org/apache/camel/component/box/springboot/BoxComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/main/java/org/apache/camel/component/box/springboot/BoxComponentConfiguration.java b/components/camel-box/src/main/java/org/apache/camel/component/box/springboot/BoxComponentConfiguration.java
index 2b74214..8179dd0 100644
--- a/components/camel-box/src/main/java/org/apache/camel/component/box/springboot/BoxComponentConfiguration.java
+++ b/components/camel-box/src/main/java/org/apache/camel/component/box/springboot/BoxComponentConfiguration.java
@@ -16,7 +16,14 @@
  */
 package org.apache.camel.component.box.springboot;
 
+import java.util.Map;
+import com.box.boxjavalibv2.BoxConnectionManagerBuilder;
+import com.box.boxjavalibv2.IBoxConfig;
+import com.box.boxjavalibv2.authorization.IAuthSecureStorage;
+import com.box.boxjavalibv2.authorization.OAuthRefreshListener;
 import org.apache.camel.component.box.BoxConfiguration;
+import org.apache.camel.component.box.internal.BoxApiName;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,9 +36,86 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class BoxComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private BoxConfiguration configuration;
+    /**
+     * What kind of operation to perform
+     */
+    private BoxApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * Box application client ID
+     */
+    private String clientId;
+    /**
+     * Box application client secret
+     */
+    private String clientSecret;
+    /**
+     * 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.
+     */
+    private IAuthSecureStorage authSecureStorage;
+    /**
+     * Box user name MUST be provided
+     */
+    private String userName;
+    /**
+     * Box user password MUST be provided if authSecureStorage is not set or
+     * returns null on first call
+     */
+    private String userPassword;
+    /**
+     * OAuth listener for token updates if the Camel application needs to use
+     * the access token outside the route
+     */
+    private OAuthRefreshListener refreshListener;
+    /**
+     * 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
+     */
+    private Boolean revokeOnShutdown = false;
+    /**
+     * Box shared link for shared endpoints can be a link for a shared comment
+     * file or folder
+     */
+    private String sharedLink;
+    /**
+     * Password associated with the shared link MUST be provided with sharedLink
+     */
+    private String sharedPassword;
+    /**
+     * Custom Box SDK configuration not required normally
+     */
+    private IBoxConfig boxConfig;
+    /**
+     * Custom Box connection manager builder used to override default settings
+     * like max connections for underlying HttpClient.
+     */
+    private BoxConnectionManagerBuilder connectionManagerBuilder;
+    /**
+     * Custom HTTP params for settings like proxy host
+     */
+    private Map<String, Object> httpParams;
+    /**
+     * To configure security using SSLContextParameters.
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Amount of time the component will wait for a response from Box.com
+     * default is 30 seconds
+     */
+    private Integer loginTimeout;
 
     public BoxConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +124,134 @@ public class BoxComponentConfiguration {
     public void setConfiguration(BoxConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public BoxApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(BoxApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public IAuthSecureStorage getAuthSecureStorage() {
+        return authSecureStorage;
+    }
+
+    public void setAuthSecureStorage(IAuthSecureStorage authSecureStorage) {
+        this.authSecureStorage = authSecureStorage;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserPassword() {
+        return userPassword;
+    }
+
+    public void setUserPassword(String userPassword) {
+        this.userPassword = userPassword;
+    }
+
+    public OAuthRefreshListener getRefreshListener() {
+        return refreshListener;
+    }
+
+    public void setRefreshListener(OAuthRefreshListener refreshListener) {
+        this.refreshListener = refreshListener;
+    }
+
+    public Boolean getRevokeOnShutdown() {
+        return revokeOnShutdown;
+    }
+
+    public void setRevokeOnShutdown(Boolean revokeOnShutdown) {
+        this.revokeOnShutdown = revokeOnShutdown;
+    }
+
+    public String getSharedLink() {
+        return sharedLink;
+    }
+
+    public void setSharedLink(String sharedLink) {
+        this.sharedLink = sharedLink;
+    }
+
+    public String getSharedPassword() {
+        return sharedPassword;
+    }
+
+    public void setSharedPassword(String sharedPassword) {
+        this.sharedPassword = sharedPassword;
+    }
+
+    public IBoxConfig getBoxConfig() {
+        return boxConfig;
+    }
+
+    public void setBoxConfig(IBoxConfig boxConfig) {
+        this.boxConfig = boxConfig;
+    }
+
+    public BoxConnectionManagerBuilder getConnectionManagerBuilder() {
+        return connectionManagerBuilder;
+    }
+
+    public void setConnectionManagerBuilder(
+            BoxConnectionManagerBuilder connectionManagerBuilder) {
+        this.connectionManagerBuilder = connectionManagerBuilder;
+    }
+
+    public Map<String, Object> getHttpParams() {
+        return httpParams;
+    }
+
+    public void setHttpParams(Map<String, Object> httpParams) {
+        this.httpParams = httpParams;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Integer getLoginTimeout() {
+        return loginTimeout;
+    }
+
+    public void setLoginTimeout(Integer loginTimeout) {
+        this.loginTimeout = loginTimeout;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-braintree/src/main/docs/braintree.adoc
----------------------------------------------------------------------
diff --git a/components/camel-braintree/src/main/docs/braintree.adoc b/components/camel-braintree/src/main/docs/braintree.adoc
index 3d5e435..054919e 100644
--- a/components/camel-braintree/src/main/docs/braintree.adoc
+++ b/components/camel-braintree/src/main/docs/braintree.adoc
@@ -36,8 +36,9 @@ Braintree Options
 ^^^^^^^^^^^^^^^^^
 
 
+
 // component options: START
-The Braintree component supports 1 options which are listed below.
+The Braintree component supports 12 options which are listed below.
 
 
 
@@ -45,13 +46,25 @@ The Braintree component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | BraintreeConfiguration | To use the shared configuration
+| 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.
 |=======================================================================
 {% endraw %}
 // component options: END
 
 
 
+
 // endpoint options: START
 The Braintree component supports 15 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
index 8918771..3f65ae4 100644
--- a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
+++ b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/BraintreeComponent.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.braintree;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.logging.Level;
 
 import com.braintreegateway.BraintreeGateway;
 import org.apache.camel.CamelContext;
@@ -55,7 +56,7 @@ public class BraintreeComponent extends AbstractApiComponent<BraintreeApiName, B
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(BraintreeConfiguration configuration) {
@@ -76,4 +77,151 @@ public class BraintreeComponent extends AbstractApiComponent<BraintreeApiName, B
 
         return gateway;
     }
+
+    private BraintreeConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new BraintreeConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public BraintreeApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(BraintreeApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getEnvironment() {
+        return getConfigurationOrCreate().getEnvironment();
+    }
+
+    /**
+     * The environment Either SANDBOX or PRODUCTION
+     * @param environment
+     */
+    public void setEnvironment(String environment) {
+        getConfigurationOrCreate().setEnvironment(environment);
+    }
+
+    public String getMerchantId() {
+        return getConfigurationOrCreate().getMerchantId();
+    }
+
+    /**
+     * The merchant id provided by Braintree.
+     * @param merchantId
+     */
+    public void setMerchantId(String merchantId) {
+        getConfigurationOrCreate().setMerchantId(merchantId);
+    }
+
+    public String getPublicKey() {
+        return getConfigurationOrCreate().getPublicKey();
+    }
+
+    /**
+     * The public key provided by Braintree.
+     * @param publicKey
+     */
+    public void setPublicKey(String publicKey) {
+        getConfigurationOrCreate().setPublicKey(publicKey);
+    }
+
+    public String getPrivateKey() {
+        return getConfigurationOrCreate().getPrivateKey();
+    }
+
+    /**
+     * The private key provided by Braintree.
+     * @param privateKey
+     */
+    public void setPrivateKey(String privateKey) {
+        getConfigurationOrCreate().setPrivateKey(privateKey);
+    }
+
+    public String getProxyHost() {
+        return getConfigurationOrCreate().getProxyHost();
+    }
+
+    /**
+     * The proxy host
+     * @param proxyHost
+     */
+    public void setProxyHost(String proxyHost) {
+        getConfigurationOrCreate().setProxyHost(proxyHost);
+    }
+
+    public Integer getProxyPort() {
+        return getConfigurationOrCreate().getProxyPort();
+    }
+
+    /**
+     * The proxy port
+     * @param proxyPort
+     */
+    public void setProxyPort(Integer proxyPort) {
+        getConfigurationOrCreate().setProxyPort(proxyPort);
+    }
+
+    public Level getHttpLogLevel() {
+        return getConfigurationOrCreate().getHttpLogLevel();
+    }
+
+    /**
+     * Set logging level for http calls, @see java.util.logging.Level
+     * @param httpLogLevel
+     */
+    public void setHttpLogLevel(String httpLogLevel) {
+        getConfigurationOrCreate().setHttpLogLevel(httpLogLevel);
+    }
+
+    /**
+     * Set logging level for http calls, @see java.util.logging.Level
+     * @param httpLogLevel
+     */
+    public void setHttpLogLevel(Level httpLogLevel) {
+        getConfigurationOrCreate().setHttpLogLevel(httpLogLevel);
+    }
+
+    public String getHttpLogName() {
+        return getConfigurationOrCreate().getHttpLogName();
+    }
+
+    /**
+     * Set log category to use to log http calls, default "Braintree"
+     * @param httpLogName
+     */
+    public void setHttpLogName(String httpLogName) {
+        getConfigurationOrCreate().setHttpLogName(httpLogName);
+    }
+
+    public Integer getHttpReadTimeout() {
+        return getConfigurationOrCreate().getHttpReadTimeout();
+    }
+
+    /**
+     * Set read timeout for http calls.
+     * @param httpReadTimeout
+     */
+    public void setHttpReadTimeout(Integer httpReadTimeout) {
+        getConfigurationOrCreate().setHttpReadTimeout(httpReadTimeout);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/springboot/BraintreeComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/springboot/BraintreeComponentConfiguration.java b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/springboot/BraintreeComponentConfiguration.java
index 60f2b7f..51dffbc 100644
--- a/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/springboot/BraintreeComponentConfiguration.java
+++ b/components/camel-braintree/src/main/java/org/apache/camel/component/braintree/springboot/BraintreeComponentConfiguration.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.braintree.springboot;
 
 import org.apache.camel.component.braintree.BraintreeConfiguration;
+import org.apache.camel.component.braintree.internal.BraintreeApiName;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,9 +30,54 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class BraintreeComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private BraintreeConfiguration configuration;
+    /**
+     * What kind of operation to perform
+     */
+    private BraintreeApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * The environment Either SANDBOX or PRODUCTION
+     */
+    private String environment;
+    /**
+     * The merchant id provided by Braintree.
+     */
+    private String merchantId;
+    /**
+     * The public key provided by Braintree.
+     */
+    private String publicKey;
+    /**
+     * The private key provided by Braintree.
+     */
+    private String privateKey;
+    /**
+     * The proxy host
+     */
+    private String proxyHost;
+    /**
+     * The proxy port
+     */
+    private Integer proxyPort;
+    /**
+     * Set logging level for http calls see java.util.logging.Level
+     */
+    private String httpLogLevel;
+    /**
+     * Set log category to use to log http calls default Braintree
+     */
+    private String httpLogName;
+    /**
+     * Set read timeout for http calls.
+     */
+    private Integer httpReadTimeout;
 
     public BraintreeConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +86,92 @@ public class BraintreeComponentConfiguration {
     public void setConfiguration(BraintreeConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public BraintreeApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(BraintreeApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getEnvironment() {
+        return environment;
+    }
+
+    public void setEnvironment(String environment) {
+        this.environment = environment;
+    }
+
+    public String getMerchantId() {
+        return merchantId;
+    }
+
+    public void setMerchantId(String merchantId) {
+        this.merchantId = merchantId;
+    }
+
+    public String getPublicKey() {
+        return publicKey;
+    }
+
+    public void setPublicKey(String publicKey) {
+        this.publicKey = publicKey;
+    }
+
+    public String getPrivateKey() {
+        return privateKey;
+    }
+
+    public void setPrivateKey(String privateKey) {
+        this.privateKey = privateKey;
+    }
+
+    public String getProxyHost() {
+        return proxyHost;
+    }
+
+    public void setProxyHost(String proxyHost) {
+        this.proxyHost = proxyHost;
+    }
+
+    public Integer getProxyPort() {
+        return proxyPort;
+    }
+
+    public void setProxyPort(Integer proxyPort) {
+        this.proxyPort = proxyPort;
+    }
+
+    public String getHttpLogLevel() {
+        return httpLogLevel;
+    }
+
+    public void setHttpLogLevel(String httpLogLevel) {
+        this.httpLogLevel = httpLogLevel;
+    }
+
+    public String getHttpLogName() {
+        return httpLogName;
+    }
+
+    public void setHttpLogName(String httpLogName) {
+        this.httpLogName = httpLogName;
+    }
+
+    public Integer getHttpReadTimeout() {
+        return httpReadTimeout;
+    }
+
+    public void setHttpReadTimeout(Integer httpReadTimeout) {
+        this.httpReadTimeout = httpReadTimeout;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-cache/src/main/docs/cache.adoc
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/docs/cache.adoc b/components/camel-cache/src/main/docs/cache.adoc
index 0183d48..663fda2 100644
--- a/components/camel-cache/src/main/docs/cache.adoc
+++ b/components/camel-cache/src/main/docs/cache.adoc
@@ -46,8 +46,9 @@ Options
 ^^^^^^^
 
 
+
 // component options: START
-The EHCache component supports 3 options which are listed below.
+The EHCache component supports 15 options which are listed below.
 
 
 
@@ -58,12 +59,25 @@ The EHCache component supports 3 options which are listed below.
 | cacheManagerFactory | CacheManagerFactory | To use the given CacheManagerFactory for creating the CacheManager. By default the DefaultCacheManagerFactory is used.
 | 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
 
 
 
+
 // endpoint options: START
 The EHCache component supports 20 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
index b909063..33ad564 100755
--- a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
@@ -26,6 +26,8 @@ import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
 import org.apache.camel.util.ServiceHelper;
 
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
+
 public class CacheComponent extends UriEndpointComponent {
     private CacheConfiguration configuration;
     private CacheManagerFactory cacheManagerFactory;
@@ -75,7 +77,7 @@ public class CacheComponent extends UriEndpointComponent {
     }
 
     /**
-     * Sets the Cache configuration
+     * Sets the Cache configuration. Properties of the shared configuration can also be set individually.
      *
      * @param configuration the configuration to use by default for endpoints
      */
@@ -115,4 +117,155 @@ public class CacheComponent extends UriEndpointComponent {
         ServiceHelper.stopService(cacheManagerFactory);
         super.doStop();
     }
+
+    public String getCacheName() {
+        return configuration.getCacheName();
+    }
+
+    /**
+     * Name of the cache
+     * @param cacheName
+     */
+    public void setCacheName(String cacheName) {
+        configuration.setCacheName(cacheName);
+    }
+
+    public int getMaxElementsInMemory() {
+        return configuration.getMaxElementsInMemory();
+    }
+
+    /**
+     * The number of elements that may be stored in the defined cache in memory.
+     * @param maxElementsInMemory
+     */
+    public void setMaxElementsInMemory(int maxElementsInMemory) {
+        configuration.setMaxElementsInMemory(maxElementsInMemory);
+    }
+
+    public MemoryStoreEvictionPolicy getMemoryStoreEvictionPolicy() {
+        return configuration.getMemoryStoreEvictionPolicy();
+    }
+
+    /**
+     * Which eviction strategy to use when maximum number of elements in memory is reached. The strategy defines
+     * which elements to be removed.
+     * <ul>
+     *     <li>LRU - Lest Recently Used</li>
+     *     <li>LFU - Lest Frequently Used</li>
+     *     <li>FIFO - First In First Out</li>
+     * </ul>
+     * @param memoryStoreEvictionPolicy
+     */
+    public void setMemoryStoreEvictionPolicy(MemoryStoreEvictionPolicy memoryStoreEvictionPolicy) {
+        configuration.setMemoryStoreEvictionPolicy(memoryStoreEvictionPolicy);
+    }
+
+    public boolean isOverflowToDisk() {
+        return configuration.isOverflowToDisk();
+    }
+
+    /**
+     * Specifies whether cache may overflow to disk
+     * @param overflowToDisk
+     */
+    public void setOverflowToDisk(boolean overflowToDisk) {
+        configuration.setOverflowToDisk(overflowToDisk);
+    }
+
+    public boolean isEternal() {
+        return configuration.isEternal();
+    }
+
+    /**
+     * Sets whether elements are eternal. If eternal, timeouts are ignored and the element never expires.
+     * @param eternal
+     */
+    public void setEternal(boolean eternal) {
+        configuration.setEternal(eternal);
+    }
+
+    public long getTimeToLiveSeconds() {
+        return configuration.getTimeToLiveSeconds();
+    }
+
+    /**
+     * The maximum time between creation time and when an element expires. Is used only if the element is not eternal
+     * @param timeToLiveSeconds
+     */
+    public void setTimeToLiveSeconds(long timeToLiveSeconds) {
+        configuration.setTimeToLiveSeconds(timeToLiveSeconds);
+    }
+
+    public long getTimeToIdleSeconds() {
+        return configuration.getTimeToIdleSeconds();
+    }
+
+    /**
+     * The maximum amount of time between accesses before an element expires
+     * @param timeToIdleSeconds
+     */
+    public void setTimeToIdleSeconds(long timeToIdleSeconds) {
+        configuration.setTimeToIdleSeconds(timeToIdleSeconds);
+    }
+
+    public boolean isDiskPersistent() {
+        return configuration.isDiskPersistent();
+    }
+
+    /**
+     * Whether the disk store persists between restarts of the application.
+     * @param diskPersistent
+     */
+    public void setDiskPersistent(boolean diskPersistent) {
+        configuration.setDiskPersistent(diskPersistent);
+    }
+
+    public long getDiskExpiryThreadIntervalSeconds() {
+        return configuration.getDiskExpiryThreadIntervalSeconds();
+    }
+
+    /**
+     * The number of seconds between runs of the disk expiry thread.
+     * @param diskExpiryThreadIntervalSeconds
+     */
+    public void setDiskExpiryThreadIntervalSeconds(long diskExpiryThreadIntervalSeconds) {
+        configuration.setDiskExpiryThreadIntervalSeconds(diskExpiryThreadIntervalSeconds);
+    }
+
+    /**
+     * To configure event listeners using the CacheEventListenerRegistry
+     * @param eventListenerRegistry
+     */
+    public void setEventListenerRegistry(CacheEventListenerRegistry eventListenerRegistry) {
+        configuration.setEventListenerRegistry(eventListenerRegistry);
+    }
+
+    public CacheEventListenerRegistry getEventListenerRegistry() {
+        return configuration.getEventListenerRegistry();
+    }
+
+    /**
+     * To configure cache loader using the CacheLoaderRegistry
+     * @param cacheLoaderRegistry
+     */
+    public void setCacheLoaderRegistry(CacheLoaderRegistry cacheLoaderRegistry) {
+        configuration.setCacheLoaderRegistry(cacheLoaderRegistry);
+    }
+
+    public CacheLoaderRegistry getCacheLoaderRegistry() {
+        return configuration.getCacheLoaderRegistry();
+    }
+
+    public boolean isObjectCache() {
+        return configuration.isObjectCache();
+    }
+
+    /**
+     * 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.
+     * @param objectCache
+     */
+    public void setObjectCache(boolean objectCache) {
+        configuration.setObjectCache(objectCache);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java b/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
index cfb7abd..812fc00 100644
--- a/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
@@ -16,7 +16,10 @@
  */
 package org.apache.camel.component.cache.springboot;
 
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
 import org.apache.camel.component.cache.CacheConfiguration;
+import org.apache.camel.component.cache.CacheEventListenerRegistry;
+import org.apache.camel.component.cache.CacheLoaderRegistry;
 import org.apache.camel.component.cache.CacheManagerFactory;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
@@ -43,6 +46,60 @@ public class CacheComponentConfiguration {
      * system. By default the file is loaded from classpath:ehcache.xml
      */
     private String configurationFile;
+    /**
+     * Name of the cache
+     */
+    private String cacheName;
+    /**
+     * The number of elements that may be stored in the defined cache in memory.
+     */
+    private Integer maxElementsInMemory;
+    /**
+     * 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
+     */
+    private MemoryStoreEvictionPolicy memoryStoreEvictionPolicy;
+    /**
+     * Specifies whether cache may overflow to disk
+     */
+    private Boolean overflowToDisk = false;
+    /**
+     * Sets whether elements are eternal. If eternal timeouts are ignored and
+     * the element never expires.
+     */
+    private Boolean eternal = false;
+    /**
+     * The maximum time between creation time and when an element expires. Is
+     * used only if the element is not eternal
+     */
+    private long timeToLiveSeconds;
+    /**
+     * The maximum amount of time between accesses before an element expires
+     */
+    private long timeToIdleSeconds;
+    /**
+     * Whether the disk store persists between restarts of the application.
+     */
+    private Boolean diskPersistent = false;
+    /**
+     * The number of seconds between runs of the disk expiry thread.
+     */
+    private long diskExpiryThreadIntervalSeconds;
+    /**
+     * To configure event listeners using the CacheEventListenerRegistry
+     */
+    private CacheEventListenerRegistry eventListenerRegistry;
+    /**
+     * To configure cache loader using the CacheLoaderRegistry
+     */
+    private CacheLoaderRegistry cacheLoaderRegistry;
+    /**
+     * 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.
+     */
+    private Boolean objectCache = false;
 
     public CacheManagerFactory getCacheManagerFactory() {
         return cacheManagerFactory;
@@ -67,4 +124,103 @@ public class CacheComponentConfiguration {
     public void setConfigurationFile(String configurationFile) {
         this.configurationFile = configurationFile;
     }
+
+    public String getCacheName() {
+        return cacheName;
+    }
+
+    public void setCacheName(String cacheName) {
+        this.cacheName = cacheName;
+    }
+
+    public Integer getMaxElementsInMemory() {
+        return maxElementsInMemory;
+    }
+
+    public void setMaxElementsInMemory(Integer maxElementsInMemory) {
+        this.maxElementsInMemory = maxElementsInMemory;
+    }
+
+    public MemoryStoreEvictionPolicy getMemoryStoreEvictionPolicy() {
+        return memoryStoreEvictionPolicy;
+    }
+
+    public void setMemoryStoreEvictionPolicy(
+            MemoryStoreEvictionPolicy memoryStoreEvictionPolicy) {
+        this.memoryStoreEvictionPolicy = memoryStoreEvictionPolicy;
+    }
+
+    public Boolean getOverflowToDisk() {
+        return overflowToDisk;
+    }
+
+    public void setOverflowToDisk(Boolean overflowToDisk) {
+        this.overflowToDisk = overflowToDisk;
+    }
+
+    public Boolean getEternal() {
+        return eternal;
+    }
+
+    public void setEternal(Boolean eternal) {
+        this.eternal = eternal;
+    }
+
+    public long getTimeToLiveSeconds() {
+        return timeToLiveSeconds;
+    }
+
+    public void setTimeToLiveSeconds(long timeToLiveSeconds) {
+        this.timeToLiveSeconds = timeToLiveSeconds;
+    }
+
+    public long getTimeToIdleSeconds() {
+        return timeToIdleSeconds;
+    }
+
+    public void setTimeToIdleSeconds(long timeToIdleSeconds) {
+        this.timeToIdleSeconds = timeToIdleSeconds;
+    }
+
+    public Boolean getDiskPersistent() {
+        return diskPersistent;
+    }
+
+    public void setDiskPersistent(Boolean diskPersistent) {
+        this.diskPersistent = diskPersistent;
+    }
+
+    public long getDiskExpiryThreadIntervalSeconds() {
+        return diskExpiryThreadIntervalSeconds;
+    }
+
+    public void setDiskExpiryThreadIntervalSeconds(
+            long diskExpiryThreadIntervalSeconds) {
+        this.diskExpiryThreadIntervalSeconds = diskExpiryThreadIntervalSeconds;
+    }
+
+    public CacheEventListenerRegistry getEventListenerRegistry() {
+        return eventListenerRegistry;
+    }
+
+    public void setEventListenerRegistry(
+            CacheEventListenerRegistry eventListenerRegistry) {
+        this.eventListenerRegistry = eventListenerRegistry;
+    }
+
+    public CacheLoaderRegistry getCacheLoaderRegistry() {
+        return cacheLoaderRegistry;
+    }
+
+    public void setCacheLoaderRegistry(CacheLoaderRegistry cacheLoaderRegistry) {
+        this.cacheLoaderRegistry = cacheLoaderRegistry;
+    }
+
+    public Boolean getObjectCache() {
+        return objectCache;
+    }
+
+    public void setObjectCache(Boolean objectCache) {
+        this.objectCache = objectCache;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
index 72a14e8..a5f53b2 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
@@ -18,12 +18,18 @@ package org.apache.camel.component.crypto;
 
 import java.net.MalformedURLException;
 import java.net.URI;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.cert.Certificate;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.jsse.KeyStoreParameters;
 
 public class DigitalSignatureComponent extends UriEndpointComponent {
 
@@ -61,9 +67,345 @@ public class DigitalSignatureComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared DigitalSignatureConfiguration as configuration
+     * To use the shared DigitalSignatureConfiguration as configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(DigitalSignatureConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getName() {
+        return getConfiguration().getName();
+    }
+
+    /**
+     * The logical name of this operation.
+     * @param name
+     */
+    public void setName(String name) {
+        getConfiguration().setName(name);
+    }
+
+    /**
+     * Gets the JCE name of the Algorithm that should be used for the signer.
+     */
+    public String getAlgorithm() {
+        return getConfiguration().getAlgorithm();
+    }
+
+    /**
+     * Sets the JCE name of the Algorithm that should be used for the signer.
+     * @param algorithm
+     */
+    public void setAlgorithm(String algorithm) {
+        getConfiguration().setAlgorithm(algorithm);
+    }
+
+    /**
+     * Gets the alias used to query the KeyStore for keys and {@link Certificate Certificates}
+     * to be used in signing and verifying exchanges. This value can be provided at runtime via the message header
+     * {@link DigitalSignatureConstants#KEYSTORE_ALIAS}
+     */
+    public String getAlias() {
+        return getConfiguration().getAlias();
+    }
+
+    /**
+     * Sets the alias used to query the KeyStore for keys and {@link Certificate Certificates}
+     * to be used in signing and verifying exchanges. This value can be provided at runtime via the message header
+     * {@link DigitalSignatureConstants#KEYSTORE_ALIAS}
+     * @param alias
+     */
+    public void setAlias(String alias) {
+        getConfiguration().setAlias(alias);
+    }
+
+    /**
+     * Get the PrivateKey that should be used to sign the exchange
+     */
+    public PrivateKey getPrivateKey() throws Exception {
+        return getConfiguration().getPrivateKey();
+    }
+
+    /**
+     * Get the PrivateKey that should be used to sign the signature in the
+     * exchange using the supplied alias.
+     *
+     * @param alias the alias used to retrieve the Certificate from the keystore.
+     */
+    public PrivateKey getPrivateKey(String alias) throws Exception {
+        return getConfiguration().getPrivateKey(alias);
+    }
+
+    /**
+     * Get the PrivateKey that should be used to sign the signature in the
+     * exchange using the supplied alias.
+     *
+     * @param alias the alias used to retrieve the Certificate from the keystore.
+     * @param password
+     */
+    public PrivateKey getPrivateKey(String alias, char[] password) throws Exception {
+        return getConfiguration().getPrivateKey(alias, password);
+    }
+
+    /**
+     * Set the PrivateKey that should be used to sign the exchange
+     *
+     * @param privateKey the key with with to sign the exchange.
+     */
+    public void setPrivateKey(PrivateKey privateKey) {
+        getConfiguration().setPrivateKey(privateKey);
+    }
+
+    /**
+     * Sets the reference name for a PrivateKey that can be fond in the registry.
+     * @param privateKeyName
+     */
+    public void setPrivateKeyName(String privateKeyName) {
+        getConfiguration().setPrivateKeyName(privateKeyName);
+    }
+
+    /**
+     * Set the PublicKey that should be used to verify the signature in the exchange.
+     * @param publicKey
+     */
+    public void setPublicKey(PublicKey publicKey) {
+        getConfiguration().setPublicKey(publicKey);
+    }
+
+    /**
+     * Sets the reference name for a publicKey that can be fond in the registry.
+     * @param publicKeyName
+     */
+    public void setPublicKeyName(String publicKeyName) {
+        getConfiguration().setPublicKeyName(publicKeyName);
+    }
+
+    /**
+     * get the PublicKey that should be used to verify the signature in the exchange.
+     */
+    public PublicKey getPublicKey() {
+        return getConfiguration().getPublicKey();
+    }
+
+    /**
+     * Set the Certificate that should be used to verify the signature in the
+     * exchange. If a {@link KeyStore} has been configured then this will
+     * attempt to retrieve the {@link Certificate}from it using hte supplied
+     * alias. If either the alias or the Keystore is invalid then the configured
+     * certificate will be returned
+     *
+     * @param alias the alias used to retrieve the Certificate from the keystore.
+     */
+    public Certificate getCertificate(String alias) throws Exception {
+        return getConfiguration().getCertificate(alias);
+    }
+
+    /**
+     * Get the explicitly configured {@link Certificate} that should be used to
+     * verify the signature in the exchange.
+     */
+    public Certificate getCertificate() throws Exception {
+        return getConfiguration().getCertificate();
+    }
+
+    /**
+     * Set the Certificate that should be used to verify the signature in the
+     * exchange based on its payload.
+     * @param certificate
+     */
+    public void setCertificate(Certificate certificate) {
+        getConfiguration().setCertificate(certificate);
+    }
+
+    /**
+     * Sets the reference name for a PrivateKey that can be fond in the registry.
+     * @param certificateName
+     */
+    public void setCertificateName(String certificateName) {
+        getConfiguration().setCertificateName(certificateName);
+    }
+
+    /**
+     * Gets the KeyStore that can contain keys and Certficates for use in
+     * signing and verifying exchanges. A {@link KeyStore} is typically used
+     * with an alias, either one supplied in the Route definition or dynamically
+     * via the message header "CamelSignatureKeyStoreAlias". If no alias is
+     * supplied and there is only a single entry in the Keystore, then this
+     * single entry will be used.
+     */
+    public KeyStore getKeystore() {
+        return getConfiguration().getKeystore();
+    }
+
+    /**
+     * Sets the KeyStore that can contain keys and Certficates for use in
+     * signing and verifying exchanges. A {@link KeyStore} is typically used
+     * with an alias, either one supplied in the Route definition or dynamically
+     * via the message header "CamelSignatureKeyStoreAlias". If no alias is
+     * supplied and there is only a single entry in the Keystore, then this
+     * single entry will be used.
+     * @param keystore
+     */
+    public void setKeystore(KeyStore keystore) {
+        getConfiguration().setKeystore(keystore);
+    }
+
+    /**
+     * Sets the reference name for a Keystore that can be fond in the registry.
+     * @param keystoreName
+     */
+    public void setKeystoreName(String keystoreName) {
+        getConfiguration().setKeystoreName(keystoreName);
+    }
+
+    /**
+     * Gets the password used to access an aliased {@link PrivateKey} in the KeyStore.
+     */
+    public char[] getPassword() {
+        return getConfiguration().getPassword();
+    }
+
+    /**
+     * Sets the password used to access an aliased {@link PrivateKey} in the KeyStore.
+     * @param password
+     */
+    public void setPassword(char[] password) {
+        getConfiguration().setPassword(password);
+    }
+
+    public KeyStoreParameters getKeyStoreParameters() {
+        return getConfiguration().getKeyStoreParameters();
+    }
+
+    /**
+     * Sets the KeyStore that can contain keys and Certficates for use in
+     * signing and verifying exchanges based on the given KeyStoreParameters.
+     * A {@link KeyStore} is typically used
+     * with an alias, either one supplied in the Route definition or dynamically
+     * via the message header "CamelSignatureKeyStoreAlias". If no alias is
+     * supplied and there is only a single entry in the Keystore, then this
+     * single entry will be used.
+     * @param keyStoreParameters
+     */
+    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) throws Exception {
+        getConfiguration().setKeyStoreParameters(keyStoreParameters);
+    }
+
+    /**
+     * Get the SecureRandom used to initialize the Signature service
+     */
+    public SecureRandom getSecureRandom() {
+        return getConfiguration().getSecureRandom();
+    }
+
+    /**
+     * Sets the reference name for a SecureRandom that can be fond in the registry.
+     * @param randomName
+     */
+    public void setSecureRandomName(String randomName) {
+        getConfiguration().setSecureRandomName(randomName);
+    }
+
+    /**
+     * Set the SecureRandom used to initialize the Signature service
+     *
+     * @param secureRandom the random used to init the Signature service
+     */
+    public void setSecureRandom(SecureRandom secureRandom) {
+        getConfiguration().setSecureRandom(secureRandom);
+    }
+
+    /**
+     * Get the size of the buffer used to read in the Exchange payload data.
+     */
+    public Integer getBufferSize() {
+        return getConfiguration().getBufferSize();
+    }
+
+    /**
+     * Set the size of the buffer used to read in the Exchange payload data.
+     * @param bufferSize
+     */
+    public void setBufferSize(Integer bufferSize) {
+        getConfiguration().setBufferSize(bufferSize);
+    }
+
+    /**
+     * Get the id of the security provider that provides the configured
+     * {@link Signature} algorithm.
+     */
+    public String getProvider() {
+        return getConfiguration().getProvider();
+    }
+
+    /**
+     * Set the id of the security provider that provides the configured
+     * {@link Signature} algorithm.
+     *
+     * @param provider the id of the security provider
+     */
+    public void setProvider(String provider) {
+        getConfiguration().setProvider(provider);
+    }
+
+    /**
+     * Get the name of the message header that should be used to store the
+     * base64 encoded signature. This defaults to 'CamelDigitalSignature'
+     */
+    public String getSignatureHeaderName() {
+        return getConfiguration().getSignatureHeaderName();
+    }
+
+    /**
+     * Set the name of the message header that should be used to store the
+     * base64 encoded signature. This defaults to 'CamelDigitalSignature'
+     * @param signatureHeaderName
+     */
+    public void setSignatureHeaderName(String signatureHeaderName) {
+        getConfiguration().setSignatureHeaderName(signatureHeaderName);
+    }
+
+    /**
+     * Determines if the Signature specific headers be cleared after signing and
+     * verification. Defaults to true, and should only be made otherwise at your
+     * extreme peril as vital private information such as Keys and passwords may
+     * escape if unset.
+     *
+     * @return true if the Signature headers should be unset, false otherwise
+     */
+    public boolean isClearHeaders() {
+        return getConfiguration().isClearHeaders();
+    }
+
+    /**
+     * Determines if the Signature specific headers be cleared after signing and
+     * verification. Defaults to true, and should only be made otherwise at your
+     * extreme peril as vital private information such as Keys and passwords may
+     * escape if unset.
+     * @param clearHeaders
+     */
+    public void setClearHeaders(boolean clearHeaders) {
+        getConfiguration().setClearHeaders(clearHeaders);
+    }
+
+    /**
+     * Set the Crypto operation from that supplied after the crypto scheme in the
+     * endpoint uri e.g. crypto:sign sets sign as the operation.
+     *
+     * @param operation the operation supplied after the crypto scheme
+     */
+    public void setCryptoOperation(String operation) {
+        getConfiguration().setCryptoOperation(operation);
+    }
+
+    public void setCryptoOperation(CryptoOperation operation) {
+        getConfiguration().setCryptoOperation(operation);
+    }
+
+    /**
+     * Gets the Crypto operation that was supplied in the the crypto scheme in the endpoint uri
+     */
+    public CryptoOperation getCryptoOperation() {
+        return getConfiguration().getCryptoOperation();
+    }
 }


[10/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
index 96b82a0..7b3e09e 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
@@ -16,7 +16,13 @@
  */
 package org.apache.camel.component.crypto.springboot;
 
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.cert.Certificate;
 import org.apache.camel.component.crypto.DigitalSignatureConfiguration;
+import org.apache.camel.util.jsse.KeyStoreParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,9 +35,114 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class DigitalSignatureComponentConfiguration {
 
     /**
-     * To use the shared DigitalSignatureConfiguration as configuration
+     * To use the shared DigitalSignatureConfiguration as configuration.
+     * Properties of the shared configuration can also be set individually.
      */
     private DigitalSignatureConfiguration configuration;
+    /**
+     * The logical name of this operation.
+     */
+    private String name;
+    /**
+     * Sets the JCE name of the Algorithm that should be used for the signer.
+     */
+    private String algorithm;
+    /**
+     * Sets the alias used to query the KeyStore for keys and link Certificate
+     * Certificates to be used in signing and verifying exchanges. This value
+     * can be provided at runtime via the message header link
+     * DigitalSignatureConstantsKEYSTORE_ALIAS
+     */
+    private String alias;
+    /**
+     * Set the PrivateKey that should be used to sign the exchange
+     */
+    private PrivateKey privateKey;
+    /**
+     * Sets the reference name for a PrivateKey that can be fond in the
+     * registry.
+     */
+    private String privateKeyName;
+    /**
+     * Set the PublicKey that should be used to verify the signature in the
+     * exchange.
+     */
+    private PublicKey publicKey;
+    /**
+     * Sets the reference name for a publicKey that can be fond in the registry.
+     */
+    private String publicKeyName;
+    /**
+     * Set the Certificate that should be used to verify the signature in the
+     * exchange based on its payload.
+     */
+    private Certificate certificate;
+    /**
+     * Sets the reference name for a PrivateKey that can be fond in the
+     * registry.
+     */
+    private String certificateName;
+    /**
+     * Sets the KeyStore that can contain keys and Certficates for use in
+     * signing and verifying exchanges. A KeyStore is typically used with an
+     * alias either one supplied in the Route definition or dynamically via the
+     * message header CamelSignatureKeyStoreAlias. If no alias is supplied and
+     * there is only a single entry in the Keystore then this single entry will
+     * be used.
+     */
+    private KeyStore keystore;
+    /**
+     * Sets the reference name for a Keystore that can be fond in the registry.
+     */
+    private String keystoreName;
+    /**
+     * Sets the password used to access an aliased PrivateKey in the KeyStore.
+     */
+    private char[] password;
+    /**
+     * Sets the KeyStore that can contain keys and Certficates for use in
+     * signing and verifying exchanges based on the given KeyStoreParameters. A
+     * KeyStore is typically used with an alias either one supplied in the Route
+     * definition or dynamically via the message header
+     * CamelSignatureKeyStoreAlias. If no alias is supplied and there is only a
+     * single entry in the Keystore then this single entry will be used.
+     */
+    private KeyStoreParameters keyStoreParameters;
+    /**
+     * Sets the reference name for a SecureRandom that can be fond in the
+     * registry.
+     */
+    private String secureRandomName;
+    /**
+     * Set the SecureRandom used to initialize the Signature service
+     */
+    private SecureRandom secureRandom;
+    /**
+     * Set the size of the buffer used to read in the Exchange payload data.
+     */
+    private Integer bufferSize;
+    /**
+     * Set the id of the security provider that provides the configured
+     * Signature algorithm.
+     */
+    private String provider;
+    /**
+     * Set the name of the message header that should be used to store the
+     * base64 encoded signature. This defaults to 'CamelDigitalSignature'
+     */
+    private String signatureHeaderName;
+    /**
+     * Determines if the Signature specific headers be cleared after signing and
+     * verification. Defaults to true and should only be made otherwise at your
+     * extreme peril as vital private information such as Keys and passwords may
+     * escape if unset.
+     */
+    private Boolean clearHeaders = false;
+    /**
+     * Set the Crypto operation from that supplied after the crypto scheme in
+     * the endpoint uri e.g. crypto:sign sets sign as the operation.
+     */
+    private String cryptoOperation;
 
     public DigitalSignatureConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +151,164 @@ public class DigitalSignatureComponentConfiguration {
     public void setConfiguration(DigitalSignatureConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    public void setAlias(String alias) {
+        this.alias = alias;
+    }
+
+    public PrivateKey getPrivateKey() {
+        return privateKey;
+    }
+
+    public void setPrivateKey(PrivateKey privateKey) {
+        this.privateKey = privateKey;
+    }
+
+    public String getPrivateKeyName() {
+        return privateKeyName;
+    }
+
+    public void setPrivateKeyName(String privateKeyName) {
+        this.privateKeyName = privateKeyName;
+    }
+
+    public PublicKey getPublicKey() {
+        return publicKey;
+    }
+
+    public void setPublicKey(PublicKey publicKey) {
+        this.publicKey = publicKey;
+    }
+
+    public String getPublicKeyName() {
+        return publicKeyName;
+    }
+
+    public void setPublicKeyName(String publicKeyName) {
+        this.publicKeyName = publicKeyName;
+    }
+
+    public Certificate getCertificate() {
+        return certificate;
+    }
+
+    public void setCertificate(Certificate certificate) {
+        this.certificate = certificate;
+    }
+
+    public String getCertificateName() {
+        return certificateName;
+    }
+
+    public void setCertificateName(String certificateName) {
+        this.certificateName = certificateName;
+    }
+
+    public KeyStore getKeystore() {
+        return keystore;
+    }
+
+    public void setKeystore(KeyStore keystore) {
+        this.keystore = keystore;
+    }
+
+    public String getKeystoreName() {
+        return keystoreName;
+    }
+
+    public void setKeystoreName(String keystoreName) {
+        this.keystoreName = keystoreName;
+    }
+
+    public char[] getPassword() {
+        return password;
+    }
+
+    public void setPassword(char[] password) {
+        this.password = password;
+    }
+
+    public KeyStoreParameters getKeyStoreParameters() {
+        return keyStoreParameters;
+    }
+
+    public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) {
+        this.keyStoreParameters = keyStoreParameters;
+    }
+
+    public String getSecureRandomName() {
+        return secureRandomName;
+    }
+
+    public void setSecureRandomName(String secureRandomName) {
+        this.secureRandomName = secureRandomName;
+    }
+
+    public SecureRandom getSecureRandom() {
+        return secureRandom;
+    }
+
+    public void setSecureRandom(SecureRandom secureRandom) {
+        this.secureRandom = secureRandom;
+    }
+
+    public Integer getBufferSize() {
+        return bufferSize;
+    }
+
+    public void setBufferSize(Integer bufferSize) {
+        this.bufferSize = bufferSize;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    public String getSignatureHeaderName() {
+        return signatureHeaderName;
+    }
+
+    public void setSignatureHeaderName(String signatureHeaderName) {
+        this.signatureHeaderName = signatureHeaderName;
+    }
+
+    public Boolean getClearHeaders() {
+        return clearHeaders;
+    }
+
+    public void setClearHeaders(Boolean clearHeaders) {
+        this.clearHeaders = clearHeaders;
+    }
+
+    public String getCryptoOperation() {
+        return cryptoOperation;
+    }
+
+    public void setCryptoOperation(String cryptoOperation) {
+        this.cryptoOperation = cryptoOperation;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
index 3f0cef2..5e8f944 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/DockerComponent.java
@@ -71,7 +71,7 @@ public class DockerComponent extends DefaultComponent {
     }
 
     /**
-     * To use the shared docker configuration
+     * To use the shared docker configuration. Properties of the shared configuration can also be set individually.
      */
     protected DockerConfiguration getConfiguration() {
         return configuration;
@@ -88,4 +88,183 @@ public class DockerComponent extends DefaultComponent {
         clients.put(clientProfile, client);
     }
 
+    public String getHost() {
+        return configuration.getHost();
+    }
+
+    /**
+     * Docker host
+     * @param host
+     */
+    public void setHost(String host) {
+        configuration.setHost(host);
+    }
+
+    public Integer getPort() {
+        return configuration.getPort();
+    }
+
+    /**
+     * Docker port
+     * @param port
+     */
+    public void setPort(Integer port) {
+        configuration.setPort(port);
+    }
+
+    public String getUsername() {
+        return configuration.getUsername();
+    }
+
+    /**
+     * User name to authenticate with
+     * @param username
+     */
+    public void setUsername(String username) {
+        configuration.setUsername(username);
+    }
+
+    public String getPassword() {
+        return configuration.getPassword();
+    }
+
+    /**
+     * Password to authenticate with
+     * @param password
+     */
+    public void setPassword(String password) {
+        configuration.setPassword(password);
+    }
+
+    public String getEmail() {
+        return configuration.getEmail();
+    }
+
+    /**
+     * Email address associated with the user
+     * @param email
+     */
+    public void setEmail(String email) {
+        configuration.setEmail(email);
+    }
+
+    public String getServerAddress() {
+        return configuration.getServerAddress();
+    }
+
+    /**
+     * Server address for docker registry.
+     * @param serverAddress
+     */
+    public void setServerAddress(String serverAddress) {
+        configuration.setServerAddress(serverAddress);
+    }
+
+    public Integer getRequestTimeout() {
+        return configuration.getRequestTimeout();
+    }
+
+    /**
+     * Request timeout for response (in seconds)
+     * @param requestTimeout
+     */
+    public void setRequestTimeout(Integer requestTimeout) {
+        configuration.setRequestTimeout(requestTimeout);
+    }
+
+    public boolean isSecure() {
+        return configuration.isSecure();
+    }
+
+    /**
+     * Use HTTPS communication
+     * @param secure
+     */
+    public void setSecure(boolean secure) {
+        configuration.setSecure(secure);
+    }
+
+    public String getCertPath() {
+        return configuration.getCertPath();
+    }
+
+    /**
+     * Location containing the SSL certificate chain
+     * @param certPath
+     */
+    public void setCertPath(String certPath) {
+        configuration.setCertPath(certPath);
+    }
+
+    public Integer getMaxTotalConnections() {
+        return configuration.getMaxTotalConnections();
+    }
+
+    /**
+     * Maximum total connections
+     * @param maxTotalConnections
+     */
+    public void setMaxTotalConnections(Integer maxTotalConnections) {
+        configuration.setMaxTotalConnections(maxTotalConnections);
+    }
+
+    public Integer getMaxPerRouteConnections() {
+        return configuration.getMaxPerRouteConnections();
+    }
+
+    /**
+     * Maximum route connections
+     * @param maxPerRouteConnections
+     */
+    public void setMaxPerRouteConnections(Integer maxPerRouteConnections) {
+        configuration.setMaxPerRouteConnections(maxPerRouteConnections);
+    }
+
+    public boolean isLoggingFilterEnabled() {
+        return configuration.isLoggingFilterEnabled();
+    }
+
+    /**
+     * Whether to use logging filter
+     * @param loggingFilterEnabled
+     */
+    public void setLoggingFilter(boolean loggingFilterEnabled) {
+        configuration.setLoggingFilter(loggingFilterEnabled);
+    }
+
+    public boolean isFollowRedirectFilterEnabled() {
+        return configuration.isFollowRedirectFilterEnabled();
+    }
+
+    /**
+     * Whether to follow redirect filter
+     * @param followRedirectFilterEnabled
+     */
+    public void setFollowRedirectFilter(boolean followRedirectFilterEnabled) {
+        configuration.setFollowRedirectFilter(followRedirectFilterEnabled);
+    }
+
+    public Map<String, Object> getParameters() {
+        return configuration.getParameters();
+    }
+
+    /**
+     * Additional configuration parameters as key/value pairs
+     * @param parameters
+     */
+    public void setParameters(Map<String, Object> parameters) {
+        configuration.setParameters(parameters);
+    }
+
+    public DockerOperation getOperation() {
+        return configuration.getOperation();
+    }
+
+    /**
+     * Which operation to use
+     * @param operation
+     */
+    public void setOperation(DockerOperation operation) {
+        configuration.setOperation(operation);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-docker/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-docker/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java b/components/camel-docker/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
index 3a0d850..9ea6808 100644
--- a/components/camel-docker/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
+++ b/components/camel-docker/src/main/java/org/apache/camel/component/docker/springboot/DockerComponentConfiguration.java
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.component.docker.springboot;
 
+import java.util.Map;
 import org.apache.camel.component.docker.DockerConfiguration;
+import org.apache.camel.component.docker.DockerOperation;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +30,70 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class DockerComponentConfiguration {
 
     /**
-     * To use the shared docker configuration
+     * To use the shared docker configuration. Properties of the shared
+     * configuration can also be set individually.
      */
     private DockerConfiguration configuration;
+    /**
+     * Docker host
+     */
+    private String host;
+    /**
+     * Docker port
+     */
+    private Integer port;
+    /**
+     * User name to authenticate with
+     */
+    private String username;
+    /**
+     * Password to authenticate with
+     */
+    private String password;
+    /**
+     * Email address associated with the user
+     */
+    private String email;
+    /**
+     * Server address for docker registry.
+     */
+    private String serverAddress;
+    /**
+     * Request timeout for response (in seconds)
+     */
+    private Integer requestTimeout;
+    /**
+     * Use HTTPS communication
+     */
+    private Boolean secure = false;
+    /**
+     * Location containing the SSL certificate chain
+     */
+    private String certPath;
+    /**
+     * Maximum total connections
+     */
+    private Integer maxTotalConnections;
+    /**
+     * Maximum route connections
+     */
+    private Integer maxPerRouteConnections;
+    /**
+     * Whether to use logging filter
+     */
+    private Boolean loggingFilter = false;
+    /**
+     * Whether to follow redirect filter
+     */
+    private Boolean followRedirectFilter = false;
+    /**
+     * Additional configuration parameters as key/value pairs
+     */
+    private Map<String, Object> parameters;
+    /**
+     * Which operation to use
+     */
+    private DockerOperation operation;
 
     public DockerConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +102,124 @@ public class DockerComponentConfiguration {
     public void setConfiguration(DockerConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getServerAddress() {
+        return serverAddress;
+    }
+
+    public void setServerAddress(String serverAddress) {
+        this.serverAddress = serverAddress;
+    }
+
+    public Integer getRequestTimeout() {
+        return requestTimeout;
+    }
+
+    public void setRequestTimeout(Integer requestTimeout) {
+        this.requestTimeout = requestTimeout;
+    }
+
+    public Boolean getSecure() {
+        return secure;
+    }
+
+    public void setSecure(Boolean secure) {
+        this.secure = secure;
+    }
+
+    public String getCertPath() {
+        return certPath;
+    }
+
+    public void setCertPath(String certPath) {
+        this.certPath = certPath;
+    }
+
+    public Integer getMaxTotalConnections() {
+        return maxTotalConnections;
+    }
+
+    public void setMaxTotalConnections(Integer maxTotalConnections) {
+        this.maxTotalConnections = maxTotalConnections;
+    }
+
+    public Integer getMaxPerRouteConnections() {
+        return maxPerRouteConnections;
+    }
+
+    public void setMaxPerRouteConnections(Integer maxPerRouteConnections) {
+        this.maxPerRouteConnections = maxPerRouteConnections;
+    }
+
+    public Boolean getLoggingFilter() {
+        return loggingFilter;
+    }
+
+    public void setLoggingFilter(Boolean loggingFilter) {
+        this.loggingFilter = loggingFilter;
+    }
+
+    public Boolean getFollowRedirectFilter() {
+        return followRedirectFilter;
+    }
+
+    public void setFollowRedirectFilter(Boolean followRedirectFilter) {
+        this.followRedirectFilter = followRedirectFilter;
+    }
+
+    public Map<String, Object> getParameters() {
+        return parameters;
+    }
+
+    public void setParameters(Map<String, Object> parameters) {
+        this.parameters = parameters;
+    }
+
+    public DockerOperation getOperation() {
+        return operation;
+    }
+
+    public void setOperation(DockerOperation operation) {
+        this.operation = operation;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-facebook/src/main/docs/facebook.adoc
----------------------------------------------------------------------
diff --git a/components/camel-facebook/src/main/docs/facebook.adoc b/components/camel-facebook/src/main/docs/facebook.adoc
index 8bea7fe..8f58063 100644
--- a/components/camel-facebook/src/main/docs/facebook.adoc
+++ b/components/camel-facebook/src/main/docs/facebook.adoc
@@ -55,8 +55,9 @@ component using the bean property *configuration* of type
 to application APIs.
 
 
+
 // component options: START
-The Facebook component supports 1 options which are listed below.
+The Facebook component supports 28 options which are listed below.
 
 
 
@@ -64,13 +65,41 @@ The Facebook component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | FacebookConfiguration | To use the shared configuration
+| configuration | FacebookConfiguration | To use the shared configuration. Properties of the shared configuration can also be set individually.
+| oAuthAccessToken | String | The user access token
+| oAuthAccessTokenURL | String | OAuth access token URL
+| oAuthAppId | String | The application Id
+| oAuthAppSecret | String | The application Secret
+| oAuthAuthorizationURL | String | OAuth authorization URL
+| clientURL | String | Facebook4J API client URL
+| clientVersion | String | Facebook4J client API version
+| debugEnabled | Boolean | Enables deubg output. Effective only with the embedded logger
+| gzipEnabled | Boolean | Use Facebook GZIP encoding
+| httpConnectionTimeout | Integer | Http connection timeout in milliseconds
+| httpDefaultMaxPerRoute | Integer | HTTP maximum connections per route
+| httpMaxTotalConnections | Integer | HTTP maximum total connections
+| httpProxyHost | String | HTTP proxy server host name
+| httpProxyPassword | String | HTTP proxy server password
+| httpProxyPort | Integer | HTTP proxy server port
+| httpProxyUser | String | HTTP proxy server user name
+| httpReadTimeout | Integer | Http read timeout in milliseconds
+| httpRetryCount | Integer | Number of HTTP retries
+| httpRetryIntervalSeconds | Integer | HTTP retry interval in seconds
+| httpStreamingReadTimeout | Integer | HTTP streaming read timeout in milliseconds
+| jsonStoreEnabled | Boolean | If set to true raw JSON forms will be stored in DataObjectFactory
+| mbeanEnabled | Boolean | If set to true Facebook4J mbean will be registerd
+| oAuthPermissions | String | Default OAuth permissions. Comma separated permission names. See https://developers.facebook.com/docs/reference/login/permissions for the detail
+| prettyDebugEnabled | Boolean | Prettify JSON debug output if set to true
+| restBaseURL | String | API base URL
+| useSSL | Boolean | Use SSL
+| videoBaseURL | String | Video API base URL
 |=======================================================================
 {% endraw %}
 // component options: END
 
 
 
+
 // endpoint options: START
 The Facebook component supports 103 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
index 84094d8..b2b4588 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/FacebookComponent.java
@@ -81,10 +81,334 @@ public class FacebookComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(FacebookConfiguration configuration) {
         this.configuration = configuration;
     }
 
+    public String getOAuthAccessToken() {
+        return configuration.getOAuthAccessToken();
+    }
+
+    /**
+     * The user access token
+     * @param oAuthAccessToken
+     */
+    public void setOAuthAccessToken(String oAuthAccessToken) {
+        configuration.setOAuthAccessToken(oAuthAccessToken);
+    }
+
+    public String getOAuthAccessTokenURL() {
+        return configuration.getOAuthAccessTokenURL();
+    }
+
+    /**
+     * OAuth access token URL
+     * @param oAuthAccessTokenURL
+     */
+    public void setOAuthAccessTokenURL(String oAuthAccessTokenURL) {
+        configuration.setOAuthAccessTokenURL(oAuthAccessTokenURL);
+    }
+
+    public String getOAuthAppId() {
+        return configuration.getOAuthAppId();
+    }
+
+    /**
+     * The application Id
+     * @param oAuthAppId
+     */
+    public void setOAuthAppId(String oAuthAppId) {
+        configuration.setOAuthAppId(oAuthAppId);
+    }
+
+    public String getOAuthAppSecret() {
+        return configuration.getOAuthAppSecret();
+    }
+
+    /**
+     * The application Secret
+     * @param oAuthAppSecret
+     */
+    public void setOAuthAppSecret(String oAuthAppSecret) {
+        configuration.setOAuthAppSecret(oAuthAppSecret);
+    }
+
+    public String getOAuthAuthorizationURL() {
+        return configuration.getOAuthAuthorizationURL();
+    }
+
+    /**
+     * OAuth authorization URL
+     * @param oAuthAuthorizationURL
+     */
+    public void setOAuthAuthorizationURL(String oAuthAuthorizationURL) {
+        configuration.setOAuthAuthorizationURL(oAuthAuthorizationURL);
+    }
+
+    public String getClientURL() {
+        return configuration.getClientURL();
+    }
+
+    /**
+     * Facebook4J API client URL
+     * @param clientURL
+     */
+    public void setClientURL(String clientURL) {
+        configuration.setClientURL(clientURL);
+    }
+
+    public String getClientVersion() {
+        return configuration.getClientVersion();
+    }
+
+    /**
+     * Facebook4J client API version
+     * @param clientVersion
+     */
+    public void setClientVersion(String clientVersion) {
+        configuration.setClientVersion(clientVersion);
+    }
+
+    public Boolean getDebugEnabled() {
+        return configuration.getDebugEnabled();
+    }
+
+    /**
+     * Enables deubg output. Effective only with the embedded logger
+     * @param debugEnabled
+     */
+    public void setDebugEnabled(Boolean debugEnabled) {
+        configuration.setDebugEnabled(debugEnabled);
+    }
+
+    public Boolean getGzipEnabled() {
+        return configuration.getGzipEnabled();
+    }
+
+    /**
+     * Use Facebook GZIP encoding
+     * @param gzipEnabled
+     */
+    public void setGzipEnabled(Boolean gzipEnabled) {
+        configuration.setGzipEnabled(gzipEnabled);
+    }
+
+    public Integer getHttpConnectionTimeout() {
+        return configuration.getHttpConnectionTimeout();
+    }
+
+    /**
+     * Http connection timeout in milliseconds
+     * @param httpConnectionTimeout
+     */
+    public void setHttpConnectionTimeout(Integer httpConnectionTimeout) {
+        configuration.setHttpConnectionTimeout(httpConnectionTimeout);
+    }
+
+    public Integer getHttpDefaultMaxPerRoute() {
+        return configuration.getHttpDefaultMaxPerRoute();
+    }
+
+    /**
+     * HTTP maximum connections per route
+     * @param httpDefaultMaxPerRoute
+     */
+    public void setHttpDefaultMaxPerRoute(Integer httpDefaultMaxPerRoute) {
+        configuration.setHttpDefaultMaxPerRoute(httpDefaultMaxPerRoute);
+    }
+
+    public Integer getHttpMaxTotalConnections() {
+        return configuration.getHttpMaxTotalConnections();
+    }
+
+    /**
+     * HTTP maximum total connections
+     * @param httpMaxTotalConnections
+     */
+    public void setHttpMaxTotalConnections(Integer httpMaxTotalConnections) {
+        configuration.setHttpMaxTotalConnections(httpMaxTotalConnections);
+    }
+
+    public String getHttpProxyHost() {
+        return configuration.getHttpProxyHost();
+    }
+
+    /**
+     * HTTP proxy server host name
+     * @param httpProxyHost
+     */
+    public void setHttpProxyHost(String httpProxyHost) {
+        configuration.setHttpProxyHost(httpProxyHost);
+    }
+
+    public String getHttpProxyPassword() {
+        return configuration.getHttpProxyPassword();
+    }
+
+    /**
+     * HTTP proxy server password
+     * @param httpProxyPassword
+     */
+    public void setHttpProxyPassword(String httpProxyPassword) {
+        configuration.setHttpProxyPassword(httpProxyPassword);
+    }
+
+    public Integer getHttpProxyPort() {
+        return configuration.getHttpProxyPort();
+    }
+
+    /**
+     * HTTP proxy server port
+     * @param httpProxyPort
+     */
+    public void setHttpProxyPort(Integer httpProxyPort) {
+        configuration.setHttpProxyPort(httpProxyPort);
+    }
+
+    public String getHttpProxyUser() {
+        return configuration.getHttpProxyUser();
+    }
+
+    /**
+     * HTTP proxy server user name
+     * @param httpProxyUser
+     */
+    public void setHttpProxyUser(String httpProxyUser) {
+        configuration.setHttpProxyUser(httpProxyUser);
+    }
+
+    public Integer getHttpReadTimeout() {
+        return configuration.getHttpReadTimeout();
+    }
+
+    /**
+     * Http read timeout in milliseconds
+     * @param httpReadTimeout
+     */
+    public void setHttpReadTimeout(Integer httpReadTimeout) {
+        configuration.setHttpReadTimeout(httpReadTimeout);
+    }
+
+    public Integer getHttpRetryCount() {
+        return configuration.getHttpRetryCount();
+    }
+
+    /**
+     * Number of HTTP retries
+     * @param httpRetryCount
+     */
+    public void setHttpRetryCount(Integer httpRetryCount) {
+        configuration.setHttpRetryCount(httpRetryCount);
+    }
+
+    public Integer getHttpRetryIntervalSeconds() {
+        return configuration.getHttpRetryIntervalSeconds();
+    }
+
+    /**
+     * HTTP retry interval in seconds
+     * @param httpRetryIntervalSeconds
+     */
+    public void setHttpRetryIntervalSeconds(Integer httpRetryIntervalSeconds) {
+        configuration.setHttpRetryIntervalSeconds(httpRetryIntervalSeconds);
+    }
+
+    public Integer getHttpStreamingReadTimeout() {
+        return configuration.getHttpStreamingReadTimeout();
+    }
+
+    /**
+     * HTTP streaming read timeout in milliseconds
+     * @param httpStreamingReadTimeout
+     */
+    public void setHttpStreamingReadTimeout(Integer httpStreamingReadTimeout) {
+        configuration.setHttpStreamingReadTimeout(httpStreamingReadTimeout);
+    }
+
+    public Boolean getJsonStoreEnabled() {
+        return configuration.getJsonStoreEnabled();
+    }
+
+    /**
+     * If set to true, raw JSON forms will be stored in DataObjectFactory
+     * @param jsonStoreEnabled
+     */
+    public void setJsonStoreEnabled(Boolean jsonStoreEnabled) {
+        configuration.setJsonStoreEnabled(jsonStoreEnabled);
+    }
+
+    public Boolean getMbeanEnabled() {
+        return configuration.getMbeanEnabled();
+    }
+
+    /**
+     * If set to true, Facebook4J mbean will be registerd
+     * @param mbeanEnabled
+     */
+    public void setMbeanEnabled(Boolean mbeanEnabled) {
+        configuration.setMbeanEnabled(mbeanEnabled);
+    }
+
+    public String getOAuthPermissions() {
+        return configuration.getOAuthPermissions();
+    }
+
+    /**
+     * Default OAuth permissions. Comma separated permission names.
+     * See https://developers.facebook.com/docs/reference/login/#permissions for the detail
+     * @param oAuthPermissions
+     */
+    public void setOAuthPermissions(String oAuthPermissions) {
+        configuration.setOAuthPermissions(oAuthPermissions);
+    }
+
+    public Boolean getPrettyDebugEnabled() {
+        return configuration.getPrettyDebugEnabled();
+    }
+
+    /**
+     * Prettify JSON debug output if set to true
+     * @param prettyDebugEnabled
+     */
+    public void setPrettyDebugEnabled(Boolean prettyDebugEnabled) {
+        configuration.setPrettyDebugEnabled(prettyDebugEnabled);
+    }
+
+    public String getRestBaseURL() {
+        return configuration.getRestBaseURL();
+    }
+
+    /**
+     * API base URL
+     * @param restBaseURL
+     */
+    public void setRestBaseURL(String restBaseURL) {
+        configuration.setRestBaseURL(restBaseURL);
+    }
+
+    public Boolean getUseSSL() {
+        return configuration.getUseSSL();
+    }
+
+    /**
+     * Use SSL
+     * @param useSSL
+     */
+    public void setUseSSL(Boolean useSSL) {
+        configuration.setUseSSL(useSSL);
+    }
+
+    public String getVideoBaseURL() {
+        return configuration.getVideoBaseURL();
+    }
+
+    /**
+     * Video API base URL
+     * @param videoBaseURL
+     */
+    public void setVideoBaseURL(String videoBaseURL) {
+        configuration.setVideoBaseURL(videoBaseURL);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/springboot/FacebookComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/springboot/FacebookComponentConfiguration.java b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/springboot/FacebookComponentConfiguration.java
index 850b557..8bfdb79 100644
--- a/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/springboot/FacebookComponentConfiguration.java
+++ b/components/camel-facebook/src/main/java/org/apache/camel/component/facebook/springboot/FacebookComponentConfiguration.java
@@ -29,9 +29,120 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class FacebookComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private FacebookConfiguration configuration;
+    /**
+     * The user access token
+     */
+    private String oAuthAccessToken;
+    /**
+     * OAuth access token URL
+     */
+    private String oAuthAccessTokenURL;
+    /**
+     * The application Id
+     */
+    private String oAuthAppId;
+    /**
+     * The application Secret
+     */
+    private String oAuthAppSecret;
+    /**
+     * OAuth authorization URL
+     */
+    private String oAuthAuthorizationURL;
+    /**
+     * Facebook4J API client URL
+     */
+    private String clientURL;
+    /**
+     * Facebook4J client API version
+     */
+    private String clientVersion;
+    /**
+     * Enables deubg output. Effective only with the embedded logger
+     */
+    private Boolean debugEnabled;
+    /**
+     * Use Facebook GZIP encoding
+     */
+    private Boolean gzipEnabled;
+    /**
+     * Http connection timeout in milliseconds
+     */
+    private Integer httpConnectionTimeout;
+    /**
+     * HTTP maximum connections per route
+     */
+    private Integer httpDefaultMaxPerRoute;
+    /**
+     * HTTP maximum total connections
+     */
+    private Integer httpMaxTotalConnections;
+    /**
+     * HTTP proxy server host name
+     */
+    private String httpProxyHost;
+    /**
+     * HTTP proxy server password
+     */
+    private String httpProxyPassword;
+    /**
+     * HTTP proxy server port
+     */
+    private Integer httpProxyPort;
+    /**
+     * HTTP proxy server user name
+     */
+    private String httpProxyUser;
+    /**
+     * Http read timeout in milliseconds
+     */
+    private Integer httpReadTimeout;
+    /**
+     * Number of HTTP retries
+     */
+    private Integer httpRetryCount;
+    /**
+     * HTTP retry interval in seconds
+     */
+    private Integer httpRetryIntervalSeconds;
+    /**
+     * HTTP streaming read timeout in milliseconds
+     */
+    private Integer httpStreamingReadTimeout;
+    /**
+     * If set to true raw JSON forms will be stored in DataObjectFactory
+     */
+    private Boolean jsonStoreEnabled;
+    /**
+     * If set to true Facebook4J mbean will be registerd
+     */
+    private Boolean mbeanEnabled;
+    /**
+     * Default OAuth permissions. Comma separated permission names. See
+     * https://developers.facebook.com/docs/reference/login/permissions for the
+     * detail
+     */
+    private String oAuthPermissions;
+    /**
+     * Prettify JSON debug output if set to true
+     */
+    private Boolean prettyDebugEnabled;
+    /**
+     * API base URL
+     */
+    private String restBaseURL;
+    /**
+     * Use SSL
+     */
+    private Boolean useSSL;
+    /**
+     * Video API base URL
+     */
+    private String videoBaseURL;
 
     public FacebookConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +151,220 @@ public class FacebookComponentConfiguration {
     public void setConfiguration(FacebookConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getOAuthAccessToken() {
+        return oAuthAccessToken;
+    }
+
+    public void setOAuthAccessToken(String oAuthAccessToken) {
+        this.oAuthAccessToken = oAuthAccessToken;
+    }
+
+    public String getOAuthAccessTokenURL() {
+        return oAuthAccessTokenURL;
+    }
+
+    public void setOAuthAccessTokenURL(String oAuthAccessTokenURL) {
+        this.oAuthAccessTokenURL = oAuthAccessTokenURL;
+    }
+
+    public String getOAuthAppId() {
+        return oAuthAppId;
+    }
+
+    public void setOAuthAppId(String oAuthAppId) {
+        this.oAuthAppId = oAuthAppId;
+    }
+
+    public String getOAuthAppSecret() {
+        return oAuthAppSecret;
+    }
+
+    public void setOAuthAppSecret(String oAuthAppSecret) {
+        this.oAuthAppSecret = oAuthAppSecret;
+    }
+
+    public String getOAuthAuthorizationURL() {
+        return oAuthAuthorizationURL;
+    }
+
+    public void setOAuthAuthorizationURL(String oAuthAuthorizationURL) {
+        this.oAuthAuthorizationURL = oAuthAuthorizationURL;
+    }
+
+    public String getClientURL() {
+        return clientURL;
+    }
+
+    public void setClientURL(String clientURL) {
+        this.clientURL = clientURL;
+    }
+
+    public String getClientVersion() {
+        return clientVersion;
+    }
+
+    public void setClientVersion(String clientVersion) {
+        this.clientVersion = clientVersion;
+    }
+
+    public Boolean getDebugEnabled() {
+        return debugEnabled;
+    }
+
+    public void setDebugEnabled(Boolean debugEnabled) {
+        this.debugEnabled = debugEnabled;
+    }
+
+    public Boolean getGzipEnabled() {
+        return gzipEnabled;
+    }
+
+    public void setGzipEnabled(Boolean gzipEnabled) {
+        this.gzipEnabled = gzipEnabled;
+    }
+
+    public Integer getHttpConnectionTimeout() {
+        return httpConnectionTimeout;
+    }
+
+    public void setHttpConnectionTimeout(Integer httpConnectionTimeout) {
+        this.httpConnectionTimeout = httpConnectionTimeout;
+    }
+
+    public Integer getHttpDefaultMaxPerRoute() {
+        return httpDefaultMaxPerRoute;
+    }
+
+    public void setHttpDefaultMaxPerRoute(Integer httpDefaultMaxPerRoute) {
+        this.httpDefaultMaxPerRoute = httpDefaultMaxPerRoute;
+    }
+
+    public Integer getHttpMaxTotalConnections() {
+        return httpMaxTotalConnections;
+    }
+
+    public void setHttpMaxTotalConnections(Integer httpMaxTotalConnections) {
+        this.httpMaxTotalConnections = httpMaxTotalConnections;
+    }
+
+    public String getHttpProxyHost() {
+        return httpProxyHost;
+    }
+
+    public void setHttpProxyHost(String httpProxyHost) {
+        this.httpProxyHost = httpProxyHost;
+    }
+
+    public String getHttpProxyPassword() {
+        return httpProxyPassword;
+    }
+
+    public void setHttpProxyPassword(String httpProxyPassword) {
+        this.httpProxyPassword = httpProxyPassword;
+    }
+
+    public Integer getHttpProxyPort() {
+        return httpProxyPort;
+    }
+
+    public void setHttpProxyPort(Integer httpProxyPort) {
+        this.httpProxyPort = httpProxyPort;
+    }
+
+    public String getHttpProxyUser() {
+        return httpProxyUser;
+    }
+
+    public void setHttpProxyUser(String httpProxyUser) {
+        this.httpProxyUser = httpProxyUser;
+    }
+
+    public Integer getHttpReadTimeout() {
+        return httpReadTimeout;
+    }
+
+    public void setHttpReadTimeout(Integer httpReadTimeout) {
+        this.httpReadTimeout = httpReadTimeout;
+    }
+
+    public Integer getHttpRetryCount() {
+        return httpRetryCount;
+    }
+
+    public void setHttpRetryCount(Integer httpRetryCount) {
+        this.httpRetryCount = httpRetryCount;
+    }
+
+    public Integer getHttpRetryIntervalSeconds() {
+        return httpRetryIntervalSeconds;
+    }
+
+    public void setHttpRetryIntervalSeconds(Integer httpRetryIntervalSeconds) {
+        this.httpRetryIntervalSeconds = httpRetryIntervalSeconds;
+    }
+
+    public Integer getHttpStreamingReadTimeout() {
+        return httpStreamingReadTimeout;
+    }
+
+    public void setHttpStreamingReadTimeout(Integer httpStreamingReadTimeout) {
+        this.httpStreamingReadTimeout = httpStreamingReadTimeout;
+    }
+
+    public Boolean getJsonStoreEnabled() {
+        return jsonStoreEnabled;
+    }
+
+    public void setJsonStoreEnabled(Boolean jsonStoreEnabled) {
+        this.jsonStoreEnabled = jsonStoreEnabled;
+    }
+
+    public Boolean getMbeanEnabled() {
+        return mbeanEnabled;
+    }
+
+    public void setMbeanEnabled(Boolean mbeanEnabled) {
+        this.mbeanEnabled = mbeanEnabled;
+    }
+
+    public String getOAuthPermissions() {
+        return oAuthPermissions;
+    }
+
+    public void setOAuthPermissions(String oAuthPermissions) {
+        this.oAuthPermissions = oAuthPermissions;
+    }
+
+    public Boolean getPrettyDebugEnabled() {
+        return prettyDebugEnabled;
+    }
+
+    public void setPrettyDebugEnabled(Boolean prettyDebugEnabled) {
+        this.prettyDebugEnabled = prettyDebugEnabled;
+    }
+
+    public String getRestBaseURL() {
+        return restBaseURL;
+    }
+
+    public void setRestBaseURL(String restBaseURL) {
+        this.restBaseURL = restBaseURL;
+    }
+
+    public Boolean getUseSSL() {
+        return useSSL;
+    }
+
+    public void setUseSSL(Boolean useSSL) {
+        this.useSSL = useSSL;
+    }
+
+    public String getVideoBaseURL() {
+        return videoBaseURL;
+    }
+
+    public void setVideoBaseURL(String videoBaseURL) {
+        this.videoBaseURL = videoBaseURL;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-ganglia/src/main/docs/ganglia.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ganglia/src/main/docs/ganglia.adoc b/components/camel-ganglia/src/main/docs/ganglia.adoc
index 1fd74eb..3c5e6e7 100644
--- a/components/camel-ganglia/src/main/docs/ganglia.adoc
+++ b/components/camel-ganglia/src/main/docs/ganglia.adoc
@@ -55,8 +55,9 @@ Ganglia component and endpoint URI options
 
 
 
+
 // component options: START
-The Ganglia component supports 1 options which are listed below.
+The Ganglia component supports 15 options which are listed below.
 
 
 
@@ -64,7 +65,21 @@ The Ganglia component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | GangliaConfiguration | To use the shared configuration
+| configuration | GangliaConfiguration | To use the shared configuration. Properties of the shared configuration can also be set individually.
+| host | String | Host name for Ganglia server
+| port | int | Port for Ganglia server
+| mode | UDPAddressingMode | Send the UDP metric packets using MULTICAST or UNICAST
+| ttl | int | If using multicast set the TTL of the packets
+| wireFormat31x | boolean | Use the wire format of Ganglia 3.1.0 and later versions. Set this to false to use Ganglia 3.0.x or earlier.
+| spoofHostname | String | Spoofing information IP:hostname
+| groupName | String | The group that the metric belongs to.
+| prefix | String | Prefix the metric name with this string and an underscore.
+| metricName | String | The name to use for the metric.
+| type | GMetricType | The type of value
+| slope | GMetricSlope | The slope
+| units | String | Any unit of measurement that qualifies the metric e.g. widgets litres bytes. Do not include a prefix such as k (kilo) or m (milli) other tools may scale the units later. The value should be unscaled.
+| tmax | int | Maximum time in seconds that the value can be considered current. After this Ganglia considers the value to have expired.
+| dmax | int | Minumum time in seconds before Ganglia will purge the metric value if it expires. Set to 0 and the value will remain in Ganglia indefinitely until a gmond agent restart.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -72,6 +87,7 @@ The Ganglia component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Ganglia component supports 16 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
index fb2562f..f28010c 100644
--- a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
+++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
@@ -23,6 +23,10 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ObjectHelper;
 
+import info.ganglia.gmetric4j.gmetric.GMetric;
+import info.ganglia.gmetric4j.gmetric.GMetricSlope;
+import info.ganglia.gmetric4j.gmetric.GMetricType;
+
 public class GangliaComponent extends UriEndpointComponent {
 
     private GangliaConfiguration configuration;
@@ -54,9 +58,185 @@ public class GangliaComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(GangliaConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return configuration.getHost();
+    }
+
+    /**
+     * Host name for Ganglia server
+     * @param host
+     */
+    public void setHost(String host) {
+        configuration.setHost(host);
+    }
+
+    public int getPort() {
+        return configuration.getPort();
+    }
+
+    /**
+     * Port for Ganglia server
+     * @param port
+     */
+    public void setPort(int port) {
+        configuration.setPort(port);
+    }
+
+    public GMetric.UDPAddressingMode getMode() {
+        return configuration.getMode();
+    }
+
+    /**
+     * Send the UDP metric packets using MULTICAST or UNICAST
+     * @param mode
+     */
+    public void setMode(GMetric.UDPAddressingMode mode) {
+        configuration.setMode(mode);
+    }
+
+    public int getTtl() {
+        return configuration.getTtl();
+    }
+
+    /**
+     * If using multicast, set the TTL of the packets
+     * @param ttl
+     */
+    public void setTtl(int ttl) {
+        configuration.setTtl(ttl);
+    }
+
+    public boolean getWireFormat31x() {
+        return configuration.getWireFormat31x();
+    }
+
+    /**
+     * Use the wire format of Ganglia 3.1.0 and later versions.  Set this to false to use Ganglia 3.0.x or earlier.
+     * @param wireFormat31x
+     */
+    public void setWireFormat31x(boolean wireFormat31x) {
+        configuration.setWireFormat31x(wireFormat31x);
+    }
+
+    public String getSpoofHostname() {
+        return configuration.getSpoofHostname();
+    }
+
+    /**
+     * Spoofing information IP:hostname
+     * @param spoofHostname
+     */
+    public void setSpoofHostname(String spoofHostname) {
+        configuration.setSpoofHostname(spoofHostname);
+    }
+
+    public String getGroupName() {
+        return configuration.getGroupName();
+    }
+
+    /**
+     * The group that the metric belongs to.
+     * @param groupName
+     */
+    public void setGroupName(String groupName) {
+        configuration.setGroupName(groupName);
+    }
+
+    public String getPrefix() {
+        return configuration.getPrefix();
+    }
+
+    /**
+     * Prefix the metric name with this string and an underscore.
+     * @param prefix
+     */
+    public void setPrefix(String prefix) {
+        configuration.setPrefix(prefix);
+    }
+
+    public String getMetricName() {
+        return configuration.getMetricName();
+    }
+
+    /**
+     * The name to use for the metric.
+     * @param metricName
+     */
+    public void setMetricName(String metricName) {
+        configuration.setMetricName(metricName);
+    }
+
+    public GMetricType getType() {
+        return configuration.getType();
+    }
+
+    /**
+     * The type of value
+     * @param type
+     */
+    public void setType(GMetricType type) {
+        configuration.setType(type);
+    }
+
+    public GMetricSlope getSlope() {
+        return configuration.getSlope();
+    }
+
+    /**
+     * The slope
+     * @param slope
+     */
+    public void setSlope(GMetricSlope slope) {
+        configuration.setSlope(slope);
+    }
+
+    public String getUnits() {
+        return configuration.getUnits();
+    }
+
+    /**
+     * Any unit of measurement that qualifies the metric, e.g. widgets, litres, bytes.
+     * Do not include a prefix such as k (kilo) or m (milli), other tools may scale the units later.
+     * The value should be unscaled.
+     * @param units
+     */
+    public void setUnits(String units) {
+        configuration.setUnits(units);
+    }
+
+    public boolean isWireFormat31x() {
+        return configuration.isWireFormat31x();
+    }
+
+    public int getTmax() {
+        return configuration.getTmax();
+    }
+
+    /**
+     * Maximum time in seconds that the value can be considered current.
+     * After this, Ganglia considers the value to have expired.
+     * @param tmax
+     */
+    public void setTmax(int tmax) {
+        configuration.setTmax(tmax);
+    }
+
+    public int getDmax() {
+        return configuration.getDmax();
+    }
+
+    /**
+     * Minumum time in seconds before Ganglia will purge the metric value if it expires.
+     * Set to 0 and the value will remain in Ganglia indefinitely until a gmond agent restart.
+     * @param dmax
+     */
+    public void setDmax(int dmax) {
+        configuration.setDmax(dmax);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/springboot/GangliaComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/springboot/GangliaComponentConfiguration.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/springboot/GangliaComponentConfiguration.java
index 1744745..66d2cc9 100644
--- a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/springboot/GangliaComponentConfiguration.java
+++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/springboot/GangliaComponentConfiguration.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.component.ganglia.springboot;
 
+import info.ganglia.gmetric4j.gmetric.GMetric.UDPAddressingMode;
+import info.ganglia.gmetric4j.gmetric.GMetricSlope;
+import info.ganglia.gmetric4j.gmetric.GMetricType;
 import org.apache.camel.component.ganglia.GangliaConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
@@ -29,9 +32,72 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class GangliaComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private GangliaConfiguration configuration;
+    /**
+     * Host name for Ganglia server
+     */
+    private String host;
+    /**
+     * Port for Ganglia server
+     */
+    private Integer port;
+    /**
+     * Send the UDP metric packets using MULTICAST or UNICAST
+     */
+    private UDPAddressingMode mode;
+    /**
+     * If using multicast set the TTL of the packets
+     */
+    private Integer ttl;
+    /**
+     * Use the wire format of Ganglia 3.1.0 and later versions. Set this to
+     * false to use Ganglia 3.0.x or earlier.
+     */
+    private Boolean wireFormat31x = false;
+    /**
+     * Spoofing information IP:hostname
+     */
+    private String spoofHostname;
+    /**
+     * The group that the metric belongs to.
+     */
+    private String groupName;
+    /**
+     * Prefix the metric name with this string and an underscore.
+     */
+    private String prefix;
+    /**
+     * The name to use for the metric.
+     */
+    private String metricName;
+    /**
+     * The type of value
+     */
+    private GMetricType type;
+    /**
+     * The slope
+     */
+    private GMetricSlope slope;
+    /**
+     * Any unit of measurement that qualifies the metric e.g. widgets litres
+     * bytes. Do not include a prefix such as k (kilo) or m (milli) other tools
+     * may scale the units later. The value should be unscaled.
+     */
+    private String units;
+    /**
+     * Maximum time in seconds that the value can be considered current. After
+     * this Ganglia considers the value to have expired.
+     */
+    private Integer tmax;
+    /**
+     * Minumum time in seconds before Ganglia will purge the metric value if it
+     * expires. Set to 0 and the value will remain in Ganglia indefinitely until
+     * a gmond agent restart.
+     */
+    private Integer dmax;
 
     public GangliaConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +106,116 @@ public class GangliaComponentConfiguration {
     public void setConfiguration(GangliaConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public UDPAddressingMode getMode() {
+        return mode;
+    }
+
+    public void setMode(UDPAddressingMode mode) {
+        this.mode = mode;
+    }
+
+    public Integer getTtl() {
+        return ttl;
+    }
+
+    public void setTtl(Integer ttl) {
+        this.ttl = ttl;
+    }
+
+    public Boolean getWireFormat31x() {
+        return wireFormat31x;
+    }
+
+    public void setWireFormat31x(Boolean wireFormat31x) {
+        this.wireFormat31x = wireFormat31x;
+    }
+
+    public String getSpoofHostname() {
+        return spoofHostname;
+    }
+
+    public void setSpoofHostname(String spoofHostname) {
+        this.spoofHostname = spoofHostname;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+
+    public String getMetricName() {
+        return metricName;
+    }
+
+    public void setMetricName(String metricName) {
+        this.metricName = metricName;
+    }
+
+    public GMetricType getType() {
+        return type;
+    }
+
+    public void setType(GMetricType type) {
+        this.type = type;
+    }
+
+    public GMetricSlope getSlope() {
+        return slope;
+    }
+
+    public void setSlope(GMetricSlope slope) {
+        this.slope = slope;
+    }
+
+    public String getUnits() {
+        return units;
+    }
+
+    public void setUnits(String units) {
+        this.units = units;
+    }
+
+    public Integer getTmax() {
+        return tmax;
+    }
+
+    public void setTmax(Integer tmax) {
+        this.tmax = tmax;
+    }
+
+    public Integer getDmax() {
+        return dmax;
+    }
+
+    public void setDmax(Integer dmax) {
+        this.dmax = dmax;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-calendar/src/main/docs/google-calendar.adoc
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/docs/google-calendar.adoc b/components/camel-google-calendar/src/main/docs/google-calendar.adoc
index d55f66c..88b87a2 100644
--- a/components/camel-google-calendar/src/main/docs/google-calendar.adoc
+++ b/components/camel-google-calendar/src/main/docs/google-calendar.adoc
@@ -40,8 +40,9 @@ for this component:
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
+
 // component options: START
-The Google Calendar component supports 2 options which are listed below.
+The Google Calendar component supports 13 options which are listed below.
 
 
 
@@ -49,8 +50,19 @@ The Google Calendar component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | GoogleCalendarConfiguration | To use the shared configuration
+| configuration | GoogleCalendarConfiguration | To use the shared configuration. Properties of the shared configuration can also be set individually.
 | clientFactory | GoogleCalendarClientFactory | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleCalendarClientFactory
+| apiName | GoogleCalendarApiName | What kind of operation to perform
+| methodName | String | What sub operation to use for the selected operation
+| clientId | String | Client ID of the calendar application
+| emailAddress | String | The emailAddress of the Google Service Account.
+| clientSecret | String | Client secret of the calendar application
+| accessToken | String | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+| refreshToken | String | OAuth 2 refresh token. Using this the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+| applicationName | String | Google calendar application name. Example would be camel-google-calendar/1.0
+| scopes | List | Specifies the level of permissions you want a calendar application to have to a user account. See https://developers.google.com/google-apps/calendar/auth for more info.
+| p12FileName | String | The name of the p12 file which has the private key to use with the Google Service Account.
+| user | String | The email address of the user the application is trying to impersonate in the service account flow
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -60,6 +72,7 @@ The Google Calendar component supports 2 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Google Calendar component supports 16 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
index d140ee4..cab3576 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/GoogleCalendarComponent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.google.calendar;
 
+import java.util.List;
+
 import com.google.api.services.calendar.Calendar;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -68,7 +70,7 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(GoogleCalendarConfiguration configuration) {
@@ -90,4 +92,144 @@ public class GoogleCalendarComponent extends AbstractApiComponent<GoogleCalendar
         endpointConfiguration.setMethodName(methodName);
         return new GoogleCalendarEndpoint(uri, this, apiName, methodName, endpointConfiguration);
     }
+
+
+    private GoogleCalendarConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new GoogleCalendarConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public GoogleCalendarApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(GoogleCalendarApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getClientId() {
+        return getConfigurationOrCreate().getClientId();
+    }
+
+    /**
+     * Client ID of the calendar application
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getConfigurationOrCreate().setClientId(clientId);
+    }
+
+    public String getEmailAddress() {
+        return getConfigurationOrCreate().getEmailAddress();
+    }
+
+    /**
+     * The emailAddress of the Google Service Account.
+     * @param emailAddress
+     */
+    public void setEmailAddress(String emailAddress) {
+        getConfigurationOrCreate().setEmailAddress(emailAddress);
+    }
+
+    public String getClientSecret() {
+        return getConfigurationOrCreate().getClientSecret();
+    }
+
+    /**
+     * Client secret of the calendar application
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getConfigurationOrCreate().setClientSecret(clientSecret);
+    }
+
+    public String getAccessToken() {
+        return getConfigurationOrCreate().getAccessToken();
+    }
+
+    /**
+     * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+     * @param accessToken
+     */
+    public void setAccessToken(String accessToken) {
+        getConfigurationOrCreate().setAccessToken(accessToken);
+    }
+
+    public String getRefreshToken() {
+        return getConfigurationOrCreate().getRefreshToken();
+    }
+
+    /**
+     * OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+     * @param refreshToken
+     */
+    public void setRefreshToken(String refreshToken) {
+        getConfigurationOrCreate().setRefreshToken(refreshToken);
+    }
+
+    public String getApplicationName() {
+        return getConfigurationOrCreate().getApplicationName();
+    }
+
+    /**
+     * Google calendar application name. Example would be "camel-google-calendar/1.0"
+     * @param applicationName
+     */
+    public void setApplicationName(String applicationName) {
+        getConfigurationOrCreate().setApplicationName(applicationName);
+    }
+
+    public List<String> getScopes() {
+        return getConfigurationOrCreate().getScopes();
+    }
+
+    /**
+     * Specifies the level of permissions you want a calendar application to have to a user account. See https://developers.google.com/google-apps/calendar/auth for more info.
+     * @param scopes
+     */
+    public void setScopes(List<String> scopes) {
+        getConfigurationOrCreate().setScopes(scopes);
+    }
+
+    public String getP12FileName() {
+        return getConfigurationOrCreate().getP12FileName();
+    }
+
+    /**
+     * The name of the p12 file which has the private key to use with the Google Service Account.
+     * @param p12FileName
+     */
+    public void setP12FileName(String p12FileName) {
+        getConfigurationOrCreate().setP12FileName(p12FileName);
+    }
+
+    public String getUser() {
+        return getConfigurationOrCreate().getUser();
+    }
+
+    /**
+     * The email address of the user the application is trying to impersonate in the service account flow
+     * @param user
+     */
+    public void setUser(String user) {
+        getConfigurationOrCreate().setUser(user);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/springboot/GoogleCalendarComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/springboot/GoogleCalendarComponentConfiguration.java b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/springboot/GoogleCalendarComponentConfiguration.java
index ebc6f52..e62f9ec 100644
--- a/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/springboot/GoogleCalendarComponentConfiguration.java
+++ b/components/camel-google-calendar/src/main/java/org/apache/camel/component/google/calendar/springboot/GoogleCalendarComponentConfiguration.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.google.calendar.springboot;
 
+import java.util.List;
 import org.apache.camel.component.google.calendar.GoogleCalendarClientFactory;
 import org.apache.camel.component.google.calendar.GoogleCalendarConfiguration;
+import org.apache.camel.component.google.calendar.internal.GoogleCalendarApiName;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,7 +31,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class GoogleCalendarComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private GoogleCalendarConfiguration configuration;
     /**
@@ -37,6 +40,58 @@ public class GoogleCalendarComponentConfiguration {
      * client. Will by default use BatchGoogleCalendarClientFactory
      */
     private GoogleCalendarClientFactory clientFactory;
+    /**
+     * What kind of operation to perform
+     */
+    private GoogleCalendarApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * Client ID of the calendar application
+     */
+    private String clientId;
+    /**
+     * The emailAddress of the Google Service Account.
+     */
+    private String emailAddress;
+    /**
+     * Client secret of the calendar application
+     */
+    private String clientSecret;
+    /**
+     * OAuth 2 access token. This typically expires after an hour so
+     * refreshToken is recommended for long term usage.
+     */
+    private String accessToken;
+    /**
+     * OAuth 2 refresh token. Using this the Google Calendar component can
+     * obtain a new accessToken whenever the current one expires - a necessity
+     * if the application is long-lived.
+     */
+    private String refreshToken;
+    /**
+     * Google calendar application name. Example would be
+     * camel-google-calendar/1.0
+     */
+    private String applicationName;
+    /**
+     * Specifies the level of permissions you want a calendar application to
+     * have to a user account. See
+     * https://developers.google.com/google-apps/calendar/auth for more info.
+     */
+    private List<String> scopes;
+    /**
+     * The name of the p12 file which has the private key to use with the Google
+     * Service Account.
+     */
+    private String p12FileName;
+    /**
+     * The email address of the user the application is trying to impersonate in
+     * the service account flow
+     */
+    private String user;
 
     public GoogleCalendarConfiguration getConfiguration() {
         return configuration;
@@ -53,4 +108,92 @@ public class GoogleCalendarComponentConfiguration {
     public void setClientFactory(GoogleCalendarClientFactory clientFactory) {
         this.clientFactory = clientFactory;
     }
+
+    public GoogleCalendarApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(GoogleCalendarApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getEmailAddress() {
+        return emailAddress;
+    }
+
+    public void setEmailAddress(String emailAddress) {
+        this.emailAddress = emailAddress;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getRefreshToken() {
+        return refreshToken;
+    }
+
+    public void setRefreshToken(String refreshToken) {
+        this.refreshToken = refreshToken;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    public List<String> getScopes() {
+        return scopes;
+    }
+
+    public void setScopes(List<String> scopes) {
+        this.scopes = scopes;
+    }
+
+    public String getP12FileName() {
+        return p12FileName;
+    }
+
+    public void setP12FileName(String p12FileName) {
+        this.p12FileName = p12FileName;
+    }
+
+    public String getUser() {
+        return user;
+    }
+
+    public void setUser(String user) {
+        this.user = user;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-drive/src/main/docs/google-drive.adoc
----------------------------------------------------------------------
diff --git a/components/camel-google-drive/src/main/docs/google-drive.adoc b/components/camel-google-drive/src/main/docs/google-drive.adoc
index de87450..faea67a 100644
--- a/components/camel-google-drive/src/main/docs/google-drive.adoc
+++ b/components/camel-google-drive/src/main/docs/google-drive.adoc
@@ -65,8 +65,9 @@ GoogleDriveComponent
 
 
 
+
 // component options: START
-The Google Drive component supports 2 options which are listed below.
+The Google Drive component supports 10 options which are listed below.
 
 
 
@@ -74,8 +75,16 @@ The Google Drive component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | GoogleDriveConfiguration | To use the shared configuration
+| configuration | GoogleDriveConfiguration | To use the shared configuration. Properties of the shared configuration can also be set individually.
 | clientFactory | GoogleDriveClientFactory | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory
+| apiName | GoogleDriveApiName | What kind of operation to perform
+| methodName | String | What sub operation to use for the selected operation
+| clientId | String | Client ID of the drive application
+| clientSecret | String | Client secret of the drive application
+| accessToken | String | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+| refreshToken | String | OAuth 2 refresh token. Using this the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+| applicationName | String | Google drive application name. Example would be camel-google-drive/1.0
+| scopes | List | Specifies the level of permissions you want a drive application to have to a user account. See https://developers.google.com/drive/web/scopes for more info.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -85,6 +94,7 @@ The Google Drive component supports 2 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Google Drive component supports 14 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
index 2554d0e..021456c 100644
--- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
+++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.google.drive;
 
+import java.util.List;
+
 import com.google.api.services.drive.Drive;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
@@ -60,7 +62,7 @@ public class GoogleDriveComponent extends AbstractApiComponent<GoogleDriveApiNam
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(GoogleDriveConfiguration configuration) {
@@ -89,4 +91,108 @@ public class GoogleDriveComponent extends AbstractApiComponent<GoogleDriveApiNam
         endpoint.setClientFactory(clientFactory);
         return endpoint;
     }
+
+
+    private GoogleDriveConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new GoogleDriveConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public GoogleDriveApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(GoogleDriveApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getClientId() {
+        return getConfigurationOrCreate().getClientId();
+    }
+
+    /**
+     * Client ID of the drive application
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getConfigurationOrCreate().setClientId(clientId);
+    }
+
+    public String getClientSecret() {
+        return getConfigurationOrCreate().getClientSecret();
+    }
+
+    /**
+     * Client secret of the drive application
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getConfigurationOrCreate().setClientSecret(clientSecret);
+    }
+
+    public String getAccessToken() {
+        return getConfigurationOrCreate().getAccessToken();
+    }
+
+    /**
+     * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+     * @param accessToken
+     */
+    public void setAccessToken(String accessToken) {
+        getConfigurationOrCreate().setAccessToken(accessToken);
+    }
+
+    public String getRefreshToken() {
+        return getConfigurationOrCreate().getRefreshToken();
+    }
+
+    /**
+     * OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+     * @param refreshToken
+     */
+    public void setRefreshToken(String refreshToken) {
+        getConfigurationOrCreate().setRefreshToken(refreshToken);
+    }
+
+    public String getApplicationName() {
+        return getConfigurationOrCreate().getApplicationName();
+    }
+
+    /**
+     * Google drive application name. Example would be "camel-google-drive/1.0"
+     * @param applicationName
+     */
+    public void setApplicationName(String applicationName) {
+        getConfigurationOrCreate().setApplicationName(applicationName);
+    }
+
+    public List<String> getScopes() {
+        return getConfigurationOrCreate().getScopes();
+    }
+
+    /**
+     * Specifies the level of permissions you want a drive application to have to a user account. See https://developers.google.com/drive/web/scopes for more info.
+     * @param scopes
+     */
+    public void setScopes(List<String> scopes) {
+        getConfigurationOrCreate().setScopes(scopes);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/springboot/GoogleDriveComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/springboot/GoogleDriveComponentConfiguration.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/springboot/GoogleDriveComponentConfiguration.java
index bad8424..0db879a 100644
--- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/springboot/GoogleDriveComponentConfiguration.java
+++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/springboot/GoogleDriveComponentConfiguration.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.google.drive.springboot;
 
+import java.util.List;
 import org.apache.camel.component.google.drive.GoogleDriveClientFactory;
 import org.apache.camel.component.google.drive.GoogleDriveConfiguration;
+import org.apache.camel.component.google.drive.internal.GoogleDriveApiName;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -30,7 +32,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class GoogleDriveComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private GoogleDriveConfiguration configuration;
     /**
@@ -38,6 +41,43 @@ public class GoogleDriveComponentConfiguration {
      * client. Will by default use BatchGoogleDriveClientFactory
      */
     private GoogleDriveClientFactory clientFactory;
+    /**
+     * What kind of operation to perform
+     */
+    private GoogleDriveApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * Client ID of the drive application
+     */
+    private String clientId;
+    /**
+     * Client secret of the drive application
+     */
+    private String clientSecret;
+    /**
+     * OAuth 2 access token. This typically expires after an hour so
+     * refreshToken is recommended for long term usage.
+     */
+    private String accessToken;
+    /**
+     * OAuth 2 refresh token. Using this the Google Calendar component can
+     * obtain a new accessToken whenever the current one expires - a necessity
+     * if the application is long-lived.
+     */
+    private String refreshToken;
+    /**
+     * Google drive application name. Example would be camel-google-drive/1.0
+     */
+    private String applicationName;
+    /**
+     * Specifies the level of permissions you want a drive application to have
+     * to a user account. See https://developers.google.com/drive/web/scopes for
+     * more info.
+     */
+    private List<String> scopes;
 
     public GoogleDriveConfiguration getConfiguration() {
         return configuration;
@@ -54,4 +94,68 @@ public class GoogleDriveComponentConfiguration {
     public void setClientFactory(GoogleDriveClientFactory clientFactory) {
         this.clientFactory = clientFactory;
     }
+
+    public GoogleDriveApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(GoogleDriveApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getRefreshToken() {
+        return refreshToken;
+    }
+
+    public void setRefreshToken(String refreshToken) {
+        this.refreshToken = refreshToken;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    public List<String> getScopes() {
+        return scopes;
+    }
+
+    public void setScopes(List<String> scopes) {
+        this.scopes = scopes;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-mail/src/main/docs/google-mail.adoc
----------------------------------------------------------------------
diff --git a/components/camel-google-mail/src/main/docs/google-mail.adoc b/components/camel-google-mail/src/main/docs/google-mail.adoc
index 976c6d5..dcf6af5 100644
--- a/components/camel-google-mail/src/main/docs/google-mail.adoc
+++ b/components/camel-google-mail/src/main/docs/google-mail.adoc
@@ -62,8 +62,9 @@ GoogleMailComponent
 
 
 
+
 // component options: START
-The Google Mail component supports 2 options which are listed below.
+The Google Mail component supports 10 options which are listed below.
 
 
 
@@ -71,8 +72,16 @@ The Google Mail component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | GoogleMailConfiguration | To use the shared configuration
+| configuration | GoogleMailConfiguration | To use the shared configuration. Properties of the shared configuration can also be set individually.
 | clientFactory | GoogleMailClientFactory | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleMailClientFactory
+| apiName | GoogleMailApiName | What kind of operation to perform
+| methodName | String | What sub operation to use for the selected operation
+| clientId | String | Client ID of the mail application
+| clientSecret | String | Client secret of the mail application
+| accessToken | String | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+| refreshToken | String | OAuth 2 refresh token. Using this the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+| applicationName | String | Google mail application name. Example would be camel-google-mail/1.0
+| scopes | List | Specifies the level of permissions you want a mail application to have to a user account. See https://developers.google.com/gmail/api/auth/scopes for more info.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -81,6 +90,7 @@ The Google Mail component supports 2 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Google Mail component supports 13 endpoint options which are listed below:
 


[09/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
index b6896d6..2ca471d 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailComponent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.google.mail;
 
+import java.util.List;
+
 import com.google.api.services.gmail.Gmail;
 
 import org.apache.camel.CamelContext;
@@ -61,7 +63,7 @@ public class GoogleMailComponent extends AbstractApiComponent<GoogleMailApiName,
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(GoogleMailConfiguration configuration) {
@@ -87,4 +89,108 @@ public class GoogleMailComponent extends AbstractApiComponent<GoogleMailApiName,
         endpointConfiguration.setMethodName(methodName);
         return new GoogleMailEndpoint(uri, this, apiName, methodName, endpointConfiguration);
     }
+
+
+    private GoogleMailConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new GoogleMailConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public GoogleMailApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(GoogleMailApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getClientId() {
+        return getConfigurationOrCreate().getClientId();
+    }
+
+    /**
+     * Client ID of the mail application
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getConfigurationOrCreate().setClientId(clientId);
+    }
+
+    public String getClientSecret() {
+        return getConfigurationOrCreate().getClientSecret();
+    }
+
+    /**
+     * Client secret of the mail application
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getConfigurationOrCreate().setClientSecret(clientSecret);
+    }
+
+    public String getAccessToken() {
+        return getConfigurationOrCreate().getAccessToken();
+    }
+
+    /**
+     * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage.
+     * @param accessToken
+     */
+    public void setAccessToken(String accessToken) {
+        getConfigurationOrCreate().setAccessToken(accessToken);
+    }
+
+    public String getRefreshToken() {
+        return getConfigurationOrCreate().getRefreshToken();
+    }
+
+    /**
+     * OAuth 2 refresh token. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
+     * @param refreshToken
+     */
+    public void setRefreshToken(String refreshToken) {
+        getConfigurationOrCreate().setRefreshToken(refreshToken);
+    }
+
+    public String getApplicationName() {
+        return getConfigurationOrCreate().getApplicationName();
+    }
+
+    /**
+     * Google mail application name. Example would be "camel-google-mail/1.0"
+     * @param applicationName
+     */
+    public void setApplicationName(String applicationName) {
+        getConfigurationOrCreate().setApplicationName(applicationName);
+    }
+
+    public List<String> getScopes() {
+        return getConfigurationOrCreate().getScopes();
+    }
+
+    /**
+     * Specifies the level of permissions you want a mail application to have to a user account. See https://developers.google.com/gmail/api/auth/scopes for more info.
+     * @param scopes
+     */
+    public void setScopes(List<String> scopes) {
+        getConfigurationOrCreate().setScopes(scopes);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/springboot/GoogleMailComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/springboot/GoogleMailComponentConfiguration.java b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/springboot/GoogleMailComponentConfiguration.java
index 06918ec..7896172 100644
--- a/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/springboot/GoogleMailComponentConfiguration.java
+++ b/components/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/springboot/GoogleMailComponentConfiguration.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.google.mail.springboot;
 
+import java.util.List;
 import org.apache.camel.component.google.mail.GoogleMailClientFactory;
 import org.apache.camel.component.google.mail.GoogleMailConfiguration;
+import org.apache.camel.component.google.mail.internal.GoogleMailApiName;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,7 +31,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class GoogleMailComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private GoogleMailConfiguration configuration;
     /**
@@ -37,6 +40,43 @@ public class GoogleMailComponentConfiguration {
      * client. Will by default use BatchGoogleMailClientFactory
      */
     private GoogleMailClientFactory clientFactory;
+    /**
+     * What kind of operation to perform
+     */
+    private GoogleMailApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * Client ID of the mail application
+     */
+    private String clientId;
+    /**
+     * Client secret of the mail application
+     */
+    private String clientSecret;
+    /**
+     * OAuth 2 access token. This typically expires after an hour so
+     * refreshToken is recommended for long term usage.
+     */
+    private String accessToken;
+    /**
+     * OAuth 2 refresh token. Using this the Google Calendar component can
+     * obtain a new accessToken whenever the current one expires - a necessity
+     * if the application is long-lived.
+     */
+    private String refreshToken;
+    /**
+     * Google mail application name. Example would be camel-google-mail/1.0
+     */
+    private String applicationName;
+    /**
+     * Specifies the level of permissions you want a mail application to have to
+     * a user account. See https://developers.google.com/gmail/api/auth/scopes
+     * for more info.
+     */
+    private List<String> scopes;
 
     public GoogleMailConfiguration getConfiguration() {
         return configuration;
@@ -53,4 +93,68 @@ public class GoogleMailComponentConfiguration {
     public void setClientFactory(GoogleMailClientFactory clientFactory) {
         this.clientFactory = clientFactory;
     }
+
+    public GoogleMailApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(GoogleMailApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getRefreshToken() {
+        return refreshToken;
+    }
+
+    public void setRefreshToken(String refreshToken) {
+        this.refreshToken = refreshToken;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    public List<String> getScopes() {
+        return scopes;
+    }
+
+    public void setScopes(List<String> scopes) {
+        this.scopes = scopes;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-kestrel/src/main/docs/kestrel.adoc
----------------------------------------------------------------------
diff --git a/components/camel-kestrel/src/main/docs/kestrel.adoc b/components/camel-kestrel/src/main/docs/kestrel.adoc
index 5ee1134..f81c756 100644
--- a/components/camel-kestrel/src/main/docs/kestrel.adoc
+++ b/components/camel-kestrel/src/main/docs/kestrel.adoc
@@ -67,8 +67,9 @@ Options
 
 
 
+
 // component options: START
-The Kestrel component supports 1 options which are listed below.
+The Kestrel component supports 4 options which are listed below.
 
 
 
@@ -77,6 +78,9 @@ The Kestrel component supports 1 options which are listed below.
 |=======================================================================
 | Name | Java Type | Description
 | configuration | KestrelConfiguration | To use a shared configured configuration as base for creating new endpoints.
+| addresses | String[] | The addresses
+| waitTimeMs | int | The wait time in milliseconds
+| concurrentConsumers | int | The number of concurrent consumers
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -85,6 +89,7 @@ The Kestrel component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Kestrel component supports 8 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelComponent.java b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelComponent.java
index 3430af9..b208950 100644
--- a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelComponent.java
+++ b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelComponent.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.kestrel;
 
+import java.net.InetSocketAddress;
 import java.net.URI;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import net.spy.memcached.ConnectionFactory;
@@ -203,4 +205,40 @@ public class KestrelComponent extends UriEndpointComponent {
 
         super.doStop();
     }
+
+    public String[] getAddresses() {
+        return configuration.getAddresses();
+    }
+
+    /**
+     * The addresses
+     * @param addresses
+     */
+    public void setAddresses(String[] addresses) {
+        configuration.setAddresses(addresses);
+    }
+
+    public int getWaitTimeMs() {
+        return configuration.getWaitTimeMs();
+    }
+
+    /**
+     * The wait time in milliseconds
+     * @param waitTimeMs
+     */
+    public void setWaitTimeMs(int waitTimeMs) {
+        configuration.setWaitTimeMs(waitTimeMs);
+    }
+
+    public int getConcurrentConsumers() {
+        return configuration.getConcurrentConsumers();
+    }
+
+    /**
+     * The number of concurrent consumers
+     * @param concurrentConsumers
+     */
+    public void setConcurrentConsumers(int concurrentConsumers) {
+        configuration.setConcurrentConsumers(concurrentConsumers);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelConfiguration.java b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelConfiguration.java
index b697eaa..576aed1 100644
--- a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelConfiguration.java
+++ b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/KestrelConfiguration.java
@@ -57,6 +57,9 @@ public class KestrelConfiguration implements Cloneable {
         return addresses;
     }
 
+    /**
+     * The addresses
+     */
     public void setAddresses(String[] addresses) {
         this.addresses = addresses;
     }
@@ -65,6 +68,9 @@ public class KestrelConfiguration implements Cloneable {
         return waitTimeMs;
     }
 
+    /**
+     * The wait time in milliseconds
+     */
     public void setWaitTimeMs(int waitTimeMs) {
         this.waitTimeMs = waitTimeMs;
     }
@@ -73,6 +79,9 @@ public class KestrelConfiguration implements Cloneable {
         return concurrentConsumers;
     }
 
+    /**
+     * The number of concurrent consumers
+     */
     public void setConcurrentConsumers(int concurrentConsumers) {
         if (concurrentConsumers <= 0) {
             throw new IllegalArgumentException("Invalid value for concurrentConsumers: " + concurrentConsumers);

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/springboot/KestrelComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/springboot/KestrelComponentConfiguration.java b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/springboot/KestrelComponentConfiguration.java
index 8c0e311..bd8b802 100644
--- a/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/springboot/KestrelComponentConfiguration.java
+++ b/components/camel-kestrel/src/main/java/org/apache/camel/component/kestrel/springboot/KestrelComponentConfiguration.java
@@ -33,6 +33,18 @@ public class KestrelComponentConfiguration {
      * endpoints.
      */
     private KestrelConfiguration configuration;
+    /**
+     * The addresses
+     */
+    private String[] addresses;
+    /**
+     * The wait time in milliseconds
+     */
+    private Integer waitTimeMs;
+    /**
+     * The number of concurrent consumers
+     */
+    private Integer concurrentConsumers;
 
     public KestrelConfiguration getConfiguration() {
         return configuration;
@@ -41,4 +53,28 @@ public class KestrelComponentConfiguration {
     public void setConfiguration(KestrelConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String[] getAddresses() {
+        return addresses;
+    }
+
+    public void setAddresses(String[] addresses) {
+        this.addresses = addresses;
+    }
+
+    public Integer getWaitTimeMs() {
+        return waitTimeMs;
+    }
+
+    public void setWaitTimeMs(Integer waitTimeMs) {
+        this.waitTimeMs = waitTimeMs;
+    }
+
+    public Integer getConcurrentConsumers() {
+        return concurrentConsumers;
+    }
+
+    public void setConcurrentConsumers(Integer concurrentConsumers) {
+        this.concurrentConsumers = concurrentConsumers;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-linkedin/camel-linkedin-component/src/main/docs/linkedin.adoc
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-component/src/main/docs/linkedin.adoc b/components/camel-linkedin/camel-linkedin-component/src/main/docs/linkedin.adoc
index 06e76a0..64312ec 100644
--- a/components/camel-linkedin/camel-linkedin-component/src/main/docs/linkedin.adoc
+++ b/components/camel-linkedin/camel-linkedin-component/src/main/docs/linkedin.adoc
@@ -55,8 +55,9 @@ LinkedInComponent
 ^^^^^^^^^^^^^^^^^
 
 
+
 // component options: START
-The Linkedin component supports 1 options which are listed below.
+The Linkedin component supports 12 options which are listed below.
 
 
 
@@ -65,12 +66,24 @@ The Linkedin component supports 1 options which are listed below.
 |=======================================================================
 | Name | Java Type | Description
 | configuration | LinkedInConfiguration | To use the shared configuration
+| apiName | LinkedInApiName | What kind of operation to perform
+| methodName | String | What sub operation to use for the selected operation
+| userName | String | LinkedIn user account name MUST be provided
+| userPassword | String | LinkedIn account password
+| secureStorage | OAuthSecureStorage | Callback interface for providing an OAuth token or to store the token generated by the component. The callback should return null on the first call and then save the created token in the saveToken() callback. If the callback returns null the first time a userPassword MUST be provided
+| clientId | String | LinkedIn application client ID
+| clientSecret | String | LinkedIn application client secret
+| scopes | OAuthScope[] | List of LinkedIn scopes as specified at https://developer.linkedin.com/documents/authenticationgranting
+| redirectUri | String | Application redirect URI although the component never redirects to this page to avoid having to have a functioning redirect server. So for testing one could use https://localhost
+| httpParams | Map | Custom HTTP params for example proxy host and port use constants from AllClientPNames
+| lazyAuth | boolean | Flag to enable/disable lazy OAuth default is true. when enabled OAuth token retrieval or generation is not done until the first REST call
 |=======================================================================
 {% endraw %}
 // component options: END
 
 
 
+
 // endpoint options: START
 The Linkedin component supports 16 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
index db00018..7e357df 100644
--- a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
+++ b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/LinkedInComponent.java
@@ -18,12 +18,15 @@ package org.apache.camel.component.linkedin;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
+import java.util.Map;
 import javax.net.ssl.SSLContext;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.linkedin.api.LinkedInOAuthRequestFilter;
 import org.apache.camel.component.linkedin.api.OAuthParams;
+import org.apache.camel.component.linkedin.api.OAuthScope;
+import org.apache.camel.component.linkedin.api.OAuthSecureStorage;
 import org.apache.camel.component.linkedin.internal.CachingOAuthSecureStorage;
 import org.apache.camel.component.linkedin.internal.LinkedInApiCollection;
 import org.apache.camel.component.linkedin.internal.LinkedInApiName;
@@ -64,13 +67,13 @@ public class LinkedInComponent extends AbstractApiComponent<LinkedInApiName, Lin
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public LinkedInConfiguration getConfiguration() {
         return super.getConfiguration();
     }
- 
+
     @Override
     protected Endpoint createEndpoint(String uri, String methodName, LinkedInApiName apiName,
                                       LinkedInConfiguration endpointConfiguration) {
@@ -105,13 +108,13 @@ public class LinkedInComponent extends AbstractApiComponent<LinkedInApiName, Lin
             throw ObjectHelper.wrapRuntimeCamelException(e);
         }
         return new LinkedInOAuthRequestFilter(getOAuthParams(configuration),
-            configuration.getHttpParams(), configuration.isLazyAuth(), enabledProtocols);
+                configuration.getHttpParams(), configuration.isLazyAuth(), enabledProtocols);
     }
 
     private static OAuthParams getOAuthParams(LinkedInConfiguration configuration) {
         return new OAuthParams(configuration.getUserName(), configuration.getUserPassword(),
-            new CachingOAuthSecureStorage(configuration.getSecureStorage()), configuration.getClientId(), configuration.getClientSecret(),
-            configuration.getRedirectUri(), configuration.getScopes());
+                new CachingOAuthSecureStorage(configuration.getSecureStorage()), configuration.getClientId(), configuration.getClientSecret(),
+                configuration.getRedirectUri(), configuration.getScopes());
     }
 
     @Override
@@ -135,4 +138,146 @@ public class LinkedInComponent extends AbstractApiComponent<LinkedInApiName, Lin
             LOG.warn("Error closing OAuth2 request filter: " + e.getMessage(), e);
         }
     }
+
+    private LinkedInConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new LinkedInConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public LinkedInApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(LinkedInApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getUserName() {
+        return getConfigurationOrCreate().getUserName();
+    }
+
+    /**
+     * LinkedIn user account name, MUST be provided
+     * @param userName
+     */
+    public void setUserName(String userName) {
+        getConfigurationOrCreate().setUserName(userName);
+    }
+
+    public String getUserPassword() {
+        return getConfigurationOrCreate().getUserPassword();
+    }
+
+    /**
+     * LinkedIn account password
+     * @param userPassword
+     */
+    public void setUserPassword(String userPassword) {
+        getConfigurationOrCreate().setUserPassword(userPassword);
+    }
+
+    public OAuthSecureStorage getSecureStorage() {
+        return getConfigurationOrCreate().getSecureStorage();
+    }
+
+    /**
+     * Callback interface for providing an OAuth token or to store the token generated by the component.
+     * The callback should return null on the first call and then save the created token in the saveToken() callback.
+     * If the callback returns null the first time, a userPassword MUST be provided
+     * @param secureStorage
+     */
+    public void setSecureStorage(OAuthSecureStorage secureStorage) {
+        getConfigurationOrCreate().setSecureStorage(secureStorage);
+    }
+
+    public String getClientId() {
+        return getConfigurationOrCreate().getClientId();
+    }
+
+    /**
+     * LinkedIn application client ID
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getConfigurationOrCreate().setClientId(clientId);
+    }
+
+    public String getClientSecret() {
+        return getConfigurationOrCreate().getClientSecret();
+    }
+
+    /**
+     * LinkedIn application client secret
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getConfigurationOrCreate().setClientSecret(clientSecret);
+    }
+
+    public OAuthScope[] getScopes() {
+        return getConfigurationOrCreate().getScopes();
+    }
+
+    /**
+     * List of LinkedIn scopes as specified at https://developer.linkedin.com/documents/authentication#granting
+     * @param scopes
+     */
+    public void setScopes(OAuthScope[] scopes) {
+        getConfigurationOrCreate().setScopes(scopes);
+    }
+
+    public String getRedirectUri() {
+        return getConfigurationOrCreate().getRedirectUri();
+    }
+
+    /**
+     * Application redirect URI, although the component never redirects to this page to avoid having to have a functioning redirect server.
+     * So for testing one could use https://localhost
+     * @param redirectUri
+     */
+    public void setRedirectUri(String redirectUri) {
+        getConfigurationOrCreate().setRedirectUri(redirectUri);
+    }
+
+    public Map<String, Object> getHttpParams() {
+        return getConfigurationOrCreate().getHttpParams();
+    }
+
+    /**
+     * Custom HTTP params, for example proxy host and port, use constants from AllClientPNames
+     * @param httpParams
+     */
+    public void setHttpParams(Map<String, Object> httpParams) {
+        getConfigurationOrCreate().setHttpParams(httpParams);
+    }
+
+    public boolean isLazyAuth() {
+        return getConfigurationOrCreate().isLazyAuth();
+    }
+
+    /**
+     * Flag to enable/disable lazy OAuth, default is true. when enabled, OAuth token retrieval or generation is not done until the first REST call
+     * @param lazyAuth
+     */
+    public void setLazyAuth(boolean lazyAuth) {
+        getConfigurationOrCreate().setLazyAuth(lazyAuth);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/springboot/LinkedInComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/springboot/LinkedInComponentConfiguration.java b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/springboot/LinkedInComponentConfiguration.java
index 0bd3be0..1a68eb8 100644
--- a/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/springboot/LinkedInComponentConfiguration.java
+++ b/components/camel-linkedin/camel-linkedin-component/src/main/java/org/apache/camel/component/linkedin/springboot/LinkedInComponentConfiguration.java
@@ -16,7 +16,11 @@
  */
 package org.apache.camel.component.linkedin.springboot;
 
+import java.util.Map;
 import org.apache.camel.component.linkedin.LinkedInConfiguration;
+import org.apache.camel.component.linkedin.api.OAuthScope;
+import org.apache.camel.component.linkedin.api.OAuthSecureStorage;
+import org.apache.camel.component.linkedin.internal.LinkedInApiName;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -32,6 +36,58 @@ public class LinkedInComponentConfiguration {
      * To use the shared configuration
      */
     private LinkedInConfiguration configuration;
+    /**
+     * What kind of operation to perform
+     */
+    private LinkedInApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * LinkedIn user account name MUST be provided
+     */
+    private String userName;
+    /**
+     * LinkedIn account password
+     */
+    private String userPassword;
+    /**
+     * Callback interface for providing an OAuth token or to store the token
+     * generated by the component. The callback should return null on the first
+     * call and then save the created token in the saveToken() callback. If the
+     * callback returns null the first time a userPassword MUST be provided
+     */
+    private OAuthSecureStorage secureStorage;
+    /**
+     * LinkedIn application client ID
+     */
+    private String clientId;
+    /**
+     * LinkedIn application client secret
+     */
+    private String clientSecret;
+    /**
+     * List of LinkedIn scopes as specified at
+     * https://developer.linkedin.com/documents/authenticationgranting
+     */
+    private OAuthScope[] scopes;
+    /**
+     * Application redirect URI although the component never redirects to this
+     * page to avoid having to have a functioning redirect server. So for
+     * testing one could use https://localhost
+     */
+    private String redirectUri;
+    /**
+     * Custom HTTP params for example proxy host and port use constants from
+     * AllClientPNames
+     */
+    private Map<String, Object> httpParams;
+    /**
+     * Flag to enable/disable lazy OAuth default is true. when enabled OAuth
+     * token retrieval or generation is not done until the first REST call
+     */
+    private Boolean lazyAuth = false;
 
     public LinkedInConfiguration getConfiguration() {
         return configuration;
@@ -40,4 +96,92 @@ public class LinkedInComponentConfiguration {
     public void setConfiguration(LinkedInConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public LinkedInApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(LinkedInApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserPassword() {
+        return userPassword;
+    }
+
+    public void setUserPassword(String userPassword) {
+        this.userPassword = userPassword;
+    }
+
+    public OAuthSecureStorage getSecureStorage() {
+        return secureStorage;
+    }
+
+    public void setSecureStorage(OAuthSecureStorage secureStorage) {
+        this.secureStorage = secureStorage;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public OAuthScope[] getScopes() {
+        return scopes;
+    }
+
+    public void setScopes(OAuthScope[] scopes) {
+        this.scopes = scopes;
+    }
+
+    public String getRedirectUri() {
+        return redirectUri;
+    }
+
+    public void setRedirectUri(String redirectUri) {
+        this.redirectUri = redirectUri;
+    }
+
+    public Map<String, Object> getHttpParams() {
+        return httpParams;
+    }
+
+    public void setHttpParams(Map<String, Object> httpParams) {
+        this.httpParams = httpParams;
+    }
+
+    public Boolean getLazyAuth() {
+        return lazyAuth;
+    }
+
+    public void setLazyAuth(Boolean lazyAuth) {
+        this.lazyAuth = lazyAuth;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-lucene/src/main/docs/lucene.adoc
----------------------------------------------------------------------
diff --git a/components/camel-lucene/src/main/docs/lucene.adoc b/components/camel-lucene/src/main/docs/lucene.adoc
index d796599..2157901 100644
--- a/components/camel-lucene/src/main/docs/lucene.adoc
+++ b/components/camel-lucene/src/main/docs/lucene.adoc
@@ -54,8 +54,9 @@ Insert Options
 
 
 
+
 // component options: START
-The Lucene component supports 1 options which are listed below.
+The Lucene component supports 7 options which are listed below.
 
 
 
@@ -63,7 +64,13 @@ The Lucene component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| config | LuceneConfiguration | To use a shared lucene configuration
+| config | LuceneConfiguration | To use a shared lucene configuration. Properties of the shared configuration can also be set individually.
+| host | String | The URL to the lucene server
+| operation | LuceneOperation | Operation to do such as insert or query.
+| sourceDirectory | File | An optional directory containing files to be used to be analyzed and added to the index at producer startup.
+| indexDirectory | File | A file system directory in which index files are created upon analysis of the document by the specified analyzer
+| analyzer | Analyzer | An Analyzer builds TokenStreams which analyze text. It thus represents a policy for extracting index terms from text. The value for analyzer can be any class that extends the abstract class org.apache.lucene.analysis.Analyzer. Lucene also offers a rich set of analyzers out of the box
+| maxHits | int | An integer value that limits the result set of the search operation
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -72,6 +79,7 @@ The Lucene component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Lucene component supports 8 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneComponent.java b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneComponent.java
index 805d6da..997f22e 100644
--- a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneComponent.java
+++ b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/LuceneComponent.java
@@ -16,16 +16,18 @@
  */
 package org.apache.camel.component.lucene;
 
+import java.io.File;
 import java.net.URI;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.lucene.analysis.Analyzer;
 
 public class LuceneComponent extends UriEndpointComponent {
     private LuceneConfiguration config;
-    
+
     public LuceneComponent() {
         super(LuceneEndpoint.class);
         config = new LuceneConfiguration();
@@ -35,10 +37,10 @@ public class LuceneComponent extends UriEndpointComponent {
         super(context, LuceneEndpoint.class);
         config = new LuceneConfiguration();
     }
-    
+
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters)
-        throws Exception {
+            throws Exception {
         config.parseURI(new URI(uri), parameters, this);
         LuceneEndpoint luceneEndpoint = new LuceneEndpoint(uri, this, config);
         setProperties(luceneEndpoint.getConfig(), parameters);
@@ -50,9 +52,84 @@ public class LuceneComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared lucene configuration
+     * To use a shared lucene configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfig(LuceneConfiguration config) {
         this.config = config;
     }
+
+    public String getHost() {
+        return config.getHost();
+    }
+
+    /**
+     * The URL to the lucene server
+     * @param host
+     */
+    public void setHost(String host) {
+        config.setHost(host);
+    }
+
+    public LuceneOperation getOperation() {
+        return config.getOperation();
+    }
+
+    /**
+     * Operation to do such as insert or query.
+     * @param operation
+     */
+    public void setOperation(LuceneOperation operation) {
+        config.setOperation(operation);
+    }
+
+    public File getSourceDirectory() {
+        return config.getSourceDirectory();
+    }
+
+    /**
+     * An optional directory containing files to be used to be analyzed and added to the index at producer startup.
+     * @param sourceDirectory
+     */
+    public void setSourceDirectory(File sourceDirectory) {
+        config.setSourceDirectory(sourceDirectory);
+    }
+
+    public File getIndexDirectory() {
+        return config.getIndexDirectory();
+    }
+
+    /**
+     * A file system directory in which index files are created upon analysis of the document by the specified analyzer
+     * @param indexDirectory
+     */
+    public void setIndexDirectory(File indexDirectory) {
+        config.setIndexDirectory(indexDirectory);
+    }
+
+    public Analyzer getAnalyzer() {
+        return config.getAnalyzer();
+    }
+
+    /**
+     * An Analyzer builds TokenStreams, which analyze text. It thus represents a policy for extracting index terms from text.
+     * The value for analyzer can be any class that extends the abstract class org.apache.lucene.analysis.Analyzer.
+     * Lucene also offers a rich set of analyzers out of the box
+     * @param analyzer
+     */
+    public void setAnalyzer(Analyzer analyzer) {
+        config.setAnalyzer(analyzer);
+    }
+
+    public int getMaxHits() {
+        return config.getMaxHits();
+    }
+
+    /**
+     * An integer value that limits the result set of the search operation
+     * @param maxHits
+     */
+    public void setMaxHits(int maxHits) {
+        config.setMaxHits(maxHits);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
index cd514f7..788a695 100644
--- a/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
+++ b/components/camel-lucene/src/main/java/org/apache/camel/component/lucene/springboot/LuceneComponentConfiguration.java
@@ -16,7 +16,10 @@
  */
 package org.apache.camel.component.lucene.springboot;
 
+import java.io.File;
 import org.apache.camel.component.lucene.LuceneConfiguration;
+import org.apache.camel.component.lucene.LuceneOperation;
+import org.apache.lucene.analysis.Analyzer;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +31,40 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class LuceneComponentConfiguration {
 
     /**
-     * To use a shared lucene configuration
+     * To use a shared lucene configuration. Properties of the shared
+     * configuration can also be set individually.
      */
     private LuceneConfiguration config;
+    /**
+     * The URL to the lucene server
+     */
+    private String host;
+    /**
+     * Operation to do such as insert or query.
+     */
+    private LuceneOperation operation;
+    /**
+     * An optional directory containing files to be used to be analyzed and
+     * added to the index at producer startup.
+     */
+    private File sourceDirectory;
+    /**
+     * A file system directory in which index files are created upon analysis of
+     * the document by the specified analyzer
+     */
+    private File indexDirectory;
+    /**
+     * An Analyzer builds TokenStreams which analyze text. It thus represents a
+     * policy for extracting index terms from text. The value for analyzer can
+     * be any class that extends the abstract class
+     * org.apache.lucene.analysis.Analyzer. Lucene also offers a rich set of
+     * analyzers out of the box
+     */
+    private Analyzer analyzer;
+    /**
+     * An integer value that limits the result set of the search operation
+     */
+    private Integer maxHits;
 
     public LuceneConfiguration getConfig() {
         return config;
@@ -39,4 +73,52 @@ public class LuceneComponentConfiguration {
     public void setConfig(LuceneConfiguration config) {
         this.config = config;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public LuceneOperation getOperation() {
+        return operation;
+    }
+
+    public void setOperation(LuceneOperation operation) {
+        this.operation = operation;
+    }
+
+    public File getSourceDirectory() {
+        return sourceDirectory;
+    }
+
+    public void setSourceDirectory(File sourceDirectory) {
+        this.sourceDirectory = sourceDirectory;
+    }
+
+    public File getIndexDirectory() {
+        return indexDirectory;
+    }
+
+    public void setIndexDirectory(File indexDirectory) {
+        this.indexDirectory = indexDirectory;
+    }
+
+    public Analyzer getAnalyzer() {
+        return analyzer;
+    }
+
+    public void setAnalyzer(Analyzer analyzer) {
+        this.analyzer = analyzer;
+    }
+
+    public Integer getMaxHits() {
+        return maxHits;
+    }
+
+    public void setMaxHits(Integer maxHits) {
+        this.maxHits = maxHits;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/imap.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/imap.adoc b/components/camel-mail/src/main/docs/imap.adoc
index a4597c9..b9e3e34 100644
--- a/components/camel-mail/src/main/docs/imap.adoc
+++ b/components/camel-mail/src/main/docs/imap.adoc
@@ -4,8 +4,10 @@ Mail Component IMAP
 
 
 
+
+
 // component options: START
-The IMAP component supports 2 options which are listed below.
+The IMAP component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The IMAP component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The IMAP component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The IMAP component supports 63 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/imaps.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/imaps.adoc b/components/camel-mail/src/main/docs/imaps.adoc
index 7ff7df3..c06e83f 100644
--- a/components/camel-mail/src/main/docs/imaps.adoc
+++ b/components/camel-mail/src/main/docs/imaps.adoc
@@ -4,8 +4,10 @@ Mail Component IMAPs
 
 
 
+
+
 // component options: START
-The IMAPS component supports 2 options which are listed below.
+The IMAPS component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The IMAPS component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The IMAPS component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The IMAPS component supports 63 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/pop3.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/pop3.adoc b/components/camel-mail/src/main/docs/pop3.adoc
index 17ae7a0..579335c 100644
--- a/components/camel-mail/src/main/docs/pop3.adoc
+++ b/components/camel-mail/src/main/docs/pop3.adoc
@@ -4,8 +4,10 @@ Mail Component POP3
 
 
 
+
+
 // component options: START
-The POP3 component supports 2 options which are listed below.
+The POP3 component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The POP3 component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The POP3 component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The POP3 component supports 63 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/pop3s.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/pop3s.adoc b/components/camel-mail/src/main/docs/pop3s.adoc
index c0666de..a0ac23c 100644
--- a/components/camel-mail/src/main/docs/pop3s.adoc
+++ b/components/camel-mail/src/main/docs/pop3s.adoc
@@ -4,8 +4,10 @@ Mail Component POP3s
 
 
 
+
+
 // component options: START
-The POP3S component supports 2 options which are listed below.
+The POP3S component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The POP3S component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The POP3S component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The POP3S component supports 63 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/smtp.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/smtp.adoc b/components/camel-mail/src/main/docs/smtp.adoc
index 55d6d0f..b4c577b 100644
--- a/components/camel-mail/src/main/docs/smtp.adoc
+++ b/components/camel-mail/src/main/docs/smtp.adoc
@@ -4,8 +4,10 @@ Mail Component SMTP
 
 
 
+
+
 // component options: START
-The SMTP component supports 2 options which are listed below.
+The SMTP component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The SMTP component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The SMTP component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The SMTP component supports 63 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/docs/smtps.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/docs/smtps.adoc b/components/camel-mail/src/main/docs/smtps.adoc
index dc80cde..8badf2d 100644
--- a/components/camel-mail/src/main/docs/smtps.adoc
+++ b/components/camel-mail/src/main/docs/smtps.adoc
@@ -4,8 +4,10 @@ Mail Component SMTPs
 
 
 
+
+
 // component options: START
-The SMTPS component supports 2 options which are listed below.
+The SMTPS component supports 38 options which are listed below.
 
 
 
@@ -13,8 +15,44 @@ The SMTPS component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MailConfiguration | Sets the Mail configuration
+| configuration | MailConfiguration | Sets the Mail configuration. Properties of the shared configuration can also be set individually.
 | contentTypeResolver | ContentTypeResolver | Resolver to determine Content-Type for file attachments.
+| javaMailSender | JavaMailSender | To use a custom JavaMailSender for sending emails.
+| host | String | The mail server host name
+| javaMailProperties | Properties | Sets the java mail options. Will clear any default properties and only use the properties provided for this method.
+| additionalJavaMailProperties | Properties | Sets additional java mail properties that will append/override any default properties that is set based on all the other options. This is useful if you need to add some special options but want to keep the others as is.
+| password | String | The password for login
+| subject | String | The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+| port | int | The port number of the mail server
+| protocol | String | The protocol for communicating with the mail server
+| session | Session | Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where mail sessions are created and managed by some other resource such as a JavaEE container. If this is not specified Camel automatically creates the mail session for you.
+| username | String | The username for login
+| from | String | The from email address
+| delete | boolean | Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message. If false the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a header with the key delete to determine if the mail should be deleted or not.
+| mapMailMessage | boolean | Specifies whether Camel should map the received mail message to Camel body/headers. If set to true the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers. If this option is set to false then the IN message contains a raw javax.mail.Message. You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+| folderName | String | The folder to poll.
+| ignoreUriScheme | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| unseen | boolean | Whether to limit by unseen mails only.
+| to | String | Sets the To email address. Separate multiple email addresses with comma.
+| cc | String | Sets the CC email address. Separate multiple email addresses with comma.
+| bcc | String | Sets the BCC email address. Separate multiple email addresses with comma.
+| replyTo | String | The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+| fetchSize | int | Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed. Setting the value to 0 is a special corner case where Camel will not consume any messages at all.
+| debugMode | boolean | Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+| connectionTimeout | int | The connection timeout in milliseconds.
+| dummyTrustManager | boolean | To use a dummy security setting for trusting all certificates. Should only be used for development mode and not production.
+| contentType | String | The mail message content type. Use text/html for HTML mails.
+| alternativeBodyHeader | String | Specifies the key to an IN message header that contains an alternative email body. For example if you send emails in text/html format and want to provide an alternative mail body for non-HTML email clients set the alternative mail body with this key as a header.
+| useInlineAttachments | boolean | Whether to use disposition inline or attachment.
+| ignoreUnsupportedCharset | boolean | Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+| disconnect | boolean | Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+| closeFolder | boolean | Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well then the consumer keep the folder open between polls.
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters.
+| copyTo | String | After processing a mail message it can be copied to a mail folder with the given name. You can override this configuration value with a header with the key copyTo allowing you to copy messages to folder names configured at runtime.
+| peek | boolean | Will mark the javax.mail.Message as peeked before processing the mail message. This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on the mail server which allows us to rollback the mail message if there is an error processing in Camel.
+| skipFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to skip the message and move on to retrieve the next mail message. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| handleFailedMessage | boolean | If the mail consumer cannot retrieve a given mail message then this option allows to handle the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer then the Camel routing error handler can handle the exception instead. The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+| attachmentsContentTransferEncodingResolver | AttachmentsContentTransferEncodingResolver | To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -24,6 +62,8 @@ The SMTPS component supports 2 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The SMTPS component supports 63 endpoint options which are listed below:
 


[08/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
index 081d364..10b5514 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
@@ -19,8 +19,11 @@ package org.apache.camel.component.mail;
 import java.net.URI;
 import java.util.HashSet;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 
+import javax.mail.Message;
+import javax.mail.Session;
 import javax.mail.search.SearchTerm;
 
 import org.apache.camel.CamelContext;
@@ -28,6 +31,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 
 /**
  * Component for JavaMail.
@@ -107,7 +111,7 @@ public class MailComponent extends UriEndpointComponent {
     }
 
     /**
-     * Sets the Mail configuration
+     * Sets the Mail configuration. Properties of the shared configuration can also be set individually.
      *
      * @param configuration the configuration to use by default for endpoints
      */
@@ -125,4 +129,484 @@ public class MailComponent extends UriEndpointComponent {
     public void setContentTypeResolver(ContentTypeResolver contentTypeResolver) {
         this.contentTypeResolver = contentTypeResolver;
     }
+
+    /**
+     * Is the used protocol to be secure or not
+     */
+    public boolean isSecureProtocol() {
+        return getConfiguration().isSecureProtocol();
+    }
+
+    public boolean isStartTlsEnabled() {
+        return getConfiguration().isStartTlsEnabled();
+    }
+
+    public String getMailStoreLogInformation() {
+        return getConfiguration().getMailStoreLogInformation();
+    }
+
+    public JavaMailSender getJavaMailSender() {
+        return getConfiguration().getJavaMailSender();
+    }
+
+    /**
+     * To use a custom {@link JavaMailSender} for sending emails.
+     * @param javaMailSender
+     */
+    public void setJavaMailSender(JavaMailSender javaMailSender) {
+        getConfiguration().setJavaMailSender(javaMailSender);
+    }
+
+    public String getHost() {
+        return getConfiguration().getHost();
+    }
+
+    /**
+     * The mail server host name
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfiguration().setHost(host);
+    }
+
+    public Properties getJavaMailProperties() {
+        return getConfiguration().getJavaMailProperties();
+    }
+
+    /**
+     * Sets the java mail options. Will clear any default properties and only use the properties
+     * provided for this method.
+     * @param javaMailProperties
+     */
+    public void setJavaMailProperties(Properties javaMailProperties) {
+        getConfiguration().setJavaMailProperties(javaMailProperties);
+    }
+
+    public Properties getAdditionalJavaMailProperties() {
+        return getConfiguration().getAdditionalJavaMailProperties();
+    }
+
+    /**
+     * Sets additional java mail properties, that will append/override any default properties
+     * that is set based on all the other options. This is useful if you need to add some
+     * special options but want to keep the others as is.
+     * @param additionalJavaMailProperties
+     */
+    public void setAdditionalJavaMailProperties(Properties additionalJavaMailProperties) {
+        getConfiguration().setAdditionalJavaMailProperties(additionalJavaMailProperties);
+    }
+
+    public String getPassword() {
+        return getConfiguration().getPassword();
+    }
+
+    /**
+     * The password for login
+     * @param password
+     */
+    public void setPassword(String password) {
+        getConfiguration().setPassword(password);
+    }
+
+    public String getSubject() {
+        return getConfiguration().getSubject();
+    }
+
+    /**
+     * The Subject of the message being sent. Note: Setting the subject in the header takes precedence over this option.
+     * @param subject
+     */
+    public void setSubject(String subject) {
+        getConfiguration().setSubject(subject);
+    }
+
+    public int getPort() {
+        return getConfiguration().getPort();
+    }
+
+    /**
+     * The port number of the mail server
+     * @param port
+     */
+    public void setPort(int port) {
+        getConfiguration().setPort(port);
+    }
+
+    public String getProtocol() {
+        return getConfiguration().getProtocol();
+    }
+
+    /**
+     * The protocol for communicating with the mail server
+     * @param protocol
+     */
+    public void setProtocol(String protocol) {
+        getConfiguration().setProtocol(protocol);
+    }
+
+    public Session getSession() {
+        return getConfiguration().getSession();
+    }
+
+    /**
+     * Specifies the mail session that camel should use for all mail interactions. Useful in scenarios where
+     * mail sessions are created and managed by some other resource, such as a JavaEE container.
+     * If this is not specified, Camel automatically creates the mail session for you.
+     * @param session
+     */
+    public void setSession(Session session) {
+        getConfiguration().setSession(session);
+    }
+
+    public String getUsername() {
+        return getConfiguration().getUsername();
+    }
+
+    /**
+     * The username for login
+     * @param username
+     */
+    public void setUsername(String username) {
+        getConfiguration().setUsername(username);
+    }
+
+    public String getFrom() {
+        return getConfiguration().getFrom();
+    }
+
+    /**
+     * The from email address
+     * @param from
+     */
+    public void setFrom(String from) {
+        getConfiguration().setFrom(from);
+    }
+
+    public boolean isDelete() {
+        return getConfiguration().isDelete();
+    }
+
+    /**
+     * Deletes the messages after they have been processed. This is done by setting the DELETED flag on the mail message.
+     * If false, the SEEN flag is set instead. As of Camel 2.10 you can override this configuration option by setting a
+     * header with the key delete to determine if the mail should be deleted or not.
+     * @param delete
+     */
+    public void setDelete(boolean delete) {
+        getConfiguration().setDelete(delete);
+    }
+
+    public boolean isMapMailMessage() {
+        return getConfiguration().isMapMailMessage();
+    }
+
+    /**
+     * Specifies whether Camel should map the received mail message to Camel body/headers.
+     * If set to true, the body of the mail message is mapped to the body of the Camel IN message and the mail headers are mapped to IN headers.
+     * If this option is set to false then the IN message contains a raw javax.mail.Message.
+     * You can retrieve this raw message by calling exchange.getIn().getBody(javax.mail.Message.class).
+     * @param mapMailMessage
+     */
+    public void setMapMailMessage(boolean mapMailMessage) {
+        getConfiguration().setMapMailMessage(mapMailMessage);
+    }
+
+    public String getFolderName() {
+        return getConfiguration().getFolderName();
+    }
+
+    /**
+     * The folder to poll.
+     * @param folderName
+     */
+    public void setFolderName(String folderName) {
+        getConfiguration().setFolderName(folderName);
+    }
+
+    public boolean isIgnoreUriScheme() {
+        return getConfiguration().isIgnoreUriScheme();
+    }
+
+    /**
+     * Option to let Camel ignore unsupported charset in the local JVM when sending mails. If the charset is unsupported
+     * then charset=XXX (where XXX represents the unsupported charset) is removed from the content-type and it relies on the platform default instead.
+     * @param ignoreUriScheme
+     */
+    public void setIgnoreUriScheme(boolean ignoreUriScheme) {
+        getConfiguration().setIgnoreUriScheme(ignoreUriScheme);
+    }
+
+    public boolean isUnseen() {
+        return getConfiguration().isUnseen();
+    }
+
+    /**
+     * Whether to limit by unseen mails only.
+     * @param unseen
+     */
+    public void setUnseen(boolean unseen) {
+        getConfiguration().setUnseen(unseen);
+    }
+
+    /**
+     * Sets the <tt>To</tt> email address. Separate multiple email addresses with comma.
+     * @param address
+     */
+    public void setTo(String address) {
+        getConfiguration().setTo(address);
+    }
+
+    public String getTo() {
+        return getConfiguration().getTo();
+    }
+
+    /**
+     * Sets the <tt>CC</tt> email address. Separate multiple email addresses with comma.
+     * @param address
+     */
+    public void setCc(String address) {
+        getConfiguration().setCc(address);
+    }
+
+    public String getCc() {
+        return getConfiguration().getCc();
+    }
+
+    /**
+     * Sets the <tt>BCC</tt> email address. Separate multiple email addresses with comma.
+     * @param address
+     */
+    public void setBcc(String address) {
+        getConfiguration().setBcc(address);
+    }
+
+    public String getBcc() {
+        return getConfiguration().getBcc();
+    }
+
+    public Map<Message.RecipientType, String> getRecipients() {
+        return getConfiguration().getRecipients();
+    }
+
+    public String getReplyTo() {
+        return getConfiguration().getReplyTo();
+    }
+
+    /**
+     * The Reply-To recipients (the receivers of the response mail). Separate multiple email addresses with a comma.
+     * @param replyTo
+     */
+    public void setReplyTo(String replyTo) {
+        getConfiguration().setReplyTo(replyTo);
+    }
+
+    public int getFetchSize() {
+        return getConfiguration().getFetchSize();
+    }
+
+    /**
+     * Sets the maximum number of messages to consume during a poll. This can be used to avoid overloading a mail server,
+     * if a mailbox folder contains a lot of messages. Default value of -1 means no fetch size and all messages will be consumed.
+     * Setting the value to 0 is a special corner case, where Camel will not consume any messages at all.
+     * @param fetchSize
+     */
+    public void setFetchSize(int fetchSize) {
+        getConfiguration().setFetchSize(fetchSize);
+    }
+
+    public boolean isDebugMode() {
+        return getConfiguration().isDebugMode();
+    }
+
+    /**
+     * Enable debug mode on the underlying mail framework. The SUN Mail framework logs the debug messages to System.out by default.
+     * @param debugMode
+     */
+    public void setDebugMode(boolean debugMode) {
+        getConfiguration().setDebugMode(debugMode);
+    }
+
+    public long getConnectionTimeout() {
+        return getConfiguration().getConnectionTimeout();
+    }
+
+    /**
+     * The connection timeout in milliseconds.
+     * @param connectionTimeout
+     */
+    public void setConnectionTimeout(int connectionTimeout) {
+        getConfiguration().setConnectionTimeout(connectionTimeout);
+    }
+
+    public boolean isDummyTrustManager() {
+        return getConfiguration().isDummyTrustManager();
+    }
+
+    /**
+     * To use a dummy security setting for trusting all certificates. Should only be used for development mode, and not production.
+     * @param dummyTrustManager
+     */
+    public void setDummyTrustManager(boolean dummyTrustManager) {
+        getConfiguration().setDummyTrustManager(dummyTrustManager);
+    }
+
+    public String getContentType() {
+        return getConfiguration().getContentType();
+    }
+
+    /**
+     * The mail message content type. Use text/html for HTML mails.
+     * @param contentType
+     */
+    public void setContentType(String contentType) {
+        getConfiguration().setContentType(contentType);
+    }
+
+    public String getAlternativeBodyHeader() {
+        return getConfiguration().getAlternativeBodyHeader();
+    }
+
+    /**
+     * Specifies the key to an IN message header that contains an alternative email body.
+     * For example, if you send emails in text/html format and want to provide an alternative mail body for
+     * non-HTML email clients, set the alternative mail body with this key as a header.
+     * @param alternativeBodyHeader
+     */
+    public void setAlternativeBodyHeader(String alternativeBodyHeader) {
+        getConfiguration().setAlternativeBodyHeader(alternativeBodyHeader);
+    }
+
+    public boolean isUseInlineAttachments() {
+        return getConfiguration().isUseInlineAttachments();
+    }
+
+    /**
+     * Whether to use disposition inline or attachment.
+     * @param useInlineAttachments
+     */
+    public void setUseInlineAttachments(boolean useInlineAttachments) {
+        getConfiguration().setUseInlineAttachments(useInlineAttachments);
+    }
+
+    public boolean isIgnoreUnsupportedCharset() {
+        return getConfiguration().isIgnoreUnsupportedCharset();
+    }
+
+    /**
+     * Option to let Camel ignore unsupported charset in the local JVM when sending mails.
+     * If the charset is unsupported then charset=XXX (where XXX represents the unsupported charset)
+     * is removed from the content-type and it relies on the platform default instead.
+     * @param ignoreUnsupportedCharset
+     */
+    public void setIgnoreUnsupportedCharset(boolean ignoreUnsupportedCharset) {
+        getConfiguration().setIgnoreUnsupportedCharset(ignoreUnsupportedCharset);
+    }
+
+    public boolean isDisconnect() {
+        return getConfiguration().isDisconnect();
+    }
+
+    /**
+     * Whether the consumer should disconnect after polling. If enabled this forces Camel to connect on each poll.
+     * @param disconnect
+     */
+    public void setDisconnect(boolean disconnect) {
+        getConfiguration().setDisconnect(disconnect);
+    }
+
+    public boolean isCloseFolder() {
+        return getConfiguration().isCloseFolder();
+    }
+
+    /**
+     * Whether the consumer should close the folder after polling. Setting this option to false and having disconnect=false as well,
+     * then the consumer keep the folder open between polls.
+     * @param closeFolder
+     */
+    public void setCloseFolder(boolean closeFolder) {
+        getConfiguration().setCloseFolder(closeFolder);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfiguration().getSslContextParameters();
+    }
+
+    /**
+     * To configure security using SSLContextParameters.
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfiguration().setSslContextParameters(sslContextParameters);
+    }
+
+    public String getCopyTo() {
+        return getConfiguration().getCopyTo();
+    }
+
+    /**
+     * After processing a mail message, it can be copied to a mail folder with the given name.
+     * You can override this configuration value, with a header with the key copyTo, allowing you to copy messages
+     * to folder names configured at runtime.
+     * @param copyTo
+     */
+    public void setCopyTo(String copyTo) {
+        getConfiguration().setCopyTo(copyTo);
+    }
+
+    public boolean isPeek() {
+        return getConfiguration().isPeek();
+    }
+
+    /**
+     * Will mark the javax.mail.Message as peeked before processing the mail message.
+     * This applies to IMAPMessage messages types only. By using peek the mail will not be eager marked as SEEN on
+     * the mail server, which allows us to rollback the mail message if there is an error processing in Camel.
+     * @param peek
+     */
+    public void setPeek(boolean peek) {
+        getConfiguration().setPeek(peek);
+    }
+
+    public boolean isSkipFailedMessage() {
+        return getConfiguration().isSkipFailedMessage();
+    }
+
+    /**
+     * If the mail consumer cannot retrieve a given mail message, then this option allows to skip
+     * the message and move on to retrieve the next mail message.
+     * <p/>
+     * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+     * @param skipFailedMessage
+     */
+    public void setSkipFailedMessage(boolean skipFailedMessage) {
+        getConfiguration().setSkipFailedMessage(skipFailedMessage);
+    }
+
+    public boolean isHandleFailedMessage() {
+        return getConfiguration().isHandleFailedMessage();
+    }
+
+    /**
+     * If the mail consumer cannot retrieve a given mail message, then this option allows to handle
+     * the caused exception by the consumer's error handler. By enable the bridge error handler on the consumer,
+     * then the Camel routing error handler can handle the exception instead.
+     * <p/>
+     * The default behavior would be the consumer throws an exception and no mails from the batch would be able to be routed by Camel.
+     * @param handleFailedMessage
+     */
+    public void setHandleFailedMessage(boolean handleFailedMessage) {
+        getConfiguration().setHandleFailedMessage(handleFailedMessage);
+    }
+
+    public AttachmentsContentTransferEncodingResolver getAttachmentsContentTransferEncodingResolver() {
+        return getConfiguration().getAttachmentsContentTransferEncodingResolver();
+    }
+
+    /**
+     * To use a custom AttachmentsContentTransferEncodingResolver to resolve what content-type-encoding to use for attachments.
+     * @param attachmentsContentTransferEncodingResolver
+     */
+    public void setAttachmentsContentTransferEncodingResolver(AttachmentsContentTransferEncodingResolver attachmentsContentTransferEncodingResolver) {
+        getConfiguration().setAttachmentsContentTransferEncodingResolver(attachmentsContentTransferEncodingResolver);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mail/src/main/java/org/apache/camel/component/mail/springboot/MailComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-mail/src/main/java/org/apache/camel/component/mail/springboot/MailComponentConfiguration.java b/components/camel-mail/src/main/java/org/apache/camel/component/mail/springboot/MailComponentConfiguration.java
index 7b150d1..b5427e2 100644
--- a/components/camel-mail/src/main/java/org/apache/camel/component/mail/springboot/MailComponentConfiguration.java
+++ b/components/camel-mail/src/main/java/org/apache/camel/component/mail/springboot/MailComponentConfiguration.java
@@ -16,8 +16,13 @@
  */
 package org.apache.camel.component.mail.springboot;
 
+import java.util.Properties;
+import javax.mail.Session;
+import org.apache.camel.component.mail.AttachmentsContentTransferEncodingResolver;
 import org.apache.camel.component.mail.ContentTypeResolver;
+import org.apache.camel.component.mail.JavaMailSender;
 import org.apache.camel.component.mail.MailConfiguration;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,13 +34,209 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class MailComponentConfiguration {
 
     /**
-     * Sets the Mail configuration
+     * Sets the Mail configuration. Properties of the shared configuration can
+     * also be set individually.
      */
     private MailConfiguration configuration;
     /**
      * Resolver to determine Content-Type for file attachments.
      */
     private ContentTypeResolver contentTypeResolver;
+    /**
+     * To use a custom JavaMailSender for sending emails.
+     */
+    private JavaMailSender javaMailSender;
+    /**
+     * The mail server host name
+     */
+    private String host;
+    /**
+     * Sets the java mail options. Will clear any default properties and only
+     * use the properties provided for this method.
+     */
+    private Properties javaMailProperties;
+    /**
+     * Sets additional java mail properties that will append/override any
+     * default properties that is set based on all the other options. This is
+     * useful if you need to add some special options but want to keep the
+     * others as is.
+     */
+    private Properties additionalJavaMailProperties;
+    /**
+     * The password for login
+     */
+    private String password;
+    /**
+     * The Subject of the message being sent. Note: Setting the subject in the
+     * header takes precedence over this option.
+     */
+    private String subject;
+    /**
+     * The port number of the mail server
+     */
+    private Integer port;
+    /**
+     * The protocol for communicating with the mail server
+     */
+    private String protocol;
+    /**
+     * Specifies the mail session that camel should use for all mail
+     * interactions. Useful in scenarios where mail sessions are created and
+     * managed by some other resource such as a JavaEE container. If this is not
+     * specified Camel automatically creates the mail session for you.
+     */
+    private Session session;
+    /**
+     * The username for login
+     */
+    private String username;
+    /**
+     * The from email address
+     */
+    private String from;
+    /**
+     * Deletes the messages after they have been processed. This is done by
+     * setting the DELETED flag on the mail message. If false the SEEN flag is
+     * set instead. As of Camel 2.10 you can override this configuration option
+     * by setting a header with the key delete to determine if the mail should
+     * be deleted or not.
+     */
+    private Boolean delete = false;
+    /**
+     * Specifies whether Camel should map the received mail message to Camel
+     * body/headers. If set to true the body of the mail message is mapped to
+     * the body of the Camel IN message and the mail headers are mapped to IN
+     * headers. If this option is set to false then the IN message contains a
+     * raw javax.mail.Message. You can retrieve this raw message by calling
+     * exchange.getIn().getBody(javax.mail.Message.class).
+     */
+    private Boolean mapMailMessage = false;
+    /**
+     * The folder to poll.
+     */
+    private String folderName;
+    /**
+     * Option to let Camel ignore unsupported charset in the local JVM when
+     * sending mails. If the charset is unsupported then charset=XXX (where XXX
+     * represents the unsupported charset) is removed from the content-type and
+     * it relies on the platform default instead.
+     */
+    private Boolean ignoreUriScheme = false;
+    /**
+     * Whether to limit by unseen mails only.
+     */
+    private Boolean unseen = false;
+    /**
+     * Sets the To email address. Separate multiple email addresses with comma.
+     */
+    private String to;
+    /**
+     * Sets the CC email address. Separate multiple email addresses with comma.
+     */
+    private String cc;
+    /**
+     * Sets the BCC email address. Separate multiple email addresses with comma.
+     */
+    private String bcc;
+    /**
+     * The Reply-To recipients (the receivers of the response mail). Separate
+     * multiple email addresses with a comma.
+     */
+    private String replyTo;
+    /**
+     * Sets the maximum number of messages to consume during a poll. This can be
+     * used to avoid overloading a mail server if a mailbox folder contains a
+     * lot of messages. Default value of -1 means no fetch size and all messages
+     * will be consumed. Setting the value to 0 is a special corner case where
+     * Camel will not consume any messages at all.
+     */
+    private Integer fetchSize;
+    /**
+     * Enable debug mode on the underlying mail framework. The SUN Mail
+     * framework logs the debug messages to System.out by default.
+     */
+    private Boolean debugMode = false;
+    /**
+     * The connection timeout in milliseconds.
+     */
+    private Integer connectionTimeout;
+    /**
+     * To use a dummy security setting for trusting all certificates. Should
+     * only be used for development mode and not production.
+     */
+    private Boolean dummyTrustManager = false;
+    /**
+     * The mail message content type. Use text/html for HTML mails.
+     */
+    private String contentType;
+    /**
+     * Specifies the key to an IN message header that contains an alternative
+     * email body. For example if you send emails in text/html format and want
+     * to provide an alternative mail body for non-HTML email clients set the
+     * alternative mail body with this key as a header.
+     */
+    private String alternativeBodyHeader;
+    /**
+     * Whether to use disposition inline or attachment.
+     */
+    private Boolean useInlineAttachments = false;
+    /**
+     * Option to let Camel ignore unsupported charset in the local JVM when
+     * sending mails. If the charset is unsupported then charset=XXX (where XXX
+     * represents the unsupported charset) is removed from the content-type and
+     * it relies on the platform default instead.
+     */
+    private Boolean ignoreUnsupportedCharset = false;
+    /**
+     * Whether the consumer should disconnect after polling. If enabled this
+     * forces Camel to connect on each poll.
+     */
+    private Boolean disconnect = false;
+    /**
+     * Whether the consumer should close the folder after polling. Setting this
+     * option to false and having disconnect=false as well then the consumer
+     * keep the folder open between polls.
+     */
+    private Boolean closeFolder = false;
+    /**
+     * To configure security using SSLContextParameters.
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * After processing a mail message it can be copied to a mail folder with
+     * the given name. You can override this configuration value with a header
+     * with the key copyTo allowing you to copy messages to folder names
+     * configured at runtime.
+     */
+    private String copyTo;
+    /**
+     * Will mark the javax.mail.Message as peeked before processing the mail
+     * message. This applies to IMAPMessage messages types only. By using peek
+     * the mail will not be eager marked as SEEN on the mail server which allows
+     * us to rollback the mail message if there is an error processing in Camel.
+     */
+    private Boolean peek = false;
+    /**
+     * If the mail consumer cannot retrieve a given mail message then this
+     * option allows to skip the message and move on to retrieve the next mail
+     * message. The default behavior would be the consumer throws an exception
+     * and no mails from the batch would be able to be routed by Camel.
+     */
+    private Boolean skipFailedMessage = false;
+    /**
+     * If the mail consumer cannot retrieve a given mail message then this
+     * option allows to handle the caused exception by the consumer's error
+     * handler. By enable the bridge error handler on the consumer then the
+     * Camel routing error handler can handle the exception instead. The default
+     * behavior would be the consumer throws an exception and no mails from the
+     * batch would be able to be routed by Camel.
+     */
+    private Boolean handleFailedMessage = false;
+    /**
+     * To use a custom AttachmentsContentTransferEncodingResolver to resolve
+     * what content-type-encoding to use for attachments.
+     */
+    private AttachmentsContentTransferEncodingResolver attachmentsContentTransferEncodingResolver;
 
     public MailConfiguration getConfiguration() {
         return configuration;
@@ -52,4 +253,295 @@ public class MailComponentConfiguration {
     public void setContentTypeResolver(ContentTypeResolver contentTypeResolver) {
         this.contentTypeResolver = contentTypeResolver;
     }
+
+    public JavaMailSender getJavaMailSender() {
+        return javaMailSender;
+    }
+
+    public void setJavaMailSender(JavaMailSender javaMailSender) {
+        this.javaMailSender = javaMailSender;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Properties getJavaMailProperties() {
+        return javaMailProperties;
+    }
+
+    public void setJavaMailProperties(Properties javaMailProperties) {
+        this.javaMailProperties = javaMailProperties;
+    }
+
+    public Properties getAdditionalJavaMailProperties() {
+        return additionalJavaMailProperties;
+    }
+
+    public void setAdditionalJavaMailProperties(
+            Properties additionalJavaMailProperties) {
+        this.additionalJavaMailProperties = additionalJavaMailProperties;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public Session getSession() {
+        return session;
+    }
+
+    public void setSession(Session session) {
+        this.session = session;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getFrom() {
+        return from;
+    }
+
+    public void setFrom(String from) {
+        this.from = from;
+    }
+
+    public Boolean getDelete() {
+        return delete;
+    }
+
+    public void setDelete(Boolean delete) {
+        this.delete = delete;
+    }
+
+    public Boolean getMapMailMessage() {
+        return mapMailMessage;
+    }
+
+    public void setMapMailMessage(Boolean mapMailMessage) {
+        this.mapMailMessage = mapMailMessage;
+    }
+
+    public String getFolderName() {
+        return folderName;
+    }
+
+    public void setFolderName(String folderName) {
+        this.folderName = folderName;
+    }
+
+    public Boolean getIgnoreUriScheme() {
+        return ignoreUriScheme;
+    }
+
+    public void setIgnoreUriScheme(Boolean ignoreUriScheme) {
+        this.ignoreUriScheme = ignoreUriScheme;
+    }
+
+    public Boolean getUnseen() {
+        return unseen;
+    }
+
+    public void setUnseen(Boolean unseen) {
+        this.unseen = unseen;
+    }
+
+    public String getTo() {
+        return to;
+    }
+
+    public void setTo(String to) {
+        this.to = to;
+    }
+
+    public String getCc() {
+        return cc;
+    }
+
+    public void setCc(String cc) {
+        this.cc = cc;
+    }
+
+    public String getBcc() {
+        return bcc;
+    }
+
+    public void setBcc(String bcc) {
+        this.bcc = bcc;
+    }
+
+    public String getReplyTo() {
+        return replyTo;
+    }
+
+    public void setReplyTo(String replyTo) {
+        this.replyTo = replyTo;
+    }
+
+    public Integer getFetchSize() {
+        return fetchSize;
+    }
+
+    public void setFetchSize(Integer fetchSize) {
+        this.fetchSize = fetchSize;
+    }
+
+    public Boolean getDebugMode() {
+        return debugMode;
+    }
+
+    public void setDebugMode(Boolean debugMode) {
+        this.debugMode = debugMode;
+    }
+
+    public Integer getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    public void setConnectionTimeout(Integer connectionTimeout) {
+        this.connectionTimeout = connectionTimeout;
+    }
+
+    public Boolean getDummyTrustManager() {
+        return dummyTrustManager;
+    }
+
+    public void setDummyTrustManager(Boolean dummyTrustManager) {
+        this.dummyTrustManager = dummyTrustManager;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    public String getAlternativeBodyHeader() {
+        return alternativeBodyHeader;
+    }
+
+    public void setAlternativeBodyHeader(String alternativeBodyHeader) {
+        this.alternativeBodyHeader = alternativeBodyHeader;
+    }
+
+    public Boolean getUseInlineAttachments() {
+        return useInlineAttachments;
+    }
+
+    public void setUseInlineAttachments(Boolean useInlineAttachments) {
+        this.useInlineAttachments = useInlineAttachments;
+    }
+
+    public Boolean getIgnoreUnsupportedCharset() {
+        return ignoreUnsupportedCharset;
+    }
+
+    public void setIgnoreUnsupportedCharset(Boolean ignoreUnsupportedCharset) {
+        this.ignoreUnsupportedCharset = ignoreUnsupportedCharset;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getCloseFolder() {
+        return closeFolder;
+    }
+
+    public void setCloseFolder(Boolean closeFolder) {
+        this.closeFolder = closeFolder;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public String getCopyTo() {
+        return copyTo;
+    }
+
+    public void setCopyTo(String copyTo) {
+        this.copyTo = copyTo;
+    }
+
+    public Boolean getPeek() {
+        return peek;
+    }
+
+    public void setPeek(Boolean peek) {
+        this.peek = peek;
+    }
+
+    public Boolean getSkipFailedMessage() {
+        return skipFailedMessage;
+    }
+
+    public void setSkipFailedMessage(Boolean skipFailedMessage) {
+        this.skipFailedMessage = skipFailedMessage;
+    }
+
+    public Boolean getHandleFailedMessage() {
+        return handleFailedMessage;
+    }
+
+    public void setHandleFailedMessage(Boolean handleFailedMessage) {
+        this.handleFailedMessage = handleFailedMessage;
+    }
+
+    public AttachmentsContentTransferEncodingResolver getAttachmentsContentTransferEncodingResolver() {
+        return attachmentsContentTransferEncodingResolver;
+    }
+
+    public void setAttachmentsContentTransferEncodingResolver(
+            AttachmentsContentTransferEncodingResolver attachmentsContentTransferEncodingResolver) {
+        this.attachmentsContentTransferEncodingResolver = attachmentsContentTransferEncodingResolver;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina/src/main/docs/mina.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mina/src/main/docs/mina.adoc b/components/camel-mina/src/main/docs/mina.adoc
index 9584f29..3feb59c 100644
--- a/components/camel-mina/src/main/docs/mina.adoc
+++ b/components/camel-mina/src/main/docs/mina.adoc
@@ -65,8 +65,9 @@ Options
 
 
 
+
 // component options: START
-The Mina component supports 1 options which are listed below.
+The Mina component supports 21 options which are listed below.
 
 
 
@@ -74,7 +75,27 @@ The Mina component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | MinaConfiguration | To use the shared mina configuration.
+| configuration | MinaConfiguration | To use the shared mina configuration. Properties of the shared configuration can also be set individually.
+| protocol | String | Protocol to use
+| host | String | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server.
+| port | int | Port number
+| sync | boolean | Setting to set endpoint as one-way or request-response.
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| textlineDelimiter | TextLineDelimiter | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided Camel will use DEFAULT. This delimiter is used to mark the end of text.
+| codec | ProtocolCodecFactory | To use a custom minda codec implementation.
+| encoding | String | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided Camel will use the JVM default Charset
+| timeout | long | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds so 60000 is 60 seconds.
+| lazySessionCreation | boolean | Sessions can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| encoderMaxLineLength | int | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE.
+| decoderMaxLineLength | int | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024.
+| minaLogger | boolean | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output.
+| filters | List | You can set a list of Mina IoFilters to use.
+| allowDefaultCodec | boolean | The mina component installs a default codec if both codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain like the SSL filter.
+| disconnect | boolean | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back.
+| clientMode | boolean | If the clientMode is true mina consumer will connect the address as a TCP client.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -84,6 +105,7 @@ The Mina component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Mina component supports 24 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
index aad0415..95da223 100644
--- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
+++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ExecutorService;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.mina.common.DefaultIoFilterChainBuilder;
@@ -397,9 +398,277 @@ public class MinaComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared mina configuration.
+     * To use the shared mina configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(MinaConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    private MinaConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new MinaConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public String getCharsetName() {
+        return getConfigurationOrCreate().getCharsetName();
+    }
+
+    public String getProtocol() {
+        return getConfigurationOrCreate().getProtocol();
+    }
+
+    /**
+     * Protocol to use
+     * @param protocol
+     */
+    public void setProtocol(String protocol) {
+        getConfigurationOrCreate().setProtocol(protocol);
+    }
+
+    public String getHost() {
+        return getConfigurationOrCreate().getHost();
+    }
+
+    /**
+     * Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server.
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfigurationOrCreate().setHost(host);
+    }
+
+    public int getPort() {
+        return getConfigurationOrCreate().getPort();
+    }
+
+    /**
+     * Port number
+     * @param port
+     */
+    public void setPort(int port) {
+        getConfigurationOrCreate().setPort(port);
+    }
+
+    public boolean isSync() {
+        return getConfigurationOrCreate().isSync();
+    }
+
+    /**
+     * Setting to set endpoint as one-way or request-response.
+     * @param sync
+     */
+    public void setSync(boolean sync) {
+        getConfigurationOrCreate().setSync(sync);
+    }
+
+    public boolean isTextline() {
+        return getConfigurationOrCreate().isTextline();
+    }
+
+    /**
+     * Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec;
+     * if not specified or the value is false, then Object Serialization is assumed over TCP.
+     * @param textline
+     */
+    public void setTextline(boolean textline) {
+        getConfigurationOrCreate().setTextline(textline);
+    }
+
+    public TextLineDelimiter getTextlineDelimiter() {
+        return getConfigurationOrCreate().getTextlineDelimiter();
+    }
+
+    /**
+     * Only used for TCP and if textline=true. Sets the text line delimiter to use.
+     * If none provided, Camel will use DEFAULT.
+     * This delimiter is used to mark the end of text.
+     * @param textlineDelimiter
+     */
+    public void setTextlineDelimiter(TextLineDelimiter textlineDelimiter) {
+        getConfigurationOrCreate().setTextlineDelimiter(textlineDelimiter);
+    }
+
+    public ProtocolCodecFactory getCodec() {
+        return getConfigurationOrCreate().getCodec();
+    }
+
+    /**
+     * To use a custom minda codec implementation.
+     * @param codec
+     */
+    public void setCodec(ProtocolCodecFactory codec) {
+        getConfigurationOrCreate().setCodec(codec);
+    }
+
+    public String getEncoding() {
+        return getConfigurationOrCreate().getEncoding();
+    }
+
+    /**
+     * You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol.
+     * If not provided, Camel will use the JVM default Charset
+     * @param encoding
+     */
+    public void setEncoding(String encoding) {
+        getConfigurationOrCreate().setEncoding(encoding);
+    }
+
+    public long getTimeout() {
+        return getConfigurationOrCreate().getTimeout();
+    }
+
+    /**
+     * You can configure the timeout that specifies how long to wait for a response from a remote server.
+     * The timeout unit is in milliseconds, so 60000 is 60 seconds.
+     * @param timeout
+     */
+    public void setTimeout(long timeout) {
+        getConfigurationOrCreate().setTimeout(timeout);
+    }
+
+    public boolean isLazySessionCreation() {
+        return getConfigurationOrCreate().isLazySessionCreation();
+    }
+
+    /**
+     * Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.
+     * @param lazySessionCreation
+     */
+    public void setLazySessionCreation(boolean lazySessionCreation) {
+        getConfigurationOrCreate().setLazySessionCreation(lazySessionCreation);
+    }
+
+    public boolean isTransferExchange() {
+        return getConfigurationOrCreate().isTransferExchange();
+    }
+
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of just the body.
+     * The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception.
+     * This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+     * @param transferExchange
+     */
+    public void setTransferExchange(boolean transferExchange) {
+        getConfigurationOrCreate().setTransferExchange(transferExchange);
+    }
+
+    /**
+     * To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE.
+     * @param encoderMaxLineLength
+     */
+    public void setEncoderMaxLineLength(int encoderMaxLineLength) {
+        getConfigurationOrCreate().setEncoderMaxLineLength(encoderMaxLineLength);
+    }
+
+    public int getEncoderMaxLineLength() {
+        return getConfigurationOrCreate().getEncoderMaxLineLength();
+    }
+
+    /**
+     * To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024.
+     * @param decoderMaxLineLength
+     */
+    public void setDecoderMaxLineLength(int decoderMaxLineLength) {
+        getConfigurationOrCreate().setDecoderMaxLineLength(decoderMaxLineLength);
+    }
+
+    public int getDecoderMaxLineLength() {
+        return getConfigurationOrCreate().getDecoderMaxLineLength();
+    }
+
+    public boolean isMinaLogger() {
+        return getConfigurationOrCreate().isMinaLogger();
+    }
+
+    /**
+     * You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output.
+     * @param minaLogger
+     */
+    public void setMinaLogger(boolean minaLogger) {
+        getConfigurationOrCreate().setMinaLogger(minaLogger);
+    }
+
+    public List<IoFilter> getFilters() {
+        return getConfigurationOrCreate().getFilters();
+    }
+
+    /**
+     * You can set a list of Mina IoFilters to use.
+     * @param filters
+     */
+    public void setFilters(List<IoFilter> filters) {
+        getConfigurationOrCreate().setFilters(filters);
+    }
+
+    public boolean isDatagramProtocol() {
+        return getConfigurationOrCreate().isDatagramProtocol();
+    }
+
+    /**
+     * The mina component installs a default codec if both, codec is null and textline is false.
+     * Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain.
+     * This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter.
+     * @param allowDefaultCodec
+     */
+    public void setAllowDefaultCodec(boolean allowDefaultCodec) {
+        getConfigurationOrCreate().setAllowDefaultCodec(allowDefaultCodec);
+    }
+
+    public boolean isAllowDefaultCodec() {
+        return getConfigurationOrCreate().isAllowDefaultCodec();
+    }
+
+    public boolean isDisconnect() {
+        return getConfigurationOrCreate().isDisconnect();
+    }
+
+    /**
+     * Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer.
+     * @param disconnect
+     */
+    public void setDisconnect(boolean disconnect) {
+        getConfigurationOrCreate().setDisconnect(disconnect);
+    }
+
+    public boolean isDisconnectOnNoReply() {
+        return getConfigurationOrCreate().isDisconnectOnNoReply();
+    }
+
+    /**
+     * If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back.
+     * @param disconnectOnNoReply
+     */
+    public void setDisconnectOnNoReply(boolean disconnectOnNoReply) {
+        getConfigurationOrCreate().setDisconnectOnNoReply(disconnectOnNoReply);
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return getConfigurationOrCreate().getNoReplyLogLevel();
+    }
+
+    /**
+     * If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back.
+     * @param noReplyLogLevel
+     */
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        getConfigurationOrCreate().setNoReplyLogLevel(noReplyLogLevel);
+    }
+
+    public boolean isClientMode() {
+        return getConfigurationOrCreate().isClientMode();
+    }
+
+    /**
+     * If the clientMode is true, mina consumer will connect the address as a TCP client.
+     * @param clientMode
+     */
+    public void setClientMode(boolean clientMode) {
+        getConfigurationOrCreate().setClientMode(clientMode);
+    }
+
+    public String getUriString() {
+        return getConfigurationOrCreate().getUriString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina/src/main/java/org/apache/camel/component/mina/springboot/MinaComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-mina/src/main/java/org/apache/camel/component/mina/springboot/MinaComponentConfiguration.java b/components/camel-mina/src/main/java/org/apache/camel/component/mina/springboot/MinaComponentConfiguration.java
index 59c222e..0b169aa 100644
--- a/components/camel-mina/src/main/java/org/apache/camel/component/mina/springboot/MinaComponentConfiguration.java
+++ b/components/camel-mina/src/main/java/org/apache/camel/component/mina/springboot/MinaComponentConfiguration.java
@@ -16,7 +16,12 @@
  */
 package org.apache.camel.component.mina.springboot;
 
+import java.util.List;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.mina.MinaConfiguration;
+import org.apache.camel.component.mina.TextLineDelimiter;
+import org.apache.mina.common.IoFilter;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +33,115 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class MinaComponentConfiguration {
 
     /**
-     * To use the shared mina configuration.
+     * To use the shared mina configuration. Properties of the shared
+     * configuration can also be set individually.
      */
     private MinaConfiguration configuration;
+    /**
+     * Protocol to use
+     */
+    private String protocol;
+    /**
+     * Hostname to use. Use localhost or 0.0.0.0 for local server as consumer.
+     * For producer use the hostname or ip address of the remote server.
+     */
+    private String host;
+    /**
+     * Port number
+     */
+    private Integer port;
+    /**
+     * Setting to set endpoint as one-way or request-response.
+     */
+    private Boolean sync = false;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Only used for TCP and if textline=true. Sets the text line delimiter to
+     * use. If none provided Camel will use DEFAULT. This delimiter is used to
+     * mark the end of text.
+     */
+    private TextLineDelimiter textlineDelimiter;
+    /**
+     * To use a custom minda codec implementation.
+     */
+    private ProtocolCodecFactory codec;
+    /**
+     * You can configure the encoding (a charset name) to use for the TCP
+     * textline codec and the UDP protocol. If not provided Camel will use the
+     * JVM default Charset
+     */
+    private String encoding;
+    /**
+     * You can configure the timeout that specifies how long to wait for a
+     * response from a remote server. The timeout unit is in milliseconds so
+     * 60000 is 60 seconds.
+     */
+    private long timeout;
+    /**
+     * Sessions can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazySessionCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * To set the textline protocol encoder max line length. By default the
+     * default value of Mina itself is used which are Integer.MAX_VALUE.
+     */
+    private Integer encoderMaxLineLength;
+    /**
+     * To set the textline protocol decoder max line length. By default the
+     * default value of Mina itself is used which are 1024.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * You can enable the Apache MINA logging filter. Apache MINA uses slf4j
+     * logging at INFO level to log all input and output.
+     */
+    private Boolean minaLogger = false;
+    /**
+     * You can set a list of Mina IoFilters to use.
+     */
+    private List<IoFilter> filters;
+    /**
+     * The mina component installs a default codec if both codec is null and
+     * textline is false. Setting allowDefaultCodec to false prevents the mina
+     * component from installing a default codec as the first element in the
+     * filter chain. This is useful in scenarios where another filter must be
+     * the first in the filter chain like the SSL filter.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * Whether or not to disconnect(close) from Mina session right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * If sync is enabled then this option dictates MinaConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates MinaConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * If the clientMode is true mina consumer will connect the address as a TCP
+     * client.
+     */
+    private Boolean clientMode = false;
 
     public MinaConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +150,164 @@ public class MinaComponentConfiguration {
     public void setConfiguration(MinaConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public TextLineDelimiter getTextlineDelimiter() {
+        return textlineDelimiter;
+    }
+
+    public void setTextlineDelimiter(TextLineDelimiter textlineDelimiter) {
+        this.textlineDelimiter = textlineDelimiter;
+    }
+
+    public ProtocolCodecFactory getCodec() {
+        return codec;
+    }
+
+    public void setCodec(ProtocolCodecFactory codec) {
+        this.codec = codec;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(long timeout) {
+        this.timeout = timeout;
+    }
+
+    public Boolean getLazySessionCreation() {
+        return lazySessionCreation;
+    }
+
+    public void setLazySessionCreation(Boolean lazySessionCreation) {
+        this.lazySessionCreation = lazySessionCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Integer getEncoderMaxLineLength() {
+        return encoderMaxLineLength;
+    }
+
+    public void setEncoderMaxLineLength(Integer encoderMaxLineLength) {
+        this.encoderMaxLineLength = encoderMaxLineLength;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public Boolean getMinaLogger() {
+        return minaLogger;
+    }
+
+    public void setMinaLogger(Boolean minaLogger) {
+        this.minaLogger = minaLogger;
+    }
+
+    public List<IoFilter> getFilters() {
+        return filters;
+    }
+
+    public void setFilters(List<IoFilter> filters) {
+        this.filters = filters;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina2/src/main/docs/mina2.adoc
----------------------------------------------------------------------
diff --git a/components/camel-mina2/src/main/docs/mina2.adoc b/components/camel-mina2/src/main/docs/mina2.adoc
index f91afa3..94cfc23 100644
--- a/components/camel-mina2/src/main/docs/mina2.adoc
+++ b/components/camel-mina2/src/main/docs/mina2.adoc
@@ -66,8 +66,9 @@ Options
 
 
 
+
 // component options: START
-The Mina2 component supports 1 options which are listed below.
+The Mina2 component supports 26 options which are listed below.
 
 
 
@@ -75,7 +76,32 @@ The Mina2 component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | Mina2Configuration | To use the shared mina configuration.
+| configuration | Mina2Configuration | To use the shared mina configuration. Properties of the shared configuration can also be set individually.
+| protocol | String | Protocol to use
+| host | String | Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server.
+| port | int | Port number
+| sync | boolean | Setting to set endpoint as one-way or request-response.
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| textlineDelimiter | Mina2TextLineDelimiter | Only used for TCP and if textline=true. Sets the text line delimiter to use. If none provided Camel will use DEFAULT. This delimiter is used to mark the end of text.
+| codec | ProtocolCodecFactory | To use a custom minda codec implementation.
+| encoding | String | You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol. If not provided Camel will use the JVM default Charset
+| timeout | long | You can configure the timeout that specifies how long to wait for a response from a remote server. The timeout unit is in milliseconds so 60000 is 60 seconds.
+| lazySessionCreation | boolean | Sessions can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| encoderMaxLineLength | int | To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE.
+| decoderMaxLineLength | int | To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024.
+| minaLogger | boolean | You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output.
+| filters | List | You can set a list of Mina IoFilters to use.
+| allowDefaultCodec | boolean | The mina component installs a default codec if both codec is null and textline is false. Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain. This is useful in scenarios where another filter must be the first in the filter chain like the SSL filter.
+| disconnect | boolean | Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back.
+| sslContextParameters | SSLContextParameters | To configure SSL security.
+| autoStartTls | boolean | Whether to auto start SSL handshake.
+| maximumPoolSize | int | Number of worker threads in the worker pool for TCP and UDP
+| orderedThreadPoolExecutor | boolean | Whether to use ordered thread pool to ensure events are processed orderly on the same channel.
+| cachedAddress | boolean | Whether to create the InetAddress once and reuse. Setting this to false allows to pickup DNS changes in the network.
+| clientMode | boolean | If the clientMode is true mina consumer will connect the address as a TCP client.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -85,6 +111,7 @@ The Mina2 component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Mina2 component supports 29 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Component.java
----------------------------------------------------------------------
diff --git a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Component.java b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Component.java
index 349b59a..279d3ba 100644
--- a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Component.java
+++ b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Component.java
@@ -17,19 +17,23 @@
 package org.apache.camel.component.mina2;
 
 import java.net.URI;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.mina.core.filterchain.IoFilter;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
 
 /**
  * Component for Apache MINA 2.x.
  *
- * @version 
+ * @version
  */
 public class Mina2Component extends UriEndpointComponent {
 
@@ -105,9 +109,337 @@ public class Mina2Component extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared mina configuration.
+     * To use the shared mina configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(Mina2Configuration configuration) {
         this.configuration = configuration;
     }
+
+    private Mina2Configuration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new Mina2Configuration());
+        }
+        return this.getConfiguration();
+    }
+
+    public String getCharsetName() {
+        return getConfigurationOrCreate().getCharsetName();
+    }
+
+    public String getProtocol() {
+        return getConfigurationOrCreate().getProtocol();
+    }
+
+    /**
+     * Protocol to use
+     * @param protocol
+     */
+    public void setProtocol(String protocol) {
+        getConfigurationOrCreate().setProtocol(protocol);
+    }
+
+    public String getHost() {
+        return getConfigurationOrCreate().getHost();
+    }
+
+    /**
+     * Hostname to use. Use localhost or 0.0.0.0 for local server as consumer. For producer use the hostname or ip address of the remote server.
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfigurationOrCreate().setHost(host);
+    }
+
+    public int getPort() {
+        return getConfigurationOrCreate().getPort();
+    }
+
+    /**
+     * Port number
+     * @param port
+     */
+    public void setPort(int port) {
+        getConfigurationOrCreate().setPort(port);
+    }
+
+    public boolean isSync() {
+        return getConfigurationOrCreate().isSync();
+    }
+
+    /**
+     * Setting to set endpoint as one-way or request-response.
+     * @param sync
+     */
+    public void setSync(boolean sync) {
+        getConfigurationOrCreate().setSync(sync);
+    }
+
+    public boolean isTextline() {
+        return getConfigurationOrCreate().isTextline();
+    }
+
+    /**
+     * Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec;
+     * if not specified or the value is false, then Object Serialization is assumed over TCP.
+     * @param textline
+     */
+    public void setTextline(boolean textline) {
+        getConfigurationOrCreate().setTextline(textline);
+    }
+
+    public Mina2TextLineDelimiter getTextlineDelimiter() {
+        return getConfigurationOrCreate().getTextlineDelimiter();
+    }
+
+    /**
+     * Only used for TCP and if textline=true. Sets the text line delimiter to use.
+     * If none provided, Camel will use DEFAULT.
+     * This delimiter is used to mark the end of text.
+     * @param textlineDelimiter
+     */
+    public void setTextlineDelimiter(Mina2TextLineDelimiter textlineDelimiter) {
+        getConfigurationOrCreate().setTextlineDelimiter(textlineDelimiter);
+    }
+
+    public ProtocolCodecFactory getCodec() {
+        return getConfigurationOrCreate().getCodec();
+    }
+
+    /**
+     * To use a custom minda codec implementation.
+     * @param codec
+     */
+    public void setCodec(ProtocolCodecFactory codec) {
+        getConfigurationOrCreate().setCodec(codec);
+    }
+
+    public String getEncoding() {
+        return getConfigurationOrCreate().getEncoding();
+    }
+
+    /**
+     * You can configure the encoding (a charset name) to use for the TCP textline codec and the UDP protocol.
+     * If not provided, Camel will use the JVM default Charset
+     * @param encoding
+     */
+    public void setEncoding(String encoding) {
+        getConfigurationOrCreate().setEncoding(encoding);
+    }
+
+    public long getTimeout() {
+        return getConfigurationOrCreate().getTimeout();
+    }
+
+    /**
+     * You can configure the timeout that specifies how long to wait for a response from a remote server.
+     * The timeout unit is in milliseconds, so 60000 is 60 seconds.
+     * @param timeout
+     */
+    public void setTimeout(long timeout) {
+        getConfigurationOrCreate().setTimeout(timeout);
+    }
+
+    public boolean isLazySessionCreation() {
+        return getConfigurationOrCreate().isLazySessionCreation();
+    }
+
+    /**
+     * Sessions can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.
+     * @param lazySessionCreation
+     */
+    public void setLazySessionCreation(boolean lazySessionCreation) {
+        getConfigurationOrCreate().setLazySessionCreation(lazySessionCreation);
+    }
+
+    public boolean isTransferExchange() {
+        return getConfigurationOrCreate().isTransferExchange();
+    }
+
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of just the body.
+     * The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception.
+     * This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+     * @param transferExchange
+     */
+    public void setTransferExchange(boolean transferExchange) {
+        getConfigurationOrCreate().setTransferExchange(transferExchange);
+    }
+
+    /**
+     * To set the textline protocol encoder max line length. By default the default value of Mina itself is used which are Integer.MAX_VALUE.
+     * @param encoderMaxLineLength
+     */
+    public void setEncoderMaxLineLength(int encoderMaxLineLength) {
+        getConfigurationOrCreate().setEncoderMaxLineLength(encoderMaxLineLength);
+    }
+
+    public int getEncoderMaxLineLength() {
+        return getConfigurationOrCreate().getEncoderMaxLineLength();
+    }
+
+    /**
+     * To set the textline protocol decoder max line length. By default the default value of Mina itself is used which are 1024.
+     * @param decoderMaxLineLength
+     */
+    public void setDecoderMaxLineLength(int decoderMaxLineLength) {
+        getConfigurationOrCreate().setDecoderMaxLineLength(decoderMaxLineLength);
+    }
+
+    public int getDecoderMaxLineLength() {
+        return getConfigurationOrCreate().getDecoderMaxLineLength();
+    }
+
+    public boolean isMinaLogger() {
+        return getConfigurationOrCreate().isMinaLogger();
+    }
+
+    /**
+     * You can enable the Apache MINA logging filter. Apache MINA uses slf4j logging at INFO level to log all input and output.
+     * @param minaLogger
+     */
+    public void setMinaLogger(boolean minaLogger) {
+        getConfigurationOrCreate().setMinaLogger(minaLogger);
+    }
+
+    public List<IoFilter> getFilters() {
+        return getConfigurationOrCreate().getFilters();
+    }
+
+    /**
+     * You can set a list of Mina IoFilters to use.
+     * @param filters
+     */
+    public void setFilters(List<IoFilter> filters) {
+        getConfigurationOrCreate().setFilters(filters);
+    }
+
+    public boolean isDatagramProtocol() {
+        return getConfigurationOrCreate().isDatagramProtocol();
+    }
+
+    /**
+     * The mina component installs a default codec if both, codec is null and textline is false.
+     * Setting allowDefaultCodec to false prevents the mina component from installing a default codec as the first element in the filter chain.
+     * This is useful in scenarios where another filter must be the first in the filter chain, like the SSL filter.
+     * @param allowDefaultCodec
+     */
+    public void setAllowDefaultCodec(boolean allowDefaultCodec) {
+        getConfigurationOrCreate().setAllowDefaultCodec(allowDefaultCodec);
+    }
+
+    public boolean isAllowDefaultCodec() {
+        return getConfigurationOrCreate().isAllowDefaultCodec();
+    }
+
+    public boolean isDisconnect() {
+        return getConfigurationOrCreate().isDisconnect();
+    }
+
+    /**
+     * Whether or not to disconnect(close) from Mina session right after use. Can be used for both consumer and producer.
+     * @param disconnect
+     */
+    public void setDisconnect(boolean disconnect) {
+        getConfigurationOrCreate().setDisconnect(disconnect);
+    }
+
+    public boolean isDisconnectOnNoReply() {
+        return getConfigurationOrCreate().isDisconnectOnNoReply();
+    }
+
+    /**
+     * If sync is enabled then this option dictates MinaConsumer if it should disconnect where there is no reply to send back.
+     * @param disconnectOnNoReply
+     */
+    public void setDisconnectOnNoReply(boolean disconnectOnNoReply) {
+        getConfigurationOrCreate().setDisconnectOnNoReply(disconnectOnNoReply);
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return getConfigurationOrCreate().getNoReplyLogLevel();
+    }
+
+    /**
+     * If sync is enabled this option dictates MinaConsumer which logging level to use when logging a there is no reply to send back.
+     * @param noReplyLogLevel
+     */
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        getConfigurationOrCreate().setNoReplyLogLevel(noReplyLogLevel);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfigurationOrCreate().getSslContextParameters();
+    }
+
+    /**
+     * To configure SSL security.
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfigurationOrCreate().setSslContextParameters(sslContextParameters);
+    }
+
+    public boolean isAutoStartTls() {
+        return getConfigurationOrCreate().isAutoStartTls();
+    }
+
+    /**
+     * Whether to auto start SSL handshake.
+     * @param autoStartTls
+     */
+    public void setAutoStartTls(boolean autoStartTls) {
+        getConfigurationOrCreate().setAutoStartTls(autoStartTls);
+    }
+
+    public int getMaximumPoolSize() {
+        return getConfigurationOrCreate().getMaximumPoolSize();
+    }
+
+    /**
+     * Number of worker threads in the worker pool for TCP and UDP
+     * @param maximumPoolSize
+     */
+    public void setMaximumPoolSize(int maximumPoolSize) {
+        getConfigurationOrCreate().setMaximumPoolSize(maximumPoolSize);
+    }
+
+    public boolean isOrderedThreadPoolExecutor() {
+        return getConfigurationOrCreate().isOrderedThreadPoolExecutor();
+    }
+
+    /**
+     * Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.
+     * @param orderedThreadPoolExecutor
+     */
+    public void setOrderedThreadPoolExecutor(boolean orderedThreadPoolExecutor) {
+        getConfigurationOrCreate().setOrderedThreadPoolExecutor(orderedThreadPoolExecutor);
+    }
+
+    /**
+     * Whether to create the InetAddress once and reuse. Setting this to false allows to pickup DNS changes in the network.
+     * @param shouldCacheAddress
+     */
+    public void setCachedAddress(boolean shouldCacheAddress) {
+        getConfigurationOrCreate().setCachedAddress(shouldCacheAddress);
+    }
+
+    public boolean isCachedAddress() {
+        return getConfigurationOrCreate().isCachedAddress();
+    }
+
+    /**
+     * If the clientMode is true, mina consumer will connect the address as a TCP client.
+     * @param clientMode
+     */
+    public void setClientMode(boolean clientMode) {
+        getConfigurationOrCreate().setClientMode(clientMode);
+    }
+
+    public boolean isClientMode() {
+        return getConfigurationOrCreate().isClientMode();
+    }
+
+    public String getUriString() {
+        return getConfigurationOrCreate().getUriString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/springboot/Mina2ComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/springboot/Mina2ComponentConfiguration.java b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/springboot/Mina2ComponentConfiguration.java
index 38dcc81..9de1b29 100644
--- a/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/springboot/Mina2ComponentConfiguration.java
+++ b/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/springboot/Mina2ComponentConfiguration.java
@@ -16,7 +16,13 @@
  */
 package org.apache.camel.component.mina2.springboot;
 
+import java.util.List;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.component.mina2.Mina2Configuration;
+import org.apache.camel.component.mina2.Mina2TextLineDelimiter;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.apache.mina.core.filterchain.IoFilter;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +34,137 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class Mina2ComponentConfiguration {
 
     /**
-     * To use the shared mina configuration.
+     * To use the shared mina configuration. Properties of the shared
+     * configuration can also be set individually.
      */
     private Mina2Configuration configuration;
+    /**
+     * Protocol to use
+     */
+    private String protocol;
+    /**
+     * Hostname to use. Use localhost or 0.0.0.0 for local server as consumer.
+     * For producer use the hostname or ip address of the remote server.
+     */
+    private String host;
+    /**
+     * Port number
+     */
+    private Integer port;
+    /**
+     * Setting to set endpoint as one-way or request-response.
+     */
+    private Boolean sync = false;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Only used for TCP and if textline=true. Sets the text line delimiter to
+     * use. If none provided Camel will use DEFAULT. This delimiter is used to
+     * mark the end of text.
+     */
+    private Mina2TextLineDelimiter textlineDelimiter;
+    /**
+     * To use a custom minda codec implementation.
+     */
+    private ProtocolCodecFactory codec;
+    /**
+     * You can configure the encoding (a charset name) to use for the TCP
+     * textline codec and the UDP protocol. If not provided Camel will use the
+     * JVM default Charset
+     */
+    private String encoding;
+    /**
+     * You can configure the timeout that specifies how long to wait for a
+     * response from a remote server. The timeout unit is in milliseconds so
+     * 60000 is 60 seconds.
+     */
+    private long timeout;
+    /**
+     * Sessions can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazySessionCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * To set the textline protocol encoder max line length. By default the
+     * default value of Mina itself is used which are Integer.MAX_VALUE.
+     */
+    private Integer encoderMaxLineLength;
+    /**
+     * To set the textline protocol decoder max line length. By default the
+     * default value of Mina itself is used which are 1024.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * You can enable the Apache MINA logging filter. Apache MINA uses slf4j
+     * logging at INFO level to log all input and output.
+     */
+    private Boolean minaLogger = false;
+    /**
+     * You can set a list of Mina IoFilters to use.
+     */
+    private List<IoFilter> filters;
+    /**
+     * The mina component installs a default codec if both codec is null and
+     * textline is false. Setting allowDefaultCodec to false prevents the mina
+     * component from installing a default codec as the first element in the
+     * filter chain. This is useful in scenarios where another filter must be
+     * the first in the filter chain like the SSL filter.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * Whether or not to disconnect(close) from Mina session right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * If sync is enabled then this option dictates MinaConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates MinaConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * To configure SSL security.
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Whether to auto start SSL handshake.
+     */
+    private Boolean autoStartTls = false;
+    /**
+     * Number of worker threads in the worker pool for TCP and UDP
+     */
+    private Integer maximumPoolSize;
+    /**
+     * Whether to use ordered thread pool to ensure events are processed orderly
+     * on the same channel.
+     */
+    private Boolean orderedThreadPoolExecutor = false;
+    /**
+     * Whether to create the InetAddress once and reuse. Setting this to false
+     * allows to pickup DNS changes in the network.
+     */
+    private Boolean cachedAddress = false;
+    /**
+     * If the clientMode is true mina consumer will connect the address as a TCP
+     * client.
+     */
+    private Boolean clientMode = false;
 
     public Mina2Configuration getConfiguration() {
         return configuration;
@@ -39,4 +173,205 @@ public class Mina2ComponentConfiguration {
     public void setConfiguration(Mina2Configuration configuration) {
         this.configuration = configuration;
     }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public Mina2TextLineDelimiter getTextlineDelimiter() {
+        return textlineDelimiter;
+    }
+
+    public void setTextlineDelimiter(Mina2TextLineDelimiter textlineDelimiter) {
+        this.textlineDelimiter = textlineDelimiter;
+    }
+
+    public ProtocolCodecFactory getCodec() {
+        return codec;
+    }
+
+    public void setCodec(ProtocolCodecFactory codec) {
+        this.codec = codec;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public long getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(long timeout) {
+        this.timeout = timeout;
+    }
+
+    public Boolean getLazySessionCreation() {
+        return lazySessionCreation;
+    }
+
+    public void setLazySessionCreation(Boolean lazySessionCreation) {
+        this.lazySessionCreation = lazySessionCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Integer getEncoderMaxLineLength() {
+        return encoderMaxLineLength;
+    }
+
+    public void setEncoderMaxLineLength(Integer encoderMaxLineLength) {
+        this.encoderMaxLineLength = encoderMaxLineLength;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public Boolean getMinaLogger() {
+        return minaLogger;
+    }
+
+    public void setMinaLogger(Boolean minaLogger) {
+        this.minaLogger = minaLogger;
+    }
+
+    public List<IoFilter> getFilters() {
+        return filters;
+    }
+
+    public void setFilters(List<IoFilter> filters) {
+        this.filters = filters;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Boolean getAutoStartTls() {
+        return autoStartTls;
+    }
+
+    public void setAutoStartTls(Boolean autoStartTls) {
+        this.autoStartTls = autoStartTls;
+    }
+
+    public Integer getMaximumPoolSize() {
+        return maximumPoolSize;
+    }
+
+    public void setMaximumPoolSize(Integer maximumPoolSize) {
+        this.maximumPoolSize = maximumPoolSize;
+    }
+
+    public Boolean getOrderedThreadPoolExecutor() {
+        return orderedThreadPoolExecutor;
+    }
+
+    public void setOrderedThreadPoolExecutor(Boolean orderedThreadPoolExecutor) {
+        this.orderedThreadPoolExecutor = orderedThreadPoolExecutor;
+    }
+
+    public Boolean getCachedAddress() {
+        return cachedAddress;
+    }
+
+    public void setCachedAddress(Boolean cachedAddress) {
+        this.cachedAddress = cachedAddress;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
 }
\ No newline at end of file


[07/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-nagios/src/main/docs/nagios.adoc
----------------------------------------------------------------------
diff --git a/components/camel-nagios/src/main/docs/nagios.adoc b/components/camel-nagios/src/main/docs/nagios.adoc
index 1ea8837..b2aa95b 100644
--- a/components/camel-nagios/src/main/docs/nagios.adoc
+++ b/components/camel-nagios/src/main/docs/nagios.adoc
@@ -41,8 +41,9 @@ Options
 
 
 
+
 // component options: START
-The Nagios component supports 1 options which are listed below.
+The Nagios component supports 7 options which are listed below.
 
 
 
@@ -50,7 +51,13 @@ The Nagios component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | NagiosConfiguration | To use a shared NagiosConfiguration
+| configuration | NagiosConfiguration | To use a shared configuraiton. Properties of the shared configuration can also be set individually.
+| host | String | This is the address of the Nagios host where checks should be send.
+| port | int | The port number of the host.
+| connectionTimeout | int | Connection timeout in millis.
+| timeout | int | Sending timeout in millis.
+| password | String | Password to be authenticated when sending checks to Nagios.
+| encryptionMethod | NagiosEncryptionMethod | To specify an encryption method.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -59,6 +66,7 @@ The Nagios component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Nagios component supports 9 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosComponent.java b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosComponent.java
index c86e347..987b40b 100644
--- a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosComponent.java
+++ b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/NagiosComponent.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.nagios;
 import java.net.URI;
 import java.util.Map;
 
+import com.googlecode.jsendnsca.core.NagiosSettings;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ObjectHelper;
@@ -57,9 +59,82 @@ public class NagiosComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared {@link NagiosConfiguration}
+     * To use a shared configuraiton. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(NagiosConfiguration configuration) {
         this.configuration = configuration;
     }
+
+
+    public String getHost() {
+        return configuration.getHost();
+    }
+
+    /**
+     * This is the address of the Nagios host where checks should be send.
+     * @param host
+     */
+    public void setHost(String host) {
+        configuration.setHost(host);
+    }
+
+    public int getPort() {
+        return configuration.getPort();
+    }
+
+    /**
+     * The port number of the host.
+     * @param port
+     */
+    public void setPort(int port) {
+        configuration.setPort(port);
+    }
+
+    public int getConnectionTimeout() {
+        return configuration.getConnectionTimeout();
+    }
+
+    /**
+     * Connection timeout in millis.
+     * @param connectionTimeout
+     */
+    public void setConnectionTimeout(int connectionTimeout) {
+        configuration.setConnectionTimeout(connectionTimeout);
+    }
+
+    public int getTimeout() {
+        return configuration.getTimeout();
+    }
+
+    /**
+     * Sending timeout in millis.
+     * @param timeout
+     */
+    public void setTimeout(int timeout) {
+        configuration.setTimeout(timeout);
+    }
+
+    public String getPassword() {
+        return configuration.getPassword();
+    }
+
+    /**
+     * Password to be authenticated when sending checks to Nagios.
+     * @param password
+     */
+    public void setPassword(String password) {
+        configuration.setPassword(password);
+    }
+
+    public NagiosEncryptionMethod getEncryptionMethod() {
+        return configuration.getEncryptionMethod();
+    }
+
+    /**
+     * To specify an encryption method.
+     * @param encryptionMethod
+     */
+    public void setEncryptionMethod(NagiosEncryptionMethod encryptionMethod) {
+        configuration.setEncryptionMethod(encryptionMethod);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java
index afc8604..6f33834 100644
--- a/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java
+++ b/components/camel-nagios/src/main/java/org/apache/camel/component/nagios/springboot/NagiosComponentConfiguration.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.nagios.springboot;
 
 import org.apache.camel.component.nagios.NagiosConfiguration;
+import org.apache.camel.component.nagios.NagiosEncryptionMethod;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +29,34 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class NagiosComponentConfiguration {
 
     /**
-     * To use a shared NagiosConfiguration
+     * To use a shared configuraiton. Properties of the shared configuration can
+     * also be set individually.
      */
     private NagiosConfiguration configuration;
+    /**
+     * This is the address of the Nagios host where checks should be send.
+     */
+    private String host;
+    /**
+     * The port number of the host.
+     */
+    private Integer port;
+    /**
+     * Connection timeout in millis.
+     */
+    private Integer connectionTimeout;
+    /**
+     * Sending timeout in millis.
+     */
+    private Integer timeout;
+    /**
+     * Password to be authenticated when sending checks to Nagios.
+     */
+    private String password;
+    /**
+     * To specify an encryption method.
+     */
+    private NagiosEncryptionMethod encryptionMethod;
 
     public NagiosConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +65,52 @@ public class NagiosComponentConfiguration {
     public void setConfiguration(NagiosConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Integer getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    public void setConnectionTimeout(Integer connectionTimeout) {
+        this.connectionTimeout = connectionTimeout;
+    }
+
+    public Integer getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Integer timeout) {
+        this.timeout = timeout;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public NagiosEncryptionMethod getEncryptionMethod() {
+        return encryptionMethod;
+    }
+
+    public void setEncryptionMethod(NagiosEncryptionMethod encryptionMethod) {
+        this.encryptionMethod = encryptionMethod;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty/src/main/docs/netty.adoc
----------------------------------------------------------------------
diff --git a/components/camel-netty/src/main/docs/netty.adoc b/components/camel-netty/src/main/docs/netty.adoc
index 7fecf2f..6e64ea3 100644
--- a/components/camel-netty/src/main/docs/netty.adoc
+++ b/components/camel-netty/src/main/docs/netty.adoc
@@ -59,8 +59,9 @@ Options
 
 
 
+
 // component options: START
-The Netty component supports 2 options which are listed below.
+The Netty component supports 65 options which are listed below.
 
 
 
@@ -68,8 +69,71 @@ The Netty component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints.
+| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
 | maximumPoolSize | int | The core pool size for the ordered thread pool if its in use. The default value is 16.
+| orderedThreadPoolExecutor | boolean | Whether to use ordered thread pool to ensure events are processed orderly on the same channel. See details at the netty javadoc of org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor for more details.
+| producerPoolMaxActive | int | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients or idle awaiting checkout) at a given time. Use a negative value for no limit.
+| producerPoolMinIdle | int | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+| producerPoolMaxIdle | int | Sets the cap on the number of idle instances in the pool.
+| producerPoolMinEvictableIdle | long | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+| producerPoolEnabled | boolean | Whether producer pool is enabled or not. Important: Do not turn this off as the pooling is needed for handling concurrency and reliable request/reply.
+| udpConnectionlessSending | boolean | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+| clientMode | boolean | If the clientMode is true netty consumer will connect the address as a TCP client.
+| useChannelBuffer | boolean | If the useChannelBuffer is true netty producer will turn the message body into ChannelBuffer before sending it out.
+| maxChannelMemorySize | long | The maximum total size of the queued events per channel when using orderedThreadPoolExecutor. Specify 0 to disable.
+| maxTotalMemorySize | long | The maximum total size of the queued events for this pool when using orderedThreadPoolExecutor. Specify 0 to disable.
+| protocol | String | The protocol to use which can be tcp or udp.
+| host | String | The hostname. For the consumer the hostname is localhost or 0.0.0.0 For the producer the hostname is the remote host to connect to
+| port | int | The host port number
+| broadcast | boolean | Setting to choose Multicast over UDP
+| sendBufferSize | long | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+| receiveBufferSize | long | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+| receiveBufferSizePredictor | int | Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+| workerCount | int | When netty works on nio mode it uses default workerCount parameter from Netty which is cpu_core_threads2. User can use this operation to override the default workerCount from Netty
+| bossCount | int | When netty works on nio mode it uses default bossCount parameter from Netty which is 1. User can use this operation to override the default bossCount from Netty
+| keepAlive | boolean | Setting to ensure socket is not closed due to inactivity
+| tcpNoDelay | boolean | Setting to improve TCP protocol performance
+| reuseAddress | boolean | Setting to facilitate socket multiplexing
+| connectTimeout | long | Time to wait for a socket connection to be available. Value is in millis.
+| backlog | int | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200 500 or 1000 tells the TCP stack how long the accept queue can be If this option is not configured then the backlog depends on OS setting.
+| ssl | boolean | Setting to specify whether SSL encryption is applied to this endpoint
+| sslClientCertHeaders | boolean | When enabled and in SSL mode then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name issuer name serial number and the valid date range.
+| sslHandler | SslHandler | Reference to a class that could be used to return an SSL Handler
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
+| needClientAuth | boolean | Configures whether the server needs client authentication when using SSL.
+| keyStoreResource | String | Client side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| trustStoreResource | String | Server side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| keyStoreFormat | String | Keystore format to be used for payload encryption. Defaults to JKS if not set
+| securityProvider | String | Security provider to be used for payload encryption. Defaults to SunX509 if not set.
+| passphrase | String | Password setting to use in order to encrypt/decrypt payloads sent using SSH
+| serverPipelineFactory | ServerPipelineFactory | To use a custom ServerPipelineFactory
+| requestTimeout | long | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+| nettyServerBootstrapFactory | NettyServerBootstrapFactory | To use a custom NettyServerBootstrapFactory
+| sync | boolean | Setting to set endpoint as one-way or request-response
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| options | Map | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.
+| decoderMaxLineLength | int | The max line length to use for the textline codec.
+| bossPool | BossPool | To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+| delimiter | TextLineDelimiter | The delimiter to use for the textline codec. Possible values are LINE and NULL.
+| autoAppendDelimiter | boolean | Whether or not to auto append missing end delimiter when sending using the textline codec.
+| workerPool | WorkerPool | To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the worker thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own worker pool with 2 x cpu count core threads.
+| channelGroup | ChannelGroup | To use a explicit ChannelGroup.
+| encoding | String | The encoding (a charset name) to use for the textline codec. If not provided Camel will use the JVM default Charset.
+| networkInterface | String | When using UDP then this option can be used to specify a network interface by its name such as eth0 to join a multicast group.
+| decoders | List | A list of decoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| enabledProtocols | String | Which protocols to enable when using SSL
+| encoders | List | A list of encoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| encoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. Must override org.jboss.netty.channel.ChannelDownStreamHandler.
+| decoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. Must override org.jboss.netty.channel.ChannelUpStreamHandler.
+| disconnect | boolean | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+| lazyChannelCreation | boolean | Channels can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+| serverExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an exception then its logged using this logging level.
+| serverClosedChannelExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+| allowDefaultCodec | boolean | The netty component installs a default codec if both encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+| clientPipelineFactory | ClientPipelineFactory | To use a custom ClientPipelineFactory
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -79,6 +143,7 @@ The Netty component supports 2 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Netty component supports 70 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
index 9565000..9e96de8 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyComponent.java
@@ -18,16 +18,24 @@ package org.apache.camel.component.netty;
 
 import java.net.URI;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.concurrent.CamelThreadFactory;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.channel.group.ChannelGroup;
+import org.jboss.netty.channel.socket.nio.BossPool;
+import org.jboss.netty.channel.socket.nio.WorkerPool;
 import org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
+import org.jboss.netty.handler.ssl.SslHandler;
 import org.jboss.netty.util.HashedWheelTimer;
 import org.jboss.netty.util.Timer;
 
@@ -93,7 +101,7 @@ public class NettyComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the NettyConfiguration as configuration when creating endpoints.
+     * To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(NettyConfiguration configuration) {
         this.configuration = configuration;
@@ -112,6 +120,144 @@ public class NettyComponent extends UriEndpointComponent {
         this.maximumPoolSize = maximumPoolSize;
     }
 
+    public boolean isOrderedThreadPoolExecutor() {
+        return getConfigurationOrCreate().isOrderedThreadPoolExecutor();
+    }
+
+    /**
+     * Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.
+     * See details at the netty javadoc of org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor for more details.
+     * @param orderedThreadPoolExecutor
+     */
+    public void setOrderedThreadPoolExecutor(boolean orderedThreadPoolExecutor) {
+        getConfigurationOrCreate().setOrderedThreadPoolExecutor(orderedThreadPoolExecutor);
+    }
+
+    public int getProducerPoolMaxActive() {
+        return getConfigurationOrCreate().getProducerPoolMaxActive();
+    }
+
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit.
+     * @param producerPoolMaxActive
+     */
+    public void setProducerPoolMaxActive(int producerPoolMaxActive) {
+        getConfigurationOrCreate().setProducerPoolMaxActive(producerPoolMaxActive);
+    }
+
+    public int getProducerPoolMinIdle() {
+        return getConfigurationOrCreate().getProducerPoolMinIdle();
+    }
+
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+     * @param producerPoolMinIdle
+     */
+    public void setProducerPoolMinIdle(int producerPoolMinIdle) {
+        getConfigurationOrCreate().setProducerPoolMinIdle(producerPoolMinIdle);
+    }
+
+    public int getProducerPoolMaxIdle() {
+        return getConfigurationOrCreate().getProducerPoolMaxIdle();
+    }
+
+    /**
+     * Sets the cap on the number of "idle" instances in the pool.
+     * @param producerPoolMaxIdle
+     */
+    public void setProducerPoolMaxIdle(int producerPoolMaxIdle) {
+        getConfigurationOrCreate().setProducerPoolMaxIdle(producerPoolMaxIdle);
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return getConfigurationOrCreate().getProducerPoolMinEvictableIdle();
+    }
+
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+     * @param producerPoolMinEvictableIdle
+     */
+    public void setProducerPoolMinEvictableIdle(long producerPoolMinEvictableIdle) {
+        getConfigurationOrCreate().setProducerPoolMinEvictableIdle(producerPoolMinEvictableIdle);
+    }
+
+    public boolean isProducerPoolEnabled() {
+        return getConfigurationOrCreate().isProducerPoolEnabled();
+    }
+
+    /**
+     * Whether producer pool is enabled or not.
+     * Important: Do not turn this off, as the pooling is needed for handling concurrency and reliable request/reply.
+     * @param producerPoolEnabled
+     */
+    public void setProducerPoolEnabled(boolean producerPoolEnabled) {
+        getConfigurationOrCreate().setProducerPoolEnabled(producerPoolEnabled);
+    }
+
+    public boolean isUdpConnectionlessSending() {
+        return getConfigurationOrCreate().isUdpConnectionlessSending();
+    }
+
+    /**
+     * This option supports connection less udp sending which is a real fire and forget.
+     * A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+     * @param udpConnectionlessSending
+     */
+    public void setUdpConnectionlessSending(boolean udpConnectionlessSending) {
+        getConfigurationOrCreate().setUdpConnectionlessSending(udpConnectionlessSending);
+    }
+
+    public boolean isClientMode() {
+        return getConfigurationOrCreate().isClientMode();
+    }
+
+    /**
+     * If the clientMode is true, netty consumer will connect the address as a TCP client.
+     * @param clientMode
+     */
+    public void setClientMode(boolean clientMode) {
+        getConfigurationOrCreate().setClientMode(clientMode);
+    }
+
+    public boolean isUseChannelBuffer() {
+        return getConfigurationOrCreate().isUseChannelBuffer();
+    }
+
+    /**
+     * If the useChannelBuffer is true, netty producer will turn the message body into {@link ChannelBuffer} before sending it out.
+     * @param useChannelBuffer
+     */
+    public void setUseChannelBuffer(boolean useChannelBuffer) {
+        getConfigurationOrCreate().setUseChannelBuffer(useChannelBuffer);
+    }
+
+    public long getMaxChannelMemorySize() {
+        return getConfigurationOrCreate().getMaxChannelMemorySize();
+    }
+
+    /**
+     * The maximum total size of the queued events per channel when using orderedThreadPoolExecutor.
+     * Specify 0 to disable.
+     * @param maxChannelMemorySize
+     */
+    public void setMaxChannelMemorySize(long maxChannelMemorySize) {
+        getConfigurationOrCreate().setMaxChannelMemorySize(maxChannelMemorySize);
+    }
+
+    public long getMaxTotalMemorySize() {
+        return getConfigurationOrCreate().getMaxTotalMemorySize();
+    }
+
+    /**
+     * The maximum total size of the queued events for this pool when using orderedThreadPoolExecutor.
+     * Specify 0 to disable.
+     * @param maxTotalMemorySize
+     */
+    public void setMaxTotalMemorySize(long maxTotalMemorySize) {
+        getConfigurationOrCreate().setMaxTotalMemorySize(maxTotalMemorySize);
+    }
+
     public Timer getTimer() {
         return timer;
     }
@@ -171,4 +317,671 @@ public class NettyComponent extends UriEndpointComponent {
         super.doStop();
     }
 
+    private NettyConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new NettyConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public String getAddress() {
+        return getConfigurationOrCreate().getAddress();
+    }
+
+    public boolean isTcp() {
+        return getConfigurationOrCreate().isTcp();
+    }
+
+    public String getProtocol() {
+        return getConfigurationOrCreate().getProtocol();
+    }
+
+    /**
+     * The protocol to use which can be tcp or udp.
+     * @param protocol
+     */
+    public void setProtocol(String protocol) {
+        getConfigurationOrCreate().setProtocol(protocol);
+    }
+
+    public String getHost() {
+        return getConfigurationOrCreate().getHost();
+    }
+
+    /**
+     * The hostname.
+     * <p/>
+     * For the consumer the hostname is localhost or 0.0.0.0
+     * For the producer the hostname is the remote host to connect to
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfigurationOrCreate().setHost(host);
+    }
+
+    public int getPort() {
+        return getConfigurationOrCreate().getPort();
+    }
+
+    /**
+     * The host port number
+     * @param port
+     */
+    public void setPort(int port) {
+        getConfigurationOrCreate().setPort(port);
+    }
+
+    public boolean isBroadcast() {
+        return getConfigurationOrCreate().isBroadcast();
+    }
+
+    /**
+     * Setting to choose Multicast over UDP
+     * @param broadcast
+     */
+    public void setBroadcast(boolean broadcast) {
+        getConfigurationOrCreate().setBroadcast(broadcast);
+    }
+
+    public long getSendBufferSize() {
+        return getConfigurationOrCreate().getSendBufferSize();
+    }
+
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+     * @param sendBufferSize
+     */
+    public void setSendBufferSize(long sendBufferSize) {
+        getConfigurationOrCreate().setSendBufferSize(sendBufferSize);
+    }
+
+    public long getReceiveBufferSize() {
+        return getConfigurationOrCreate().getReceiveBufferSize();
+    }
+
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+     * @param receiveBufferSize
+     */
+    public void setReceiveBufferSize(long receiveBufferSize) {
+        getConfigurationOrCreate().setReceiveBufferSize(receiveBufferSize);
+    }
+
+    public int getReceiveBufferSizePredictor() {
+        return getConfigurationOrCreate().getReceiveBufferSizePredictor();
+    }
+
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+     * @param receiveBufferSizePredictor
+     */
+    public void setReceiveBufferSizePredictor(int receiveBufferSizePredictor) {
+        getConfigurationOrCreate().setReceiveBufferSizePredictor(receiveBufferSizePredictor);
+    }
+
+    public int getWorkerCount() {
+        return getConfigurationOrCreate().getWorkerCount();
+    }
+
+    /**
+     * When netty works on nio mode, it uses default workerCount parameter from Netty, which is cpu_core_threads*2.
+     * User can use this operation to override the default workerCount from Netty
+     * @param workerCount
+     */
+    public void setWorkerCount(int workerCount) {
+        getConfigurationOrCreate().setWorkerCount(workerCount);
+    }
+
+    public int getBossCount() {
+        return getConfigurationOrCreate().getBossCount();
+    }
+
+    /**
+     * When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1.
+     * User can use this operation to override the default bossCount from Netty
+     * @param bossCount
+     */
+    public void setBossCount(int bossCount) {
+        getConfigurationOrCreate().setBossCount(bossCount);
+    }
+
+    public boolean isKeepAlive() {
+        return getConfigurationOrCreate().isKeepAlive();
+    }
+
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     * @param keepAlive
+     */
+    public void setKeepAlive(boolean keepAlive) {
+        getConfigurationOrCreate().setKeepAlive(keepAlive);
+    }
+
+    public boolean isTcpNoDelay() {
+        return getConfigurationOrCreate().isTcpNoDelay();
+    }
+
+    /**
+     * Setting to improve TCP protocol performance
+     * @param tcpNoDelay
+     */
+    public void setTcpNoDelay(boolean tcpNoDelay) {
+        getConfigurationOrCreate().setTcpNoDelay(tcpNoDelay);
+    }
+
+    public boolean isReuseAddress() {
+        return getConfigurationOrCreate().isReuseAddress();
+    }
+
+    /**
+     * Setting to facilitate socket multiplexing
+     * @param reuseAddress
+     */
+    public void setReuseAddress(boolean reuseAddress) {
+        getConfigurationOrCreate().setReuseAddress(reuseAddress);
+    }
+
+    public long getConnectTimeout() {
+        return getConfigurationOrCreate().getConnectTimeout();
+    }
+
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     * @param connectTimeout
+     */
+    public void setConnectTimeout(long connectTimeout) {
+        getConfigurationOrCreate().setConnectTimeout(connectTimeout);
+    }
+
+    public int getBacklog() {
+        return getConfigurationOrCreate().getBacklog();
+    }
+
+    /**
+     * Allows to configure a backlog for netty consumer (server).
+     * Note the backlog is just a best effort depending on the OS.
+     * Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the "accept" queue can be
+     * If this option is not configured, then the backlog depends on OS setting.
+     * @param backlog
+     */
+    public void setBacklog(int backlog) {
+        getConfigurationOrCreate().setBacklog(backlog);
+    }
+
+    public boolean isSsl() {
+        return getConfigurationOrCreate().isSsl();
+    }
+
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     * @param ssl
+     */
+    public void setSsl(boolean ssl) {
+        getConfigurationOrCreate().setSsl(ssl);
+    }
+
+    public boolean isSslClientCertHeaders() {
+        return getConfigurationOrCreate().isSslClientCertHeaders();
+    }
+
+    /**
+     * When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having
+     * information about the client certificate such as subject name, issuer name, serial number, and the valid date range.
+     * @param sslClientCertHeaders
+     */
+    public void setSslClientCertHeaders(boolean sslClientCertHeaders) {
+        getConfigurationOrCreate().setSslClientCertHeaders(sslClientCertHeaders);
+    }
+
+    public SslHandler getSslHandler() {
+        return getConfigurationOrCreate().getSslHandler();
+    }
+
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     * @param sslHandler
+     */
+    public void setSslHandler(SslHandler sslHandler) {
+        getConfigurationOrCreate().setSslHandler(sslHandler);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfigurationOrCreate().getSslContextParameters();
+    }
+
+    /**
+     * To configure security using SSLContextParameters
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfigurationOrCreate().setSslContextParameters(sslContextParameters);
+    }
+
+    public boolean isNeedClientAuth() {
+        return getConfigurationOrCreate().isNeedClientAuth();
+    }
+
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     * @param needClientAuth
+     */
+    public void setNeedClientAuth(boolean needClientAuth) {
+        getConfigurationOrCreate().setNeedClientAuth(needClientAuth);
+    }
+
+    public String getKeyStoreResource() {
+        return getConfigurationOrCreate().getKeyStoreResource();
+    }
+
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by default from classpath,
+     * but you can prefix with "classpath:", "file:", or "http:" to load the resource from different systems.
+     * @param keyStoreResource
+     */
+    public void setKeyStoreResource(String keyStoreResource) {
+        getConfigurationOrCreate().setKeyStoreResource(keyStoreResource);
+    }
+
+    public String getTrustStoreResource() {
+        return getConfigurationOrCreate().getTrustStoreResource();
+    }
+
+    /**
+     * Server side certificate keystore to be used for encryption.
+     * Is loaded by default from classpath, but you can prefix with "classpath:", "file:", or "http:" to load the resource from different systems.
+     * @param trustStoreResource
+     */
+    public void setTrustStoreResource(String trustStoreResource) {
+        getConfigurationOrCreate().setTrustStoreResource(trustStoreResource);
+    }
+
+    public String getKeyStoreFormat() {
+        return getConfigurationOrCreate().getKeyStoreFormat();
+    }
+
+    /**
+     * Keystore format to be used for payload encryption. Defaults to "JKS" if not set
+     * @param keyStoreFormat
+     */
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        getConfigurationOrCreate().setKeyStoreFormat(keyStoreFormat);
+    }
+
+    public String getSecurityProvider() {
+        return getConfigurationOrCreate().getSecurityProvider();
+    }
+
+    /**
+     * Security provider to be used for payload encryption. Defaults to "SunX509" if not set.
+     * @param securityProvider
+     */
+    public void setSecurityProvider(String securityProvider) {
+        getConfigurationOrCreate().setSecurityProvider(securityProvider);
+    }
+
+    public String getCharsetName() {
+        return getConfigurationOrCreate().getCharsetName();
+    }
+
+    public String getPassphrase() {
+        return getConfigurationOrCreate().getPassphrase();
+    }
+
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using SSH
+     * @param passphrase
+     */
+    public void setPassphrase(String passphrase) {
+        getConfigurationOrCreate().setPassphrase(passphrase);
+    }
+
+    public ServerPipelineFactory getServerPipelineFactory() {
+        return getConfigurationOrCreate().getServerPipelineFactory();
+    }
+
+    public long getRequestTimeout() {
+        return getConfigurationOrCreate().getRequestTimeout();
+    }
+
+    /**
+     * To use a custom ServerPipelineFactory
+     * @param serverPipelineFactory
+     */
+    public void setServerPipelineFactory(ServerPipelineFactory serverPipelineFactory) {
+        getConfigurationOrCreate().setServerPipelineFactory(serverPipelineFactory);
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return getConfigurationOrCreate().getNettyServerBootstrapFactory();
+    }
+
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote server.
+     * By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds.
+     * The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+     * @param requestTimeout
+     */
+    public void setRequestTimeout(long requestTimeout) {
+        getConfigurationOrCreate().setRequestTimeout(requestTimeout);
+    }
+
+    public boolean isSync() {
+        return getConfigurationOrCreate().isSync();
+    }
+
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     * @param nettyServerBootstrapFactory
+     */
+    public void setNettyServerBootstrapFactory(NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        getConfigurationOrCreate().setNettyServerBootstrapFactory(nettyServerBootstrapFactory);
+    }
+
+    /**
+     * Setting to set endpoint as one-way or request-response
+     * @param sync
+     */
+    public void setSync(boolean sync) {
+        getConfigurationOrCreate().setSync(sync);
+    }
+
+    public boolean isTextline() {
+        return getConfigurationOrCreate().isTextline();
+    }
+
+    public Map<String, Object> getOptions() {
+        return getConfigurationOrCreate().getOptions();
+    }
+
+    /**
+     * Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec;
+     * if not specified or the value is false, then Object Serialization is assumed over TCP.
+     * @param textline
+     */
+    public void setTextline(boolean textline) {
+        getConfigurationOrCreate().setTextline(textline);
+    }
+
+    /**
+     * Allows to configure additional netty options using "option." as prefix.
+     * For example "option.child.keepAlive=false" to set the netty option "child.keepAlive=false". See the Netty documentation for possible options that can be used.
+     * @param options
+     */
+    public void setOptions(Map<String, Object> options) {
+        getConfigurationOrCreate().setOptions(options);
+    }
+
+    public int getDecoderMaxLineLength() {
+        return getConfigurationOrCreate().getDecoderMaxLineLength();
+    }
+
+    public BossPool getBossPool() {
+        return getConfigurationOrCreate().getBossPool();
+    }
+
+    /**
+     * The max line length to use for the textline codec.
+     * @param decoderMaxLineLength
+     */
+    public void setDecoderMaxLineLength(int decoderMaxLineLength) {
+        getConfigurationOrCreate().setDecoderMaxLineLength(decoderMaxLineLength);
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return getConfigurationOrCreate().getDelimiter();
+    }
+
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss thread pool.
+     * For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+     * @param bossPool
+     */
+    public void setBossPool(BossPool bossPool) {
+        getConfigurationOrCreate().setBossPool(bossPool);
+    }
+
+    public WorkerPool getWorkerPool() {
+        return getConfigurationOrCreate().getWorkerPool();
+    }
+
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and NULL.
+     * @param delimiter
+     */
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        getConfigurationOrCreate().setDelimiter(delimiter);
+    }
+
+    public boolean isAutoAppendDelimiter() {
+        return getConfigurationOrCreate().isAutoAppendDelimiter();
+    }
+
+    /**
+     * Whether or not to auto append missing end delimiter when sending using the textline codec.
+     * @param autoAppendDelimiter
+     */
+    public void setAutoAppendDelimiter(boolean autoAppendDelimiter) {
+        getConfigurationOrCreate().setAutoAppendDelimiter(autoAppendDelimiter);
+    }
+
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the worker thread pool.
+     * For example to share a thread pool with multiple consumers. By default each consumer has their own worker pool with 2 x cpu count core threads.
+     * @param workerPool
+     */
+    public void setWorkerPool(WorkerPool workerPool) {
+        getConfigurationOrCreate().setWorkerPool(workerPool);
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return getConfigurationOrCreate().getChannelGroup();
+    }
+
+    public String getEncoding() {
+        return getConfigurationOrCreate().getEncoding();
+    }
+
+    /**
+     * To use a explicit ChannelGroup.
+     * @param channelGroup
+     */
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        getConfigurationOrCreate().setChannelGroup(channelGroup);
+    }
+
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset.
+     * @param encoding
+     */
+    public void setEncoding(String encoding) {
+        getConfigurationOrCreate().setEncoding(encoding);
+    }
+
+    public String getNetworkInterface() {
+        return getConfigurationOrCreate().getNetworkInterface();
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return getConfigurationOrCreate().getDecoders();
+    }
+
+    /**
+     * When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group.
+     * @param networkInterface
+     */
+    public void setNetworkInterface(String networkInterface) {
+        getConfigurationOrCreate().setNetworkInterface(networkInterface);
+    }
+
+    public String getEnabledProtocols() {
+        return getConfigurationOrCreate().getEnabledProtocols();
+    }
+
+    /**
+     * A list of decoders to be used.
+     * You can use a String which have values separated by comma, and have the values be looked up in the Registry.
+     * Just remember to prefix the value with # so Camel knows it should lookup.
+     * @param decoders
+     */
+    public void setDecoders(List<ChannelHandler> decoders) {
+        getConfigurationOrCreate().setDecoders(decoders);
+    }
+
+    /**
+     * Which protocols to enable when using SSL
+     * @param enabledProtocols
+     */
+    public void setEnabledProtocols(String enabledProtocols) {
+        getConfigurationOrCreate().setEnabledProtocols(enabledProtocols);
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return getConfigurationOrCreate().getEncoders();
+    }
+
+    /**
+     * A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry.
+     * Just remember to prefix the value with # so Camel knows it should lookup.
+     * @param encoders
+     */
+    public void setEncoders(List<ChannelHandler> encoders) {
+        getConfigurationOrCreate().setEncoders(encoders);
+    }
+
+    public ChannelHandler getEncoder() {
+        return getConfigurationOrCreate().getEncoder();
+    }
+
+    /**
+     * A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. Must override org.jboss.netty.channel.ChannelDownStreamHandler.
+     * @param encoder
+     */
+    public void setEncoder(ChannelHandler encoder) {
+        getConfigurationOrCreate().setEncoder(encoder);
+    }
+
+    public ChannelHandler getDecoder() {
+        return getConfigurationOrCreate().getDecoder();
+    }
+
+    /**
+     * A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. Must override org.jboss.netty.channel.ChannelUpStreamHandler.
+     * @param decoder
+     */
+    public void setDecoder(ChannelHandler decoder) {
+        getConfigurationOrCreate().setDecoder(decoder);
+    }
+
+    public boolean isDisconnect() {
+        return getConfigurationOrCreate().isDisconnect();
+    }
+
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+     * @param disconnect
+     */
+    public void setDisconnect(boolean disconnect) {
+        getConfigurationOrCreate().setDisconnect(disconnect);
+    }
+
+    public boolean isLazyChannelCreation() {
+        return getConfigurationOrCreate().isLazyChannelCreation();
+    }
+
+    /**
+     * Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.
+     * @param lazyChannelCreation
+     */
+    public void setLazyChannelCreation(boolean lazyChannelCreation) {
+        getConfigurationOrCreate().setLazyChannelCreation(lazyChannelCreation);
+    }
+
+    public boolean isTransferExchange() {
+        return getConfigurationOrCreate().isTransferExchange();
+    }
+
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of just the body.
+     * The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers,
+     * exchange properties, exchange exception.
+     * This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+     * @param transferExchange
+     */
+    public void setTransferExchange(boolean transferExchange) {
+        getConfigurationOrCreate().setTransferExchange(transferExchange);
+    }
+
+    public boolean isDisconnectOnNoReply() {
+        return getConfigurationOrCreate().isDisconnectOnNoReply();
+    }
+
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+     * @param disconnectOnNoReply
+     */
+    public void setDisconnectOnNoReply(boolean disconnectOnNoReply) {
+        getConfigurationOrCreate().setDisconnectOnNoReply(disconnectOnNoReply);
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return getConfigurationOrCreate().getNoReplyLogLevel();
+    }
+
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+     * @param noReplyLogLevel
+     */
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        getConfigurationOrCreate().setNoReplyLogLevel(noReplyLogLevel);
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return getConfigurationOrCreate().getServerExceptionCaughtLogLevel();
+    }
+
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using this logging level.
+     * @param serverExceptionCaughtLogLevel
+     */
+    public void setServerExceptionCaughtLogLevel(LoggingLevel serverExceptionCaughtLogLevel) {
+        getConfigurationOrCreate().setServerExceptionCaughtLogLevel(serverExceptionCaughtLogLevel);
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return getConfigurationOrCreate().getServerClosedChannelExceptionCaughtLogLevel();
+    }
+
+    /**
+     * If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level.
+     * This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+     * @param serverClosedChannelExceptionCaughtLogLevel
+     */
+    public void setServerClosedChannelExceptionCaughtLogLevel(LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        getConfigurationOrCreate().setServerClosedChannelExceptionCaughtLogLevel(serverClosedChannelExceptionCaughtLogLevel);
+    }
+
+    public boolean isAllowDefaultCodec() {
+        return getConfigurationOrCreate().isAllowDefaultCodec();
+    }
+
+    /**
+     * The netty component installs a default codec if both, encoder/deocder is null and textline is false.
+     * Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+     * @param allowDefaultCodec
+     */
+    public void setAllowDefaultCodec(boolean allowDefaultCodec) {
+        getConfigurationOrCreate().setAllowDefaultCodec(allowDefaultCodec);
+    }
+
+    /**
+     * To use a custom ClientPipelineFactory
+     * @param clientPipelineFactory
+     */
+    public void setClientPipelineFactory(ClientPipelineFactory clientPipelineFactory) {
+        getConfigurationOrCreate().setClientPipelineFactory(clientPipelineFactory);
+    }
+
+    public ClientPipelineFactory getClientPipelineFactory() {
+        return getConfigurationOrCreate().getClientPipelineFactory();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java
index afcd6ad..b4cc383 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/springboot/NettyComponentConfiguration.java
@@ -16,7 +16,20 @@
  */
 package org.apache.camel.component.netty.springboot;
 
+import java.util.List;
+import java.util.Map;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.component.netty.ClientPipelineFactory;
 import org.apache.camel.component.netty.NettyConfiguration;
+import org.apache.camel.component.netty.NettyServerBootstrapFactory;
+import org.apache.camel.component.netty.ServerPipelineFactory;
+import org.apache.camel.component.netty.TextLineDelimiter;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.channel.group.ChannelGroup;
+import org.jboss.netty.channel.socket.nio.BossPool;
+import org.jboss.netty.channel.socket.nio.WorkerPool;
+import org.jboss.netty.handler.ssl.SslHandler;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -29,6 +42,7 @@ public class NettyComponentConfiguration {
 
     /**
      * To use the NettyConfiguration as configuration when creating endpoints.
+     * Properties of the shared configuration can also be set individually.
      */
     private NettyConfiguration configuration;
     /**
@@ -36,6 +50,337 @@ public class NettyComponentConfiguration {
      * value is 16.
      */
     private Integer maximumPoolSize;
+    /**
+     * Whether to use ordered thread pool to ensure events are processed orderly
+     * on the same channel. See details at the netty javadoc of
+     * org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor
+     * for more details.
+     */
+    private Boolean orderedThreadPoolExecutor = false;
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients or idle awaiting checkout) at a given time. Use a
+     * negative value for no limit.
+     */
+    private Integer producerPoolMaxActive;
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before
+     * the evictor thread (if active) spawns new objects.
+     */
+    private Integer producerPoolMinIdle;
+    /**
+     * Sets the cap on the number of idle instances in the pool.
+     */
+    private Integer producerPoolMaxIdle;
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle
+     * in the pool before it is eligible for eviction by the idle object
+     * evictor.
+     */
+    private long producerPoolMinEvictableIdle;
+    /**
+     * Whether producer pool is enabled or not. Important: Do not turn this off
+     * as the pooling is needed for handling concurrency and reliable
+     * request/reply.
+     */
+    private Boolean producerPoolEnabled = false;
+    /**
+     * This option supports connection less udp sending which is a real fire and
+     * forget. A connected udp send receive the PortUnreachableException if no
+     * one is listen on the receiving port.
+     */
+    private Boolean udpConnectionlessSending = false;
+    /**
+     * If the clientMode is true netty consumer will connect the address as a
+     * TCP client.
+     */
+    private Boolean clientMode = false;
+    /**
+     * If the useChannelBuffer is true netty producer will turn the message body
+     * into ChannelBuffer before sending it out.
+     */
+    private Boolean useChannelBuffer = false;
+    /**
+     * The maximum total size of the queued events per channel when using
+     * orderedThreadPoolExecutor. Specify 0 to disable.
+     */
+    private long maxChannelMemorySize;
+    /**
+     * The maximum total size of the queued events for this pool when using
+     * orderedThreadPoolExecutor. Specify 0 to disable.
+     */
+    private long maxTotalMemorySize;
+    /**
+     * The protocol to use which can be tcp or udp.
+     */
+    private String protocol;
+    /**
+     * The hostname. For the consumer the hostname is localhost or 0.0.0.0 For
+     * the producer the hostname is the remote host to connect to
+     */
+    private String host;
+    /**
+     * The host port number
+     */
+    private Integer port;
+    /**
+     * Setting to choose Multicast over UDP
+     */
+    private Boolean broadcast = false;
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size
+     * is bytes.
+     */
+    private long sendBufferSize;
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is
+     * bytes.
+     */
+    private long receiveBufferSize;
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation
+     * and this mail thread.
+     */
+    private Integer receiveBufferSizePredictor;
+    /**
+     * When netty works on nio mode it uses default workerCount parameter from
+     * Netty which is cpu_core_threads2. User can use this operation to override
+     * the default workerCount from Netty
+     */
+    private Integer workerCount;
+    /**
+     * When netty works on nio mode it uses default bossCount parameter from
+     * Netty which is 1. User can use this operation to override the default
+     * bossCount from Netty
+     */
+    private Integer bossCount;
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     */
+    private Boolean keepAlive = false;
+    /**
+     * Setting to improve TCP protocol performance
+     */
+    private Boolean tcpNoDelay = false;
+    /**
+     * Setting to facilitate socket multiplexing
+     */
+    private Boolean reuseAddress = false;
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     */
+    private long connectTimeout;
+    /**
+     * Allows to configure a backlog for netty consumer (server). Note the
+     * backlog is just a best effort depending on the OS. Setting this option to
+     * a value such as 200 500 or 1000 tells the TCP stack how long the accept
+     * queue can be If this option is not configured then the backlog depends on
+     * OS setting.
+     */
+    private Integer backlog;
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     */
+    private Boolean ssl = false;
+    /**
+     * When enabled and in SSL mode then the Netty consumer will enrich the
+     * Camel Message with headers having information about the client
+     * certificate such as subject name issuer name serial number and the valid
+     * date range.
+     */
+    private Boolean sslClientCertHeaders = false;
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     */
+    private SslHandler sslHandler;
+    /**
+     * To configure security using SSLContextParameters
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     */
+    private Boolean needClientAuth = false;
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String keyStoreResource;
+    /**
+     * Server side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String trustStoreResource;
+    /**
+     * Keystore format to be used for payload encryption. Defaults to JKS if not
+     * set
+     */
+    private String keyStoreFormat;
+    /**
+     * Security provider to be used for payload encryption. Defaults to SunX509
+     * if not set.
+     */
+    private String securityProvider;
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using
+     * SSH
+     */
+    private String passphrase;
+    /**
+     * To use a custom ServerPipelineFactory
+     */
+    private ServerPipelineFactory serverPipelineFactory;
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote
+     * server. By default no timeout is in use. The value is in milli seconds so
+     * eg 30000 is 30 seconds. The requestTimeout is using Netty's
+     * ReadTimeoutHandler to trigger the timeout.
+     */
+    private long requestTimeout;
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     */
+    private NettyServerBootstrapFactory nettyServerBootstrapFactory;
+    /**
+     * Setting to set endpoint as one-way or request-response
+     */
+    private Boolean sync = false;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Allows to configure additional netty options using option. as prefix. For
+     * example option.child.keepAlive=false to set the netty option
+     * child.keepAlive=false. See the Netty documentation for possible options
+     * that can be used.
+     */
+    private Map<String, Object> options;
+    /**
+     * The max line length to use for the textline codec.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss
+     * thread pool. For example to share a thread pool with multiple consumers.
+     * By default each consumer has their own boss pool with 1 core thread.
+     */
+    private BossPool bossPool;
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and
+     * NULL.
+     */
+    private TextLineDelimiter delimiter;
+    /**
+     * Whether or not to auto append missing end delimiter when sending using
+     * the textline codec.
+     */
+    private Boolean autoAppendDelimiter = false;
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the
+     * worker thread pool. For example to share a thread pool with multiple
+     * consumers. By default each consumer has their own worker pool with 2 x
+     * cpu count core threads.
+     */
+    private WorkerPool workerPool;
+    /**
+     * To use a explicit ChannelGroup.
+     */
+    private ChannelGroup channelGroup;
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not
+     * provided Camel will use the JVM default Charset.
+     */
+    private String encoding;
+    /**
+     * When using UDP then this option can be used to specify a network
+     * interface by its name such as eth0 to join a multicast group.
+     */
+    private String networkInterface;
+    /**
+     * A list of decoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> decoders;
+    /**
+     * Which protocols to enable when using SSL
+     */
+    private String enabledProtocols;
+    /**
+     * A list of encoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> encoders;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of outbound payloads. Must override
+     * org.jboss.netty.channel.ChannelDownStreamHandler.
+     */
+    private ChannelHandler encoder;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of inbound payloads. Must override
+     * org.jboss.netty.channel.ChannelUpStreamHandler.
+     */
+    private ChannelHandler decoder;
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * Channels can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazyChannelCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using
+     * this logging level.
+     */
+    private LoggingLevel serverExceptionCaughtLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an
+     * java.nio.channels.ClosedChannelException then its logged using this
+     * logging level. This is used to avoid logging the closed channel
+     * exceptions as clients can disconnect abruptly and then cause a flood of
+     * closed exceptions in the Netty server.
+     */
+    private LoggingLevel serverClosedChannelExceptionCaughtLogLevel;
+    /**
+     * The netty component installs a default codec if both encoder/deocder is
+     * null and textline is false. Setting allowDefaultCodec to false prevents
+     * the netty component from installing a default codec as the first element
+     * in the filter chain.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * To use a custom ClientPipelineFactory
+     */
+    private ClientPipelineFactory clientPipelineFactory;
 
     public NettyConfiguration getConfiguration() {
         return configuration;
@@ -52,4 +397,515 @@ public class NettyComponentConfiguration {
     public void setMaximumPoolSize(Integer maximumPoolSize) {
         this.maximumPoolSize = maximumPoolSize;
     }
+
+    public Boolean getOrderedThreadPoolExecutor() {
+        return orderedThreadPoolExecutor;
+    }
+
+    public void setOrderedThreadPoolExecutor(Boolean orderedThreadPoolExecutor) {
+        this.orderedThreadPoolExecutor = orderedThreadPoolExecutor;
+    }
+
+    public Integer getProducerPoolMaxActive() {
+        return producerPoolMaxActive;
+    }
+
+    public void setProducerPoolMaxActive(Integer producerPoolMaxActive) {
+        this.producerPoolMaxActive = producerPoolMaxActive;
+    }
+
+    public Integer getProducerPoolMinIdle() {
+        return producerPoolMinIdle;
+    }
+
+    public void setProducerPoolMinIdle(Integer producerPoolMinIdle) {
+        this.producerPoolMinIdle = producerPoolMinIdle;
+    }
+
+    public Integer getProducerPoolMaxIdle() {
+        return producerPoolMaxIdle;
+    }
+
+    public void setProducerPoolMaxIdle(Integer producerPoolMaxIdle) {
+        this.producerPoolMaxIdle = producerPoolMaxIdle;
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return producerPoolMinEvictableIdle;
+    }
+
+    public void setProducerPoolMinEvictableIdle(
+            long producerPoolMinEvictableIdle) {
+        this.producerPoolMinEvictableIdle = producerPoolMinEvictableIdle;
+    }
+
+    public Boolean getProducerPoolEnabled() {
+        return producerPoolEnabled;
+    }
+
+    public void setProducerPoolEnabled(Boolean producerPoolEnabled) {
+        this.producerPoolEnabled = producerPoolEnabled;
+    }
+
+    public Boolean getUdpConnectionlessSending() {
+        return udpConnectionlessSending;
+    }
+
+    public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) {
+        this.udpConnectionlessSending = udpConnectionlessSending;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
+
+    public Boolean getUseChannelBuffer() {
+        return useChannelBuffer;
+    }
+
+    public void setUseChannelBuffer(Boolean useChannelBuffer) {
+        this.useChannelBuffer = useChannelBuffer;
+    }
+
+    public long getMaxChannelMemorySize() {
+        return maxChannelMemorySize;
+    }
+
+    public void setMaxChannelMemorySize(long maxChannelMemorySize) {
+        this.maxChannelMemorySize = maxChannelMemorySize;
+    }
+
+    public long getMaxTotalMemorySize() {
+        return maxTotalMemorySize;
+    }
+
+    public void setMaxTotalMemorySize(long maxTotalMemorySize) {
+        this.maxTotalMemorySize = maxTotalMemorySize;
+    }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getBroadcast() {
+        return broadcast;
+    }
+
+    public void setBroadcast(Boolean broadcast) {
+        this.broadcast = broadcast;
+    }
+
+    public long getSendBufferSize() {
+        return sendBufferSize;
+    }
+
+    public void setSendBufferSize(long sendBufferSize) {
+        this.sendBufferSize = sendBufferSize;
+    }
+
+    public long getReceiveBufferSize() {
+        return receiveBufferSize;
+    }
+
+    public void setReceiveBufferSize(long receiveBufferSize) {
+        this.receiveBufferSize = receiveBufferSize;
+    }
+
+    public Integer getReceiveBufferSizePredictor() {
+        return receiveBufferSizePredictor;
+    }
+
+    public void setReceiveBufferSizePredictor(Integer receiveBufferSizePredictor) {
+        this.receiveBufferSizePredictor = receiveBufferSizePredictor;
+    }
+
+    public Integer getWorkerCount() {
+        return workerCount;
+    }
+
+    public void setWorkerCount(Integer workerCount) {
+        this.workerCount = workerCount;
+    }
+
+    public Integer getBossCount() {
+        return bossCount;
+    }
+
+    public void setBossCount(Integer bossCount) {
+        this.bossCount = bossCount;
+    }
+
+    public Boolean getKeepAlive() {
+        return keepAlive;
+    }
+
+    public void setKeepAlive(Boolean keepAlive) {
+        this.keepAlive = keepAlive;
+    }
+
+    public Boolean getTcpNoDelay() {
+        return tcpNoDelay;
+    }
+
+    public void setTcpNoDelay(Boolean tcpNoDelay) {
+        this.tcpNoDelay = tcpNoDelay;
+    }
+
+    public Boolean getReuseAddress() {
+        return reuseAddress;
+    }
+
+    public void setReuseAddress(Boolean reuseAddress) {
+        this.reuseAddress = reuseAddress;
+    }
+
+    public long getConnectTimeout() {
+        return connectTimeout;
+    }
+
+    public void setConnectTimeout(long connectTimeout) {
+        this.connectTimeout = connectTimeout;
+    }
+
+    public Integer getBacklog() {
+        return backlog;
+    }
+
+    public void setBacklog(Integer backlog) {
+        this.backlog = backlog;
+    }
+
+    public Boolean getSsl() {
+        return ssl;
+    }
+
+    public void setSsl(Boolean ssl) {
+        this.ssl = ssl;
+    }
+
+    public Boolean getSslClientCertHeaders() {
+        return sslClientCertHeaders;
+    }
+
+    public void setSslClientCertHeaders(Boolean sslClientCertHeaders) {
+        this.sslClientCertHeaders = sslClientCertHeaders;
+    }
+
+    public SslHandler getSslHandler() {
+        return sslHandler;
+    }
+
+    public void setSslHandler(SslHandler sslHandler) {
+        this.sslHandler = sslHandler;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Boolean getNeedClientAuth() {
+        return needClientAuth;
+    }
+
+    public void setNeedClientAuth(Boolean needClientAuth) {
+        this.needClientAuth = needClientAuth;
+    }
+
+    public String getKeyStoreResource() {
+        return keyStoreResource;
+    }
+
+    public void setKeyStoreResource(String keyStoreResource) {
+        this.keyStoreResource = keyStoreResource;
+    }
+
+    public String getTrustStoreResource() {
+        return trustStoreResource;
+    }
+
+    public void setTrustStoreResource(String trustStoreResource) {
+        this.trustStoreResource = trustStoreResource;
+    }
+
+    public String getKeyStoreFormat() {
+        return keyStoreFormat;
+    }
+
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        this.keyStoreFormat = keyStoreFormat;
+    }
+
+    public String getSecurityProvider() {
+        return securityProvider;
+    }
+
+    public void setSecurityProvider(String securityProvider) {
+        this.securityProvider = securityProvider;
+    }
+
+    public String getPassphrase() {
+        return passphrase;
+    }
+
+    public void setPassphrase(String passphrase) {
+        this.passphrase = passphrase;
+    }
+
+    public ServerPipelineFactory getServerPipelineFactory() {
+        return serverPipelineFactory;
+    }
+
+    public void setServerPipelineFactory(
+            ServerPipelineFactory serverPipelineFactory) {
+        this.serverPipelineFactory = serverPipelineFactory;
+    }
+
+    public long getRequestTimeout() {
+        return requestTimeout;
+    }
+
+    public void setRequestTimeout(long requestTimeout) {
+        this.requestTimeout = requestTimeout;
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return nettyServerBootstrapFactory;
+    }
+
+    public void setNettyServerBootstrapFactory(
+            NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        this.nettyServerBootstrapFactory = nettyServerBootstrapFactory;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public Map<String, Object> getOptions() {
+        return options;
+    }
+
+    public void setOptions(Map<String, Object> options) {
+        this.options = options;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public BossPool getBossPool() {
+        return bossPool;
+    }
+
+    public void setBossPool(BossPool bossPool) {
+        this.bossPool = bossPool;
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return delimiter;
+    }
+
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        this.delimiter = delimiter;
+    }
+
+    public Boolean getAutoAppendDelimiter() {
+        return autoAppendDelimiter;
+    }
+
+    public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) {
+        this.autoAppendDelimiter = autoAppendDelimiter;
+    }
+
+    public WorkerPool getWorkerPool() {
+        return workerPool;
+    }
+
+    public void setWorkerPool(WorkerPool workerPool) {
+        this.workerPool = workerPool;
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return channelGroup;
+    }
+
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        this.channelGroup = channelGroup;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public String getNetworkInterface() {
+        return networkInterface;
+    }
+
+    public void setNetworkInterface(String networkInterface) {
+        this.networkInterface = networkInterface;
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return decoders;
+    }
+
+    public void setDecoders(List<ChannelHandler> decoders) {
+        this.decoders = decoders;
+    }
+
+    public String getEnabledProtocols() {
+        return enabledProtocols;
+    }
+
+    public void setEnabledProtocols(String enabledProtocols) {
+        this.enabledProtocols = enabledProtocols;
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return encoders;
+    }
+
+    public void setEncoders(List<ChannelHandler> encoders) {
+        this.encoders = encoders;
+    }
+
+    public ChannelHandler getEncoder() {
+        return encoder;
+    }
+
+    public void setEncoder(ChannelHandler encoder) {
+        this.encoder = encoder;
+    }
+
+    public ChannelHandler getDecoder() {
+        return decoder;
+    }
+
+    public void setDecoder(ChannelHandler decoder) {
+        this.decoder = decoder;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getLazyChannelCreation() {
+        return lazyChannelCreation;
+    }
+
+    public void setLazyChannelCreation(Boolean lazyChannelCreation) {
+        this.lazyChannelCreation = lazyChannelCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return serverExceptionCaughtLogLevel;
+    }
+
+    public void setServerExceptionCaughtLogLevel(
+            LoggingLevel serverExceptionCaughtLogLevel) {
+        this.serverExceptionCaughtLogLevel = serverExceptionCaughtLogLevel;
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public void setServerClosedChannelExceptionCaughtLogLevel(
+            LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        this.serverClosedChannelExceptionCaughtLogLevel = serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public ClientPipelineFactory getClientPipelineFactory() {
+        return clientPipelineFactory;
+    }
+
+    public void setClientPipelineFactory(
+            ClientPipelineFactory clientPipelineFactory) {
+        this.clientPipelineFactory = clientPipelineFactory;
+    }
 }
\ No newline at end of file


[03/11] camel git commit: CAMEL-10197: Source check

Posted by da...@apache.org.
CAMEL-10197: Source check


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

Branch: refs/heads/master
Commit: 519765f8dcae1a53a5c9ee237a2f964e46960d84
Parents: bdab2fc
Author: Nicola Ferraro <ni...@gmail.com>
Authored: Mon Aug 1 23:19:15 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Aug 2 08:13:50 2016 +0200

----------------------------------------------------------------------
 components/camel-cache/src/main/docs/cache.adoc |   4 +-
 .../camel/component/cache/CacheComponent.java   |   8 +-
 .../springboot/CacheComponentConfiguration.java |   3 +-
 .../component/ganglia/GangliaComponent.java     |   8 +-
 .../component/ganglia/GangliaConfiguration.java |   1 +
 .../src/main/docs/netty-http.adoc               |  69 +-
 .../NettyHttpComponentConfiguration.java        | 856 ++++++++++++++++++
 .../src/main/docs/netty4-http.adoc              |  72 +-
 .../NettyHttpComponentConfiguration.java        | 897 +++++++++++++++++++
 .../undertow/DefaultUndertowHttpBinding.java    |  26 +-
 .../component/undertow/UndertowComponent.java   |  17 +-
 11 files changed, 1926 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-cache/src/main/docs/cache.adoc
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/docs/cache.adoc b/components/camel-cache/src/main/docs/cache.adoc
index 663fda2..71ab13c 100644
--- a/components/camel-cache/src/main/docs/cache.adoc
+++ b/components/camel-cache/src/main/docs/cache.adoc
@@ -47,6 +47,7 @@ Options
 
 
 
+
 // component options: START
 The EHCache component supports 15 options which are listed below.
 
@@ -57,7 +58,7 @@ 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
+| configuration | CacheConfiguration | Sets the Cache configuration. Properties of the shared configuration can also be set individually.
 | 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.
@@ -78,6 +79,7 @@ The EHCache component supports 15 options which are listed below.
 
 
 
+
 // endpoint options: START
 The EHCache component supports 20 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
index 33ad564..d9086d8 100755
--- a/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/component/cache/CacheComponent.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.cache;
 import java.io.InputStream;
 import java.util.Map;
 
+import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
@@ -26,13 +28,11 @@ import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.ResourceHelper;
 import org.apache.camel.util.ServiceHelper;
 
-import net.sf.ehcache.store.MemoryStoreEvictionPolicy;
-
 public class CacheComponent extends UriEndpointComponent {
     private CacheConfiguration configuration;
     private CacheManagerFactory cacheManagerFactory;
     private String configurationFile;
-    
+
     public CacheComponent() {
         super(CacheEndpoint.class);
         configuration = new CacheConfiguration();
@@ -44,7 +44,7 @@ public class CacheComponent extends UriEndpointComponent {
     }
 
     @Override
-    @SuppressWarnings({ "unchecked", "rawtypes" })
+    @SuppressWarnings({"unchecked", "rawtypes"})
     protected Endpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
         // must use copy as each endpoint can have different options
         ObjectHelper.notNull(configuration, "configuration");

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java b/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
index 812fc00..994c43f 100644
--- a/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/component/cache/springboot/CacheComponentConfiguration.java
@@ -38,7 +38,8 @@ public class CacheComponentConfiguration {
      */
     private CacheManagerFactory cacheManagerFactory;
     /**
-     * Sets the Cache configuration
+     * Sets the Cache configuration. Properties of the shared configuration can
+     * also be set individually.
      */
     private CacheConfiguration configuration;
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
index f28010c..59bb626 100644
--- a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
+++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaComponent.java
@@ -19,14 +19,14 @@ package org.apache.camel.component.ganglia;
 import java.net.URI;
 import java.util.Map;
 
-import org.apache.camel.Endpoint;
-import org.apache.camel.impl.UriEndpointComponent;
-import org.apache.camel.util.ObjectHelper;
-
 import info.ganglia.gmetric4j.gmetric.GMetric;
 import info.ganglia.gmetric4j.gmetric.GMetricSlope;
 import info.ganglia.gmetric4j.gmetric.GMetricType;
 
+import org.apache.camel.Endpoint;
+import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.util.ObjectHelper;
+
 public class GangliaComponent extends UriEndpointComponent {
 
     private GangliaConfiguration configuration;

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java
index 6da1412..3b0b2e5 100644
--- a/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java
+++ b/components/camel-ganglia/src/main/java/org/apache/camel/component/ganglia/GangliaConfiguration.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import info.ganglia.gmetric4j.gmetric.GMetric;
 import info.ganglia.gmetric4j.gmetric.GMetricSlope;
 import info.ganglia.gmetric4j.gmetric.GMetricType;
+
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriParams;

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-netty-http/src/main/docs/netty-http.adoc
----------------------------------------------------------------------
diff --git a/components/camel-netty-http/src/main/docs/netty-http.adoc b/components/camel-netty-http/src/main/docs/netty-http.adoc
index b02efbd..c8191c4 100644
--- a/components/camel-netty-http/src/main/docs/netty-http.adoc
+++ b/components/camel-netty-http/src/main/docs/netty-http.adoc
@@ -79,8 +79,9 @@ options related to UDP transport.
 
 
 
+
 // component options: START
-The Netty HTTP component supports 5 options which are listed below.
+The Netty HTTP component supports 68 options which are listed below.
 
 
 
@@ -91,8 +92,71 @@ The Netty HTTP component supports 5 options which are listed below.
 | nettyHttpBinding | NettyHttpBinding | To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API.
 | headerFilterStrategy | HeaderFilterStrategy | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.
 | securityConfiguration | NettyHttpSecurityConfiguration | Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources.
-| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints.
+| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
 | maximumPoolSize | int | The core pool size for the ordered thread pool if its in use. The default value is 16.
+| orderedThreadPoolExecutor | boolean | Whether to use ordered thread pool to ensure events are processed orderly on the same channel. See details at the netty javadoc of org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor for more details.
+| producerPoolMaxActive | int | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients or idle awaiting checkout) at a given time. Use a negative value for no limit.
+| producerPoolMinIdle | int | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+| producerPoolMaxIdle | int | Sets the cap on the number of idle instances in the pool.
+| producerPoolMinEvictableIdle | long | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+| producerPoolEnabled | boolean | Whether producer pool is enabled or not. Important: Do not turn this off as the pooling is needed for handling concurrency and reliable request/reply.
+| udpConnectionlessSending | boolean | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+| clientMode | boolean | If the clientMode is true netty consumer will connect the address as a TCP client.
+| useChannelBuffer | boolean | If the useChannelBuffer is true netty producer will turn the message body into ChannelBuffer before sending it out.
+| maxChannelMemorySize | long | The maximum total size of the queued events per channel when using orderedThreadPoolExecutor. Specify 0 to disable.
+| maxTotalMemorySize | long | The maximum total size of the queued events for this pool when using orderedThreadPoolExecutor. Specify 0 to disable.
+| protocol | String | The protocol to use which can be tcp or udp.
+| host | String | The hostname. For the consumer the hostname is localhost or 0.0.0.0 For the producer the hostname is the remote host to connect to
+| port | int | The host port number
+| broadcast | boolean | Setting to choose Multicast over UDP
+| sendBufferSize | long | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+| receiveBufferSize | long | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+| receiveBufferSizePredictor | int | Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+| workerCount | int | When netty works on nio mode it uses default workerCount parameter from Netty which is cpu_core_threads2. User can use this operation to override the default workerCount from Netty
+| bossCount | int | When netty works on nio mode it uses default bossCount parameter from Netty which is 1. User can use this operation to override the default bossCount from Netty
+| keepAlive | boolean | Setting to ensure socket is not closed due to inactivity
+| tcpNoDelay | boolean | Setting to improve TCP protocol performance
+| reuseAddress | boolean | Setting to facilitate socket multiplexing
+| connectTimeout | long | Time to wait for a socket connection to be available. Value is in millis.
+| backlog | int | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200 500 or 1000 tells the TCP stack how long the accept queue can be If this option is not configured then the backlog depends on OS setting.
+| ssl | boolean | Setting to specify whether SSL encryption is applied to this endpoint
+| sslClientCertHeaders | boolean | When enabled and in SSL mode then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name issuer name serial number and the valid date range.
+| sslHandler | SslHandler | Reference to a class that could be used to return an SSL Handler
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
+| needClientAuth | boolean | Configures whether the server needs client authentication when using SSL.
+| keyStoreResource | String | Client side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| trustStoreResource | String | Server side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| keyStoreFormat | String | Keystore format to be used for payload encryption. Defaults to JKS if not set
+| securityProvider | String | Security provider to be used for payload encryption. Defaults to SunX509 if not set.
+| passphrase | String | Password setting to use in order to encrypt/decrypt payloads sent using SSH
+| serverPipelineFactory | ServerPipelineFactory | To use a custom ServerPipelineFactory
+| requestTimeout | long | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+| nettyServerBootstrapFactory | NettyServerBootstrapFactory | To use a custom NettyServerBootstrapFactory
+| sync | boolean | Setting to set endpoint as one-way or request-response
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| options | Map | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.
+| decoderMaxLineLength | int | The max line length to use for the textline codec.
+| bossPool | BossPool | To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+| delimiter | TextLineDelimiter | The delimiter to use for the textline codec. Possible values are LINE and NULL.
+| autoAppendDelimiter | boolean | Whether or not to auto append missing end delimiter when sending using the textline codec.
+| workerPool | WorkerPool | To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the worker thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own worker pool with 2 x cpu count core threads.
+| channelGroup | ChannelGroup | To use a explicit ChannelGroup.
+| encoding | String | The encoding (a charset name) to use for the textline codec. If not provided Camel will use the JVM default Charset.
+| networkInterface | String | When using UDP then this option can be used to specify a network interface by its name such as eth0 to join a multicast group.
+| decoders | List | A list of decoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| enabledProtocols | String | Which protocols to enable when using SSL
+| encoders | List | A list of encoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| encoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads. Must override org.jboss.netty.channel.ChannelDownStreamHandler.
+| decoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads. Must override org.jboss.netty.channel.ChannelUpStreamHandler.
+| disconnect | boolean | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+| lazyChannelCreation | boolean | Channels can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+| serverExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an exception then its logged using this logging level.
+| serverClosedChannelExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+| allowDefaultCodec | boolean | The netty component installs a default codec if both encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+| clientPipelineFactory | ClientPipelineFactory | To use a custom ClientPipelineFactory
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -102,6 +166,7 @@ The Netty HTTP component supports 5 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Netty HTTP component supports 82 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java
index 2fa39a16..2ecdef6 100644
--- a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java
+++ b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/springboot/NettyHttpComponentConfiguration.java
@@ -16,10 +16,23 @@
  */
 package org.apache.camel.component.netty.http.springboot;
 
+import java.util.List;
+import java.util.Map;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.component.netty.ClientPipelineFactory;
 import org.apache.camel.component.netty.NettyConfiguration;
+import org.apache.camel.component.netty.NettyServerBootstrapFactory;
+import org.apache.camel.component.netty.ServerPipelineFactory;
+import org.apache.camel.component.netty.TextLineDelimiter;
 import org.apache.camel.component.netty.http.NettyHttpBinding;
 import org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.jboss.netty.channel.ChannelHandler;
+import org.jboss.netty.channel.group.ChannelGroup;
+import org.jboss.netty.channel.socket.nio.BossPool;
+import org.jboss.netty.channel.socket.nio.WorkerPool;
+import org.jboss.netty.handler.ssl.SslHandler;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -48,6 +61,7 @@ public class NettyHttpComponentConfiguration {
     private NettyHttpSecurityConfiguration securityConfiguration;
     /**
      * To use the NettyConfiguration as configuration when creating endpoints.
+     * Properties of the shared configuration can also be set individually.
      */
     private NettyConfiguration configuration;
     /**
@@ -55,6 +69,337 @@ public class NettyHttpComponentConfiguration {
      * value is 16.
      */
     private Integer maximumPoolSize;
+    /**
+     * Whether to use ordered thread pool to ensure events are processed orderly
+     * on the same channel. See details at the netty javadoc of
+     * org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor
+     * for more details.
+     */
+    private Boolean orderedThreadPoolExecutor = false;
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients or idle awaiting checkout) at a given time. Use a
+     * negative value for no limit.
+     */
+    private Integer producerPoolMaxActive;
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before
+     * the evictor thread (if active) spawns new objects.
+     */
+    private Integer producerPoolMinIdle;
+    /**
+     * Sets the cap on the number of idle instances in the pool.
+     */
+    private Integer producerPoolMaxIdle;
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle
+     * in the pool before it is eligible for eviction by the idle object
+     * evictor.
+     */
+    private long producerPoolMinEvictableIdle;
+    /**
+     * Whether producer pool is enabled or not. Important: Do not turn this off
+     * as the pooling is needed for handling concurrency and reliable
+     * request/reply.
+     */
+    private Boolean producerPoolEnabled = false;
+    /**
+     * This option supports connection less udp sending which is a real fire and
+     * forget. A connected udp send receive the PortUnreachableException if no
+     * one is listen on the receiving port.
+     */
+    private Boolean udpConnectionlessSending = false;
+    /**
+     * If the clientMode is true netty consumer will connect the address as a
+     * TCP client.
+     */
+    private Boolean clientMode = false;
+    /**
+     * If the useChannelBuffer is true netty producer will turn the message body
+     * into ChannelBuffer before sending it out.
+     */
+    private Boolean useChannelBuffer = false;
+    /**
+     * The maximum total size of the queued events per channel when using
+     * orderedThreadPoolExecutor. Specify 0 to disable.
+     */
+    private long maxChannelMemorySize;
+    /**
+     * The maximum total size of the queued events for this pool when using
+     * orderedThreadPoolExecutor. Specify 0 to disable.
+     */
+    private long maxTotalMemorySize;
+    /**
+     * The protocol to use which can be tcp or udp.
+     */
+    private String protocol;
+    /**
+     * The hostname. For the consumer the hostname is localhost or 0.0.0.0 For
+     * the producer the hostname is the remote host to connect to
+     */
+    private String host;
+    /**
+     * The host port number
+     */
+    private Integer port;
+    /**
+     * Setting to choose Multicast over UDP
+     */
+    private Boolean broadcast = false;
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size
+     * is bytes.
+     */
+    private long sendBufferSize;
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is
+     * bytes.
+     */
+    private long receiveBufferSize;
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation
+     * and this mail thread.
+     */
+    private Integer receiveBufferSizePredictor;
+    /**
+     * When netty works on nio mode it uses default workerCount parameter from
+     * Netty which is cpu_core_threads2. User can use this operation to override
+     * the default workerCount from Netty
+     */
+    private Integer workerCount;
+    /**
+     * When netty works on nio mode it uses default bossCount parameter from
+     * Netty which is 1. User can use this operation to override the default
+     * bossCount from Netty
+     */
+    private Integer bossCount;
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     */
+    private Boolean keepAlive = false;
+    /**
+     * Setting to improve TCP protocol performance
+     */
+    private Boolean tcpNoDelay = false;
+    /**
+     * Setting to facilitate socket multiplexing
+     */
+    private Boolean reuseAddress = false;
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     */
+    private long connectTimeout;
+    /**
+     * Allows to configure a backlog for netty consumer (server). Note the
+     * backlog is just a best effort depending on the OS. Setting this option to
+     * a value such as 200 500 or 1000 tells the TCP stack how long the accept
+     * queue can be If this option is not configured then the backlog depends on
+     * OS setting.
+     */
+    private Integer backlog;
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     */
+    private Boolean ssl = false;
+    /**
+     * When enabled and in SSL mode then the Netty consumer will enrich the
+     * Camel Message with headers having information about the client
+     * certificate such as subject name issuer name serial number and the valid
+     * date range.
+     */
+    private Boolean sslClientCertHeaders = false;
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     */
+    private SslHandler sslHandler;
+    /**
+     * To configure security using SSLContextParameters
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     */
+    private Boolean needClientAuth = false;
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String keyStoreResource;
+    /**
+     * Server side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String trustStoreResource;
+    /**
+     * Keystore format to be used for payload encryption. Defaults to JKS if not
+     * set
+     */
+    private String keyStoreFormat;
+    /**
+     * Security provider to be used for payload encryption. Defaults to SunX509
+     * if not set.
+     */
+    private String securityProvider;
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using
+     * SSH
+     */
+    private String passphrase;
+    /**
+     * To use a custom ServerPipelineFactory
+     */
+    private ServerPipelineFactory serverPipelineFactory;
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote
+     * server. By default no timeout is in use. The value is in milli seconds so
+     * eg 30000 is 30 seconds. The requestTimeout is using Netty's
+     * ReadTimeoutHandler to trigger the timeout.
+     */
+    private long requestTimeout;
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     */
+    private NettyServerBootstrapFactory nettyServerBootstrapFactory;
+    /**
+     * Setting to set endpoint as one-way or request-response
+     */
+    private Boolean sync = false;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Allows to configure additional netty options using option. as prefix. For
+     * example option.child.keepAlive=false to set the netty option
+     * child.keepAlive=false. See the Netty documentation for possible options
+     * that can be used.
+     */
+    private Map<String, Object> options;
+    /**
+     * The max line length to use for the textline codec.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.BossPool as the boss
+     * thread pool. For example to share a thread pool with multiple consumers.
+     * By default each consumer has their own boss pool with 1 core thread.
+     */
+    private BossPool bossPool;
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and
+     * NULL.
+     */
+    private TextLineDelimiter delimiter;
+    /**
+     * Whether or not to auto append missing end delimiter when sending using
+     * the textline codec.
+     */
+    private Boolean autoAppendDelimiter = false;
+    /**
+     * To use a explicit org.jboss.netty.channel.socket.nio.WorkerPool as the
+     * worker thread pool. For example to share a thread pool with multiple
+     * consumers. By default each consumer has their own worker pool with 2 x
+     * cpu count core threads.
+     */
+    private WorkerPool workerPool;
+    /**
+     * To use a explicit ChannelGroup.
+     */
+    private ChannelGroup channelGroup;
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not
+     * provided Camel will use the JVM default Charset.
+     */
+    private String encoding;
+    /**
+     * When using UDP then this option can be used to specify a network
+     * interface by its name such as eth0 to join a multicast group.
+     */
+    private String networkInterface;
+    /**
+     * A list of decoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> decoders;
+    /**
+     * Which protocols to enable when using SSL
+     */
+    private String enabledProtocols;
+    /**
+     * A list of encoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> encoders;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of outbound payloads. Must override
+     * org.jboss.netty.channel.ChannelDownStreamHandler.
+     */
+    private ChannelHandler encoder;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of inbound payloads. Must override
+     * org.jboss.netty.channel.ChannelUpStreamHandler.
+     */
+    private ChannelHandler decoder;
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * Channels can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazyChannelCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using
+     * this logging level.
+     */
+    private LoggingLevel serverExceptionCaughtLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an
+     * java.nio.channels.ClosedChannelException then its logged using this
+     * logging level. This is used to avoid logging the closed channel
+     * exceptions as clients can disconnect abruptly and then cause a flood of
+     * closed exceptions in the Netty server.
+     */
+    private LoggingLevel serverClosedChannelExceptionCaughtLogLevel;
+    /**
+     * The netty component installs a default codec if both encoder/deocder is
+     * null and textline is false. Setting allowDefaultCodec to false prevents
+     * the netty component from installing a default codec as the first element
+     * in the filter chain.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * To use a custom ClientPipelineFactory
+     */
+    private ClientPipelineFactory clientPipelineFactory;
 
     public NettyHttpBinding getNettyHttpBinding() {
         return nettyHttpBinding;
@@ -97,4 +442,515 @@ public class NettyHttpComponentConfiguration {
     public void setMaximumPoolSize(Integer maximumPoolSize) {
         this.maximumPoolSize = maximumPoolSize;
     }
+
+    public Boolean getOrderedThreadPoolExecutor() {
+        return orderedThreadPoolExecutor;
+    }
+
+    public void setOrderedThreadPoolExecutor(Boolean orderedThreadPoolExecutor) {
+        this.orderedThreadPoolExecutor = orderedThreadPoolExecutor;
+    }
+
+    public Integer getProducerPoolMaxActive() {
+        return producerPoolMaxActive;
+    }
+
+    public void setProducerPoolMaxActive(Integer producerPoolMaxActive) {
+        this.producerPoolMaxActive = producerPoolMaxActive;
+    }
+
+    public Integer getProducerPoolMinIdle() {
+        return producerPoolMinIdle;
+    }
+
+    public void setProducerPoolMinIdle(Integer producerPoolMinIdle) {
+        this.producerPoolMinIdle = producerPoolMinIdle;
+    }
+
+    public Integer getProducerPoolMaxIdle() {
+        return producerPoolMaxIdle;
+    }
+
+    public void setProducerPoolMaxIdle(Integer producerPoolMaxIdle) {
+        this.producerPoolMaxIdle = producerPoolMaxIdle;
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return producerPoolMinEvictableIdle;
+    }
+
+    public void setProducerPoolMinEvictableIdle(
+            long producerPoolMinEvictableIdle) {
+        this.producerPoolMinEvictableIdle = producerPoolMinEvictableIdle;
+    }
+
+    public Boolean getProducerPoolEnabled() {
+        return producerPoolEnabled;
+    }
+
+    public void setProducerPoolEnabled(Boolean producerPoolEnabled) {
+        this.producerPoolEnabled = producerPoolEnabled;
+    }
+
+    public Boolean getUdpConnectionlessSending() {
+        return udpConnectionlessSending;
+    }
+
+    public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) {
+        this.udpConnectionlessSending = udpConnectionlessSending;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
+
+    public Boolean getUseChannelBuffer() {
+        return useChannelBuffer;
+    }
+
+    public void setUseChannelBuffer(Boolean useChannelBuffer) {
+        this.useChannelBuffer = useChannelBuffer;
+    }
+
+    public long getMaxChannelMemorySize() {
+        return maxChannelMemorySize;
+    }
+
+    public void setMaxChannelMemorySize(long maxChannelMemorySize) {
+        this.maxChannelMemorySize = maxChannelMemorySize;
+    }
+
+    public long getMaxTotalMemorySize() {
+        return maxTotalMemorySize;
+    }
+
+    public void setMaxTotalMemorySize(long maxTotalMemorySize) {
+        this.maxTotalMemorySize = maxTotalMemorySize;
+    }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getBroadcast() {
+        return broadcast;
+    }
+
+    public void setBroadcast(Boolean broadcast) {
+        this.broadcast = broadcast;
+    }
+
+    public long getSendBufferSize() {
+        return sendBufferSize;
+    }
+
+    public void setSendBufferSize(long sendBufferSize) {
+        this.sendBufferSize = sendBufferSize;
+    }
+
+    public long getReceiveBufferSize() {
+        return receiveBufferSize;
+    }
+
+    public void setReceiveBufferSize(long receiveBufferSize) {
+        this.receiveBufferSize = receiveBufferSize;
+    }
+
+    public Integer getReceiveBufferSizePredictor() {
+        return receiveBufferSizePredictor;
+    }
+
+    public void setReceiveBufferSizePredictor(Integer receiveBufferSizePredictor) {
+        this.receiveBufferSizePredictor = receiveBufferSizePredictor;
+    }
+
+    public Integer getWorkerCount() {
+        return workerCount;
+    }
+
+    public void setWorkerCount(Integer workerCount) {
+        this.workerCount = workerCount;
+    }
+
+    public Integer getBossCount() {
+        return bossCount;
+    }
+
+    public void setBossCount(Integer bossCount) {
+        this.bossCount = bossCount;
+    }
+
+    public Boolean getKeepAlive() {
+        return keepAlive;
+    }
+
+    public void setKeepAlive(Boolean keepAlive) {
+        this.keepAlive = keepAlive;
+    }
+
+    public Boolean getTcpNoDelay() {
+        return tcpNoDelay;
+    }
+
+    public void setTcpNoDelay(Boolean tcpNoDelay) {
+        this.tcpNoDelay = tcpNoDelay;
+    }
+
+    public Boolean getReuseAddress() {
+        return reuseAddress;
+    }
+
+    public void setReuseAddress(Boolean reuseAddress) {
+        this.reuseAddress = reuseAddress;
+    }
+
+    public long getConnectTimeout() {
+        return connectTimeout;
+    }
+
+    public void setConnectTimeout(long connectTimeout) {
+        this.connectTimeout = connectTimeout;
+    }
+
+    public Integer getBacklog() {
+        return backlog;
+    }
+
+    public void setBacklog(Integer backlog) {
+        this.backlog = backlog;
+    }
+
+    public Boolean getSsl() {
+        return ssl;
+    }
+
+    public void setSsl(Boolean ssl) {
+        this.ssl = ssl;
+    }
+
+    public Boolean getSslClientCertHeaders() {
+        return sslClientCertHeaders;
+    }
+
+    public void setSslClientCertHeaders(Boolean sslClientCertHeaders) {
+        this.sslClientCertHeaders = sslClientCertHeaders;
+    }
+
+    public SslHandler getSslHandler() {
+        return sslHandler;
+    }
+
+    public void setSslHandler(SslHandler sslHandler) {
+        this.sslHandler = sslHandler;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Boolean getNeedClientAuth() {
+        return needClientAuth;
+    }
+
+    public void setNeedClientAuth(Boolean needClientAuth) {
+        this.needClientAuth = needClientAuth;
+    }
+
+    public String getKeyStoreResource() {
+        return keyStoreResource;
+    }
+
+    public void setKeyStoreResource(String keyStoreResource) {
+        this.keyStoreResource = keyStoreResource;
+    }
+
+    public String getTrustStoreResource() {
+        return trustStoreResource;
+    }
+
+    public void setTrustStoreResource(String trustStoreResource) {
+        this.trustStoreResource = trustStoreResource;
+    }
+
+    public String getKeyStoreFormat() {
+        return keyStoreFormat;
+    }
+
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        this.keyStoreFormat = keyStoreFormat;
+    }
+
+    public String getSecurityProvider() {
+        return securityProvider;
+    }
+
+    public void setSecurityProvider(String securityProvider) {
+        this.securityProvider = securityProvider;
+    }
+
+    public String getPassphrase() {
+        return passphrase;
+    }
+
+    public void setPassphrase(String passphrase) {
+        this.passphrase = passphrase;
+    }
+
+    public ServerPipelineFactory getServerPipelineFactory() {
+        return serverPipelineFactory;
+    }
+
+    public void setServerPipelineFactory(
+            ServerPipelineFactory serverPipelineFactory) {
+        this.serverPipelineFactory = serverPipelineFactory;
+    }
+
+    public long getRequestTimeout() {
+        return requestTimeout;
+    }
+
+    public void setRequestTimeout(long requestTimeout) {
+        this.requestTimeout = requestTimeout;
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return nettyServerBootstrapFactory;
+    }
+
+    public void setNettyServerBootstrapFactory(
+            NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        this.nettyServerBootstrapFactory = nettyServerBootstrapFactory;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public Map<String, Object> getOptions() {
+        return options;
+    }
+
+    public void setOptions(Map<String, Object> options) {
+        this.options = options;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public BossPool getBossPool() {
+        return bossPool;
+    }
+
+    public void setBossPool(BossPool bossPool) {
+        this.bossPool = bossPool;
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return delimiter;
+    }
+
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        this.delimiter = delimiter;
+    }
+
+    public Boolean getAutoAppendDelimiter() {
+        return autoAppendDelimiter;
+    }
+
+    public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) {
+        this.autoAppendDelimiter = autoAppendDelimiter;
+    }
+
+    public WorkerPool getWorkerPool() {
+        return workerPool;
+    }
+
+    public void setWorkerPool(WorkerPool workerPool) {
+        this.workerPool = workerPool;
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return channelGroup;
+    }
+
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        this.channelGroup = channelGroup;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public String getNetworkInterface() {
+        return networkInterface;
+    }
+
+    public void setNetworkInterface(String networkInterface) {
+        this.networkInterface = networkInterface;
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return decoders;
+    }
+
+    public void setDecoders(List<ChannelHandler> decoders) {
+        this.decoders = decoders;
+    }
+
+    public String getEnabledProtocols() {
+        return enabledProtocols;
+    }
+
+    public void setEnabledProtocols(String enabledProtocols) {
+        this.enabledProtocols = enabledProtocols;
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return encoders;
+    }
+
+    public void setEncoders(List<ChannelHandler> encoders) {
+        this.encoders = encoders;
+    }
+
+    public ChannelHandler getEncoder() {
+        return encoder;
+    }
+
+    public void setEncoder(ChannelHandler encoder) {
+        this.encoder = encoder;
+    }
+
+    public ChannelHandler getDecoder() {
+        return decoder;
+    }
+
+    public void setDecoder(ChannelHandler decoder) {
+        this.decoder = decoder;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getLazyChannelCreation() {
+        return lazyChannelCreation;
+    }
+
+    public void setLazyChannelCreation(Boolean lazyChannelCreation) {
+        this.lazyChannelCreation = lazyChannelCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return serverExceptionCaughtLogLevel;
+    }
+
+    public void setServerExceptionCaughtLogLevel(
+            LoggingLevel serverExceptionCaughtLogLevel) {
+        this.serverExceptionCaughtLogLevel = serverExceptionCaughtLogLevel;
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public void setServerClosedChannelExceptionCaughtLogLevel(
+            LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        this.serverClosedChannelExceptionCaughtLogLevel = serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public ClientPipelineFactory getClientPipelineFactory() {
+        return clientPipelineFactory;
+    }
+
+    public void setClientPipelineFactory(
+            ClientPipelineFactory clientPipelineFactory) {
+        this.clientPipelineFactory = clientPipelineFactory;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-netty4-http/src/main/docs/netty4-http.adoc
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/main/docs/netty4-http.adoc b/components/camel-netty4-http/src/main/docs/netty4-http.adoc
index 7999e1e..74909e5 100644
--- a/components/camel-netty4-http/src/main/docs/netty4-http.adoc
+++ b/components/camel-netty4-http/src/main/docs/netty4-http.adoc
@@ -78,8 +78,9 @@ related to UDP transport.
 
 
 
+
 // component options: START
-The Netty4 HTTP component supports 6 options which are listed below.
+The Netty4 HTTP component supports 72 options which are listed below.
 
 
 
@@ -91,8 +92,74 @@ The Netty4 HTTP component supports 6 options which are listed below.
 | headerFilterStrategy | HeaderFilterStrategy | To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.
 | securityConfiguration | NettyHttpSecurityConfiguration | Refers to a org.apache.camel.component.netty4.http.NettyHttpSecurityConfiguration for configuring secure web resources.
 | maximumPoolSize | int | The thread pool size for the EventExecutorGroup if its in use. The default value is 16.
-| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints.
+| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
 | executorService | EventExecutorGroup | To use the given EventExecutorGroup
+| protocol | String | The protocol to use which can be tcp or udp.
+| host | String | The hostname. For the consumer the hostname is localhost or 0.0.0.0 For the producer the hostname is the remote host to connect to
+| port | int | The host port number
+| broadcast | boolean | Setting to choose Multicast over UDP
+| sendBufferSize | int | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+| receiveBufferSize | int | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+| receiveBufferSizePredictor | int | Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+| workerCount | int | When netty works on nio mode it uses default workerCount parameter from Netty which is cpu_core_threads2. User can use this operation to override the default workerCount from Netty
+| bossCount | int | When netty works on nio mode it uses default bossCount parameter from Netty which is 1. User can use this operation to override the default bossCount from Netty
+| keepAlive | boolean | Setting to ensure socket is not closed due to inactivity
+| tcpNoDelay | boolean | Setting to improve TCP protocol performance
+| reuseAddress | boolean | Setting to facilitate socket multiplexing
+| connectTimeout | int | Time to wait for a socket connection to be available. Value is in millis.
+| backlog | int | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200 500 or 1000 tells the TCP stack how long the accept queue can be If this option is not configured then the backlog depends on OS setting.
+| ssl | boolean | Setting to specify whether SSL encryption is applied to this endpoint
+| sslClientCertHeaders | boolean | When enabled and in SSL mode then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name issuer name serial number and the valid date range.
+| sslHandler | SslHandler | Reference to a class that could be used to return an SSL Handler
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
+| needClientAuth | boolean | Configures whether the server needs client authentication when using SSL.
+| keyStoreResource | String | Client side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| trustStoreResource | String | Server side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| keyStoreFormat | String | Keystore format to be used for payload encryption. Defaults to JKS if not set
+| securityProvider | String | Security provider to be used for payload encryption. Defaults to SunX509 if not set.
+| passphrase | String | Password setting to use in order to encrypt/decrypt payloads sent using SSH
+| serverInitializerFactory | ServerInitializerFactory | To use a custom ServerInitializerFactory
+| nettyServerBootstrapFactory | NettyServerBootstrapFactory | To use a custom NettyServerBootstrapFactory
+| requestTimeout | long | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+| sync | boolean | Setting to set endpoint as one-way or request-response
+| options | Map | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| nativeTransport | boolean | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: http://netty.io/wiki/native-transports.html
+| decoderMaxLineLength | int | The max line length to use for the textline codec.
+| bossGroup | EventLoopGroup | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint
+| delimiter | TextLineDelimiter | The delimiter to use for the textline codec. Possible values are LINE and NULL.
+| autoAppendDelimiter | boolean | Whether or not to auto append missing end delimiter when sending using the textline codec.
+| workerGroup | EventLoopGroup | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+| channelGroup | ChannelGroup | To use a explicit ChannelGroup.
+| encoding | String | The encoding (a charset name) to use for the textline codec. If not provided Camel will use the JVM default Charset.
+| networkInterface | String | When using UDP then this option can be used to specify a network interface by its name such as eth0 to join a multicast group.
+| decoders | List | A list of decoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| enabledProtocols | String | Which protocols to enable when using SSL
+| encoders | List | A list of encoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| reconnect | boolean | Used only in clientMode in consumer the consumer will attempt to reconnect on disconnection if this is enabled
+| encoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads.
+| reconnectInterval | int | Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection
+| decoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads.
+| disconnect | boolean | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+| lazyChannelCreation | boolean | Channels can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+| serverExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an exception then its logged using this logging level.
+| serverClosedChannelExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+| allowDefaultCodec | boolean | The netty component installs a default codec if both encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+| clientInitializerFactory | ClientInitializerFactory | To use a custom ClientInitializerFactory
+| usingExecutorService | boolean | Whether to use ordered thread pool to ensure events are processed orderly on the same channel.
+| producerPoolMaxActive | int | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients or idle awaiting checkout) at a given time. Use a negative value for no limit.
+| producerPoolMinIdle | int | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+| producerPoolMaxIdle | int | Sets the cap on the number of idle instances in the pool.
+| producerPoolMinEvictableIdle | long | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+| producerPoolEnabled | boolean | Whether producer pool is enabled or not. Important: Do not turn this off as the pooling is needed for handling concurrency and reliable request/reply.
+| udpConnectionlessSending | boolean | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+| clientMode | boolean | If the clientMode is true netty consumer will connect the address as a TCP client.
+| useByteBuf | boolean | If the useByteBuf is true netty producer will turn the message body into ByteBuf before sending it out.
+| udpByteArrayCodec | boolean | For UDP only. If enabled the using byte array codec instead of Java serialization protocol.
+| reuseChannel | boolean | This option allows producers to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useable if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key link NettyConstantsNETTY_CHANNEL which allows you to obtain the channel during routing and use it as well.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -104,6 +171,7 @@ The Netty4 HTTP component supports 6 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Netty4 HTTP component supports 81 endpoint options which are listed below:
 


[04/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-xmlsecurity/src/main/docs/xmlsecurity.adoc
----------------------------------------------------------------------
diff --git a/components/camel-xmlsecurity/src/main/docs/xmlsecurity.adoc b/components/camel-xmlsecurity/src/main/docs/xmlsecurity.adoc
index c40d1a3..19f284a 100644
--- a/components/camel-xmlsecurity/src/main/docs/xmlsecurity.adoc
+++ b/components/camel-xmlsecurity/src/main/docs/xmlsecurity.adoc
@@ -232,8 +232,9 @@ Component Options
 
 
 
+
 // component options: START
-The XML Security component supports 2 options which are listed below.
+The XML Security component supports 43 options which are listed below.
 
 
 
@@ -241,8 +242,49 @@ The XML Security component supports 2 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| signerConfiguration | XmlSignerConfiguration | To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints.
-| verifierConfiguration | XmlVerifierConfiguration | To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints.
+| signerConfiguration | XmlSignerConfiguration | To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints. Properties of the shared configuration can also be set individually.
+| verifierConfiguration | XmlVerifierConfiguration | To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints. Properties of the shared configuration can also be set individually.
+| signerUriDereferencer | URIDereferencer | If you want to restrict the remote access via reference URIs you can setSigner an own dereferencer. Optional parameter. If not setSigner the provider default dereferencer is used which can resolve URI fragments HTTP file and XPpointer URIs. Attention: The implementation is provider dependent!
+| signerBaseUri | String | You can setSigner a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI.
+| signerDisallowDoctypeDecl | Boolean | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is link BooleanTRUE.
+| signerKeyAccessor | KeyAccessor | 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.
+| signerOmitXmlDeclaration | Boolean | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header link XmlSignatureConstantsHEADER_OMIT_XML_DECLARATION.
+| signerClearHeaders | Boolean | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true.
+| signerCanonicalizationMethod | AlgorithmMethod | Canonicalization method used to canonicalize the SignedInfo element before the digest is calculated. You can use the helper methods XmlSignatureHelper.getCanonicalizationMethod(String algorithm) or getSignerCanonicalizationMethod(String algorithm List inclusiveNamespacePrefixes) to create a canonicalization method.
+| signerSchemaResourceUri | String | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes might be setSigner in the enveloped and enveloping case. If setSigner then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header link XmlSignatureConstantsHEADER_SCHEMA_RESOURCE_URI.
+| signerOutputXmlEncoding | String | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used.
+| signerTransformMethods | List | 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/xmldsigenveloped-signature is added at position 0 of the list. Use methods in XmlSignatureHelper to create the transform methods.
+| signerSignatureAlgorithm | String | Signature algorithm. Default value is http://www.w3.org/2000/09/xmldsigrsa-sha1.
+| signerDigestAlgorithm | String | 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/xmlencsha256
+| signerAddKeyInfoReference | Boolean | 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 true. Only relevant when a KeyInfo is returned by KeyAccessor. and link KeyInfogetId() is not null.
+| signerPrefixForXmlSignatureNamespace | String | Namespace prefix for the XML signature namespace http://www.w3.org/2000/09/xmldsig. Default value is ds. If null or an empty value is setSigner then no prefix is used for the XML signature namespace. See best practice http://www.w3.org/TR/xmldsig-bestpractices/signing-xml- without-namespaces
+| signerParentLocalName | String | 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). Default value is null. The value must be null for enveloping and detached XML signature. This parameter or the parameter link setParentXpath(XPathFilterParameterSpec) for enveloped signature and the parameter link setXpathsToIdAttributes(List) for detached signature must not be setSigner in the same configuration. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown.
+| signerParentNamespace | String | Namespace of the parent element to which the XML signature element will be added.
+| signerContentObjectId | String | setSigners the content object Id attribute value. By default a UUID is generated. If you setSigner the null value then a new UUID will be generated. Only used in the enveloping case.
+| signerSignatureId | String | setSigners the signature Id. If this parameter is not setSigner (null value) then a unique ID is generated for the signature ID (default). If this parameter is setSigner to (empty string) then no Id attribute is created in the signature element.
+| signerContentReferenceUri | String | 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 setSigner because the schema validator will then find out which attributes are ID attributes. Will be ignored in the enveloping or detached case.
+| signerContentReferenceType | String | Type of the content reference. The default value is null. This value can be overwritten by the header link XmlSignatureConstantsHEADER_CONTENT_REFERENCE_TYPE.
+| signerPlainText | Boolean | Indicator whether the message body contains plain text. The default value is false indicating that the message body contains XML. The value can be overwritten by the header link XmlSignatureConstantsHEADER_MESSAGE_IS_PLAIN_TEXT.
+| signerPlainTextEncoding | String | Encoding of the plain text. Only relevant if the message body is plain text (see parameter link plainText. Default value is UTF-8.
+| signerProperties | XmlSignatureProperties | For adding additional References and Objects to the XML signature which contain additional properties you can provide a bean which implements the XmlSignatureProperties interface.
+| signerXpathsToIdAttributes | List | 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. You can also setSigner the XPATH list dynamically via the header link XmlSignatureConstantsHEADER_XPATHS_TO_ID_ATTRIBUTES. The parameter link setParentLocalName(String) or link setParentXpath(XPathFilterParameterSpec) for enveloped signature and this parameter for detached signature must not be setSigner in the same configuration.
+| signerParentXpath | XPathFilterParameterSpec | setSigners 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). Default value is null. The value must be null for enveloping and detached XML signature. If the parameters parentXpath and parentLocalName are specified in the same configuration then an exception is thrown.
+| verifierUriDereferencer | URIDereferencer | If you want to restrict the remote access via reference URIs you can setVerifier an own dereferencer. Optional parameter. If not setVerifier the provider default dereferencer is used which can resolve URI fragments HTTP file and XPpointer URIs. Attention: The implementation is provider dependent!
+| verifierBaseUri | String | You can setVerifier a base URI which is used in the URI dereferencing. Relative URIs are then concatenated with the base URI.
+| verifierKeySelector | KeySelector | Provides the key for validating the XML signature.
+| verifierXmlSignatureChecker | XmlSignatureChecker | 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
+| verifierDisallowDoctypeDecl | Boolean | Disallows that the incoming XML document contains DTD DOCTYPE declaration. The default value is link BooleanTRUE.
+| verifierOmitXmlDeclaration | Boolean | Indicator whether the XML declaration in the outgoing message body should be omitted. Default value is false. Can be overwritten by the header link XmlSignatureConstantsHEADER_OMIT_XML_DECLARATION.
+| verifierClearHeaders | Boolean | Determines if the XML signature specific headers be cleared after signing and verification. Defaults to true.
+| verifierSchemaResourceUri | String | Classpath to the XML Schema. Must be specified in the detached XML Signature case for determining the ID attributes might be setVerifier in the enveloped and enveloping case. If setVerifier then the XML document is validated with the specified XML schema. The schema resource URI can be overwritten by the header link XmlSignatureConstantsHEADER_SCHEMA_RESOURCE_URI.
+| verifierOutputXmlEncoding | String | The character encoding of the resulting signed XML document. If null then the encoding of the original XML document is used.
+| verifierXmlSignature2Message | XmlSignature2Message | 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 setVerifier 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 envelop
 ed XML signature case (there is a reference with URI= and transform http://www.w3.org/2000/09/xmldsigenveloped-signature) the incoming XML document without the Signature element is setVerifier 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.
+| verifierValidationFailedHandler | ValidationFailedHandler | 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.
+| verifierOutputNodeSearch | Object | setVerifiers the output node search value for determining the node from the XML signature document which shall be setVerifier 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 XmlSignature2Message.
+| verifierOutputNodeSearchType | String | 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 DefaultXmlSignature2Message.
+| verifierRemoveSignatureElements | Boolean | 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 setVerifier to the output message. Normally this is only necessary if the XML signature is enveloped. The default value is link BooleanFALSE. This parameter is forwarded to XmlSignature2Message. This indicator has no effect if the output node search is of type link DefaultXmlSignature2MessageOUTPUT_NODE_SEARCH_TYPE_DEFAULT.F
+| verifierSecureValidation | Boolean | Enables secure validation. If true then secure validation is enabled.
+| verifierValidationFailedHandlerName | String | Name of handler to
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -250,6 +292,7 @@ The XML Security component supports 2 options which are listed below.
 
 
 
+
 [[XMLSecuritycomponent-EndpointOptions]]
 Endpoint Options
 ^^^^^^^^^^^^^^^^

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureComponent.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureComponent.java
index 9b2928b..e80c635 100644
--- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureComponent.java
+++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/XmlSignatureComponent.java
@@ -18,10 +18,20 @@ package org.apache.camel.component.xmlsecurity;
 
 import java.net.MalformedURLException;
 import java.net.URI;
+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.Endpoint;
+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.apache.camel.component.xmlsecurity.processor.XmlSignerConfiguration;
 import org.apache.camel.component.xmlsecurity.processor.XmlVerifierConfiguration;
 import org.apache.camel.impl.UriEndpointComponent;
@@ -53,11 +63,11 @@ public class XmlSignatureComponent extends UriEndpointComponent {
             name = u.getPath();
         } catch (Exception e) {
             throw new MalformedURLException(
-                String.format(
-                    "An invalid xmlsecurity uri was provided '%s'."
-                    + " Check the uri matches the format xmlsecurity:sign://<name> or xmlsecurity:verify:<name>",
-                    uri
-                )
+                    String.format(
+                            "An invalid xmlsecurity uri was provided '%s'."
+                                    + " Check the uri matches the format xmlsecurity:sign://<name> or xmlsecurity:verify:<name>",
+                            uri
+                    )
             );
         }
         XmlSignatureEndpoint endpoint;
@@ -69,11 +79,11 @@ public class XmlSignatureComponent extends UriEndpointComponent {
             endpoint = new XmlVerifierEndpoint(uri, this, config);
         } else {
             throw new IllegalStateException(
-                String.format(
-                    "Endpoint uri '%s'" + " is wrong configured. Operation '%s'"
-                    + " is not supported. Supported operations are: sign, verify",
-                    uri, scheme
-                )
+                    String.format(
+                            "Endpoint uri '%s'" + " is wrong configured. Operation '%s'"
+                                    + " is not supported. Supported operations are: sign, verify",
+                            uri, scheme
+                    )
             );
         }
         setProperties(endpoint.getConfiguration(), parameters);
@@ -91,7 +101,7 @@ public class XmlSignatureComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints.
+     * To use a shared XmlSignerConfiguration configuration to use as base for configuring endpoints. Properties of the shared configuration can also be set individually.
      */
     public void setSignerConfiguration(XmlSignerConfiguration signerConfiguration) {
         this.signerConfiguration = signerConfiguration;
@@ -105,10 +115,723 @@ public class XmlSignatureComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints.
+     * To use a shared XmlVerifierConfiguration configuration to use as base for configuring endpoints. Properties of the shared configuration can also be set individually.
      */
     public void setVerifierConfiguration(XmlVerifierConfiguration verifierConfiguration) {
         this.verifierConfiguration = verifierConfiguration;
     }
 
+    public URIDereferencer getSignerUriDereferencer() {
+        return getSignerConfiguration().getUriDereferencer();
+    }
+
+    /**
+     * If you want to restrict the remote access via reference URIs, you can setSigner
+     * an own dereferencer. Optional parameter. If not setSigner the provider default
+     * dereferencer is used which can resolve URI fragments, HTTP, file and
+     * XPpointer URIs.
+     * <p>
+     * Attention: The implementation is provider dependent!
+     *
+     * @see XMLCryptoContext#setURIDereferencer(URIDereferencer)
+     * @param uriDereferencer
+     */
+    public void setSignerUriDereferencer(URIDereferencer uriDereferencer) {
+        getSignerConfiguration().setUriDereferencer(uriDereferencer);
+    }
+
+    public String getSignerBaseUri() {
+        return getSignerConfiguration().getBaseUri();
+    }
+
+    /**
+     * You can setSigner a base URI which is used in the URI dereferencing. Relative
+     * URIs are then concatenated with the base URI.
+     *
+     * @see XMLCryptoContext#setBaseURI(String)
+     * @param baseUri
+     */
+    public void setSignerBaseUri(String baseUri) {
+        getSignerConfiguration().setBaseUri(baseUri);
+    }
+
+    public Boolean getSignerDisallowDoctypeDecl() {
+        return getSignerConfiguration().getDisallowDoctypeDecl();
+    }
+
+    public KeyAccessor getSignerKeyAccessor() {
+        return getSignerConfiguration().getKeyAccessor();
+    }
+
+    /**
+     * Disallows that the incoming XML document contains DTD DOCTYPE
+     * declaration. The default value is {@link Boolean#TRUE}.
+     *
+     * @param disallowDoctypeDecl if setSigner to {@link Boolean#FALSE} then DOCTYPE declaration is allowed, otherwise not
+     */
+    public void setSignerDisallowDoctypeDecl(Boolean disallowDoctypeDecl) {
+        getSignerConfiguration().setDisallowDoctypeDecl(disallowDoctypeDecl);
+    }
+
+    public Boolean getSignerOmitXmlDeclaration() {
+        return getSignerConfiguration().getOmitXmlDeclaration();
+    }
+
+    /**
+     * 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.
+     * @param keyAccessor
+     */
+    public void setSignerKeyAccessor(KeyAccessor keyAccessor) {
+        getSignerConfiguration().setKeyAccessor(keyAccessor);
+    }
+
+    /**
+     * setSigners the reference name for a KeyAccessor that can be found in the registry.
+     * @param keyAccessorName
+     */
+    public void setSignerKeyAccessor(String keyAccessorName) {
+        getSignerConfiguration().setKeyAccessor(keyAccessorName);
+    }
+
+    /**
+     * 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}.
+     * @param omitXmlDeclaration
+     */
+    public void setSignerOmitXmlDeclaration(Boolean omitXmlDeclaration) {
+        getSignerConfiguration().setOmitXmlDeclaration(omitXmlDeclaration);
+    }
+
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     *
+     * @return true if the Signature headers should be unset, false otherwise
+     */
+    public Boolean getSignerClearHeaders() {
+        return getSignerConfiguration().getClearHeaders();
+    }
+
+    public AlgorithmMethod getSignerCanonicalizationMethod() {
+        return getSignerConfiguration().getCanonicalizationMethod();
+    }
+
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     * @param clearHeaders
+     */
+    public void setSignerClearHeaders(Boolean clearHeaders) {
+        getSignerConfiguration().setClearHeaders(clearHeaders);
+    }
+
+    public String getSignerSchemaResourceUri() {
+        return getSignerConfiguration().getSchemaResourceUri();
+    }
+
+    /**
+     * Canonicalization method used to canonicalize the SignedInfo element before the digest is calculated.
+     * You can use the helper methods XmlSignatureHelper.getCanonicalizationMethod(String algorithm)
+     * or getSignerCanonicalizationMethod(String algorithm, List<String> inclusiveNamespacePrefixes) to create a canonicalization method.
+     * @param canonicalizationMethod
+     */
+    public void setSignerCanonicalizationMethod(AlgorithmMethod canonicalizationMethod) {
+        getSignerConfiguration().setCanonicalizationMethod(canonicalizationMethod);
+    }
+
+    /**
+     * setSigners the reference name for a AlgorithmMethod that can be found in the registry.
+     * @param canonicalizationMethodName
+     */
+    public void setSignerCanonicalizationMethod(String canonicalizationMethodName) {
+        getSignerConfiguration().setCanonicalizationMethod(canonicalizationMethodName);
+    }
+
+    /**
+     * Classpath to the XML Schema. Must be specified in the detached XML
+     * Signature case for determining the ID attributes, might be setSigner in the
+     * enveloped and enveloping case. If setSigner, 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}.
+     * @param schemaResourceUri
+     */
+    public void setSignerSchemaResourceUri(String schemaResourceUri) {
+        getSignerConfiguration().setSchemaResourceUri(schemaResourceUri);
+    }
+
+    public String getSignerOutputXmlEncoding() {
+        return getSignerConfiguration().getOutputXmlEncoding();
+    }
+
+    /**
+     * The character encoding of the resulting signed XML document. If
+     * <code>null</code> then the encoding of the original XML document is used.
+     * @param outputXmlEncoding
+     */
+    public void setSignerOutputXmlEncoding(String outputXmlEncoding) {
+        getSignerConfiguration().setOutputXmlEncoding(outputXmlEncoding);
+    }
+
+    public List<AlgorithmMethod> getSignerTransformMethods() {
+        return getSignerConfiguration().getTransformMethods();
+    }
+
+    /**
+     * 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.
+     * @param transformMethods
+     */
+    public void setSignerTransformMethods(List<AlgorithmMethod> transformMethods) {
+        getSignerConfiguration().setTransformMethods(transformMethods);
+    }
+
+    /**
+     * setSigners the reference name for a List<AlgorithmMethod> that can be found in the registry.
+     * @param transformMethodsName
+     */
+    public void setSignerTransformMethods(String transformMethodsName) {
+        getSignerConfiguration().setTransformMethods(transformMethodsName);
+    }
+
+    public String getSignerSignatureAlgorithm() {
+        return getSignerConfiguration().getSignatureAlgorithm();
+    }
+
+    /**
+     * Signature algorithm. Default value is
+     * "http://www.w3.org/2000/09/xmldsig#rsa-sha1".
+     * @param signatureAlgorithm
+     */
+    public void setSignerSignatureAlgorithm(String signatureAlgorithm) {
+        getSignerConfiguration().setSignatureAlgorithm(signatureAlgorithm);
+    }
+
+    public String getSignerDigestAlgorithm() {
+        return getSignerConfiguration().getDigestAlgorithm();
+    }
+
+    /**
+     * 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"
+     * @param digestAlgorithm
+     */
+    public void setSignerDigestAlgorithm(String digestAlgorithm) {
+        getSignerConfiguration().setDigestAlgorithm(digestAlgorithm);
+    }
+
+    public Boolean getSignerAddKeyInfoReference() {
+        return getSignerConfiguration().getAddKeyInfoReference();
+    }
+
+    /**
+     * 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>.
+     * @param addKeyInfoReference
+     */
+    public void setSignerAddKeyInfoReference(Boolean addKeyInfoReference) {
+        getSignerConfiguration().setAddKeyInfoReference(addKeyInfoReference);
+    }
+
+    public String getSignerPrefixForXmlSignatureNamespace() {
+        return getSignerConfiguration().getPrefixForXmlSignatureNamespace();
+    }
+
+    /**
+     * 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 setSigner 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 prefixForXmlSignatureNamespace
+     *            prefix
+     */
+    public void setSignerPrefixForXmlSignatureNamespace(String prefixForXmlSignatureNamespace) {
+        getSignerConfiguration().setPrefixForXmlSignatureNamespace(prefixForXmlSignatureNamespace);
+    }
+
+    public String getSignerParentLocalName() {
+        return getSignerConfiguration().getParentLocalName();
+    }
+
+    /**
+     * 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 setSigner 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 parentLocalName
+     *            local name
+     */
+    public void setSignerParentLocalName(String parentLocalName) {
+        getSignerConfiguration().setParentLocalName(parentLocalName);
+    }
+
+    public String getSignerParentNamespace() {
+        return getSignerConfiguration().getParentNamespace();
+    }
+
+    /**
+     * Namespace of the parent element to which the XML signature element will
+     * be added.
+     * @param parentNamespace
+     */
+    public void setSignerParentNamespace(String parentNamespace) {
+        getSignerConfiguration().setParentNamespace(parentNamespace);
+    }
+
+    public String getSignerContentObjectId() {
+        return getSignerConfiguration().getContentObjectId();
+    }
+
+    /**
+     * setSigners the content object Id attribute value. By default a UUID is
+     * generated. If you setSigner the <code>null</code> value, then a new UUID will
+     * be generated. Only used in the enveloping case.
+     * @param contentObjectId
+     */
+    public void setSignerContentObjectId(String contentObjectId) {
+        getSignerConfiguration().setContentObjectId(contentObjectId);
+    }
+
+    public String getSignerSignatureId() {
+        return getSignerConfiguration().getSignatureId();
+    }
+
+    /**
+     * setSigners the signature Id. If this parameter is not setSigner (null value) then a
+     * unique ID is generated for the signature ID (default). If this parameter
+     * is setSigner to "" (empty string) then no Id attribute is created in the
+     * signature element.
+     * @param signatureId
+     */
+    public void setSignerSignatureId(String signatureId) {
+        getSignerConfiguration().setSignatureId(signatureId);
+    }
+
+    public String getSignerContentReferenceUri() {
+        return getSignerConfiguration().getContentReferenceUri();
+    }
+
+    /**
+     * 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
+     * setSigner because the schema validator will then find out which attributes are
+     * ID attributes. Will be ignored in the enveloping or detached case.
+     * @param referenceUri
+     */
+    public void setSignerContentReferenceUri(String referenceUri) {
+        getSignerConfiguration().setContentReferenceUri(referenceUri);
+    }
+
+    public String getSignerContentReferenceType() {
+        return getSignerConfiguration().getContentReferenceType();
+    }
+
+    /**
+     * 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}.
+     * @param referenceType
+     */
+    public void setSignerContentReferenceType(String referenceType) {
+        getSignerConfiguration().setContentReferenceType(referenceType);
+    }
+
+    public Boolean getSignerPlainText() {
+        return getSignerConfiguration().getPlainText();
+    }
+
+    /**
+     * 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}.
+     * @param plainText
+     */
+    public void setSignerPlainText(Boolean plainText) {
+        getSignerConfiguration().setPlainText(plainText);
+    }
+
+    public String getSignerPlainTextEncoding() {
+        return getSignerConfiguration().getPlainTextEncoding();
+    }
+
+    /**
+     * Encoding of the plain text. Only relevant if the message body is plain
+     * text (see parameter {@link #plainText}. Default value is "UTF-8".
+     * @param plainTextEncoding
+     */
+    public void setSignerPlainTextEncoding(String plainTextEncoding) {
+        getSignerConfiguration().setPlainTextEncoding(plainTextEncoding);
+    }
+
+    public XmlSignatureProperties getSignerProperties() {
+        return getSignerConfiguration().getProperties();
+    }
+
+    /**
+     * For adding additional References and Objects to the XML signature which contain additional properties,
+     * you can provide a bean which implements the XmlSignatureProperties interface.
+     * @param properties
+     */
+    public void setSignerProperties(XmlSignatureProperties properties) {
+        getSignerConfiguration().setProperties(properties);
+    }
+
+    /**
+     * setSigners the reference name for a XmlSignatureProperties that can be found in the registry.
+     * @param propertiesName
+     */
+    public void setSignerProperties(String propertiesName) {
+        getSignerConfiguration().setProperties(propertiesName);
+    }
+
+    public List<XPathFilterParameterSpec> getSignerXpathsToIdAttributes() {
+        return getSignerConfiguration().getXpathsToIdAttributes();
+    }
+
+    /**
+     * 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 setSigner 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 setSigner in the same configuration.
+     * @param xpathsToIdAttributes
+     */
+    public void setSignerXpathsToIdAttributes(List<XPathFilterParameterSpec> xpathsToIdAttributes) {
+        getSignerConfiguration().setXpathsToIdAttributes(xpathsToIdAttributes);
+    }
+
+    public XPathFilterParameterSpec getSignerParentXpath() {
+        return getSignerConfiguration().getParentXpath();
+    }
+
+    /**
+     * setSigners 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
+     */
+    public void setSignerParentXpath(XPathFilterParameterSpec parentXpath) {
+        getSignerConfiguration().setParentXpath(parentXpath);
+    }
+
+    public URIDereferencer getVerifierUriDereferencer() {
+        return getVerifierConfiguration().getUriDereferencer();
+    }
+
+    /**
+     * If you want to restrict the remote access via reference URIs, you can setVerifier
+     * an own dereferencer. Optional parameter. If not setVerifier the provider default
+     * dereferencer is used which can resolve URI fragments, HTTP, file and
+     * XPpointer URIs.
+     * <p>
+     * Attention: The implementation is provider dependent!
+     *
+     * @see XMLCryptoContext#setURIDereferencer(URIDereferencer)
+     * @param uriDereferencer
+     */
+    public void setVerifierUriDereferencer(URIDereferencer uriDereferencer) {
+        getVerifierConfiguration().setUriDereferencer(uriDereferencer);
+    }
+
+    public String getVerifierBaseUri() {
+        return getVerifierConfiguration().getBaseUri();
+    }
+
+    /**
+     * You can setVerifier a base URI which is used in the URI dereferencing. Relative
+     * URIs are then concatenated with the base URI.
+     *
+     * @see XMLCryptoContext#setBaseURI(String)
+     * @param baseUri
+     */
+    public void setVerifierBaseUri(String baseUri) {
+        getVerifierConfiguration().setBaseUri(baseUri);
+    }
+
+    /**
+     * Provides the key for validating the XML signature.
+     * @param keySelector
+     */
+    public void setVerifierKeySelector(KeySelector keySelector) {
+        getVerifierConfiguration().setKeySelector(keySelector);
+    }
+
+    public KeySelector getVerifierKeySelector() {
+        return getVerifierConfiguration().getKeySelector();
+    }
+
+    /**
+     * setVerifiers the reference name for a KeySelector that can be found in the registry.
+     * @param keySelectorName
+     */
+    public void setVerifierKeySelector(String keySelectorName) {
+        getVerifierConfiguration().setKeySelector(keySelectorName);
+    }
+
+    public XmlSignatureChecker getVerifierXmlSignatureChecker() {
+        return getVerifierConfiguration().getXmlSignatureChecker();
+    }
+
+    public Boolean getVerifierDisallowDoctypeDecl() {
+        return getVerifierConfiguration().getDisallowDoctypeDecl();
+    }
+
+    /**
+     * 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
+     * @param xmlSignatureChecker
+     */
+    public void setVerifierXmlSignatureChecker(XmlSignatureChecker xmlSignatureChecker) {
+        getVerifierConfiguration().setXmlSignatureChecker(xmlSignatureChecker);
+    }
+
+    /**
+     * Disallows that the incoming XML document contains DTD DOCTYPE
+     * declaration. The default value is {@link Boolean#TRUE}.
+     *
+     * @param disallowDoctypeDecl if setVerifier to {@link Boolean#FALSE} then DOCTYPE declaration is allowed, otherwise not
+     */
+    public void setVerifierDisallowDoctypeDecl(Boolean disallowDoctypeDecl) {
+        getVerifierConfiguration().setDisallowDoctypeDecl(disallowDoctypeDecl);
+    }
+
+    /**
+     * setVerifiers the reference name for a application checker that can be found in the registry.
+     * @param xmlSignatureCheckerName
+     */
+    public void setVerifierXmlSignatureChecker(String xmlSignatureCheckerName) {
+        getVerifierConfiguration().setXmlSignatureChecker(xmlSignatureCheckerName);
+    }
+
+    public Boolean getVerifierOmitXmlDeclaration() {
+        return getVerifierConfiguration().getOmitXmlDeclaration();
+    }
+
+    /**
+     * 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}.
+     * @param omitXmlDeclaration
+     */
+    public void setVerifierOmitXmlDeclaration(Boolean omitXmlDeclaration) {
+        getVerifierConfiguration().setOmitXmlDeclaration(omitXmlDeclaration);
+    }
+
+    public XmlSignature2Message getVerifierXmlSignature2Message() {
+        return getVerifierConfiguration().getXmlSignature2Message();
+    }
+
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     *
+     * @return true if the Signature headers should be unset, false otherwise
+     */
+    public Boolean getVerifierClearHeaders() {
+        return getVerifierConfiguration().getClearHeaders();
+    }
+
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     * @param clearHeaders
+     */
+    public void setVerifierClearHeaders(Boolean clearHeaders) {
+        getVerifierConfiguration().setClearHeaders(clearHeaders);
+    }
+
+    public String getVerifierSchemaResourceUri() {
+        return getVerifierConfiguration().getSchemaResourceUri();
+    }
+
+    /**
+     * Classpath to the XML Schema. Must be specified in the detached XML
+     * Signature case for determining the ID attributes, might be setVerifier in the
+     * enveloped and enveloping case. If setVerifier, 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}.
+     * @param schemaResourceUri
+     */
+    public void setVerifierSchemaResourceUri(String schemaResourceUri) {
+        getVerifierConfiguration().setSchemaResourceUri(schemaResourceUri);
+    }
+
+    public String getVerifierOutputXmlEncoding() {
+        return getVerifierConfiguration().getOutputXmlEncoding();
+    }
+
+    /**
+     * The character encoding of the resulting signed XML document. If
+     * <code>null</code> then the encoding of the original XML document is used.
+     * @param outputXmlEncoding
+     */
+    public void setVerifierOutputXmlEncoding(String outputXmlEncoding) {
+        getVerifierConfiguration().setOutputXmlEncoding(outputXmlEncoding);
+    }
+
+    /**
+     * 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 setVerifier 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 setVerifier 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".
+     * @param xmlSignature2Message
+     */
+    public void setVerifierXmlSignature2Message(XmlSignature2Message xmlSignature2Message) {
+        getVerifierConfiguration().setXmlSignature2Message(xmlSignature2Message);
+    }
+
+    /**
+     * setVerifiers the reference name for the to-message instance that can be found in
+     * the registry.
+     * @param xmlSignature2Message
+     */
+    public void setVerifierXmlSignature2Message(String xmlSignature2Message) {
+        getVerifierConfiguration().setXmlSignature2Message(xmlSignature2Message);
+    }
+
+    public ValidationFailedHandler getVerifierValidationFailedHandler() {
+        return getVerifierConfiguration().getValidationFailedHandler();
+    }
+
+    /**
+     * 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.
+     * @param validationFailedHandler
+     */
+    public void setVerifierValidationFailedHandler(ValidationFailedHandler validationFailedHandler) {
+        getVerifierConfiguration().setValidationFailedHandler(validationFailedHandler);
+    }
+
+    public void setVerifierValidationFailedHandler(String validationFailedHandlerName) {
+        getVerifierConfiguration().setValidationFailedHandler(validationFailedHandlerName);
+    }
+
+    public Object getVerifierOutputNodeSearch() {
+        return getVerifierConfiguration().getOutputNodeSearch();
+    }
+
+    /**
+     * setVerifiers the output node search value for determining the node from the XML
+     * signature document which shall be setVerifier 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}.
+     * @param outputNodeSearch
+     */
+    public void setVerifierOutputNodeSearch(Object outputNodeSearch) {
+        getVerifierConfiguration().setOutputNodeSearch(outputNodeSearch);
+    }
+
+    public String getVerifierOutputNodeSearchType() {
+        return getVerifierConfiguration().getOutputNodeSearchType();
+    }
+
+    /**
+     * 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}.
+     * @param outputNodeSearchType
+     */
+    public void setVerifierOutputNodeSearchType(String outputNodeSearchType) {
+        getVerifierConfiguration().setOutputNodeSearchType(outputNodeSearchType);
+    }
+
+    public Boolean getVerifierRemoveSignatureElements() {
+        return getVerifierConfiguration().getRemoveSignatureElements();
+    }
+
+    /**
+     * 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 setVerifier 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
+     * @param removeSignatureElements
+     */
+    public void setVerifierRemoveSignatureElements(Boolean removeSignatureElements) {
+        getVerifierConfiguration().setRemoveSignatureElements(removeSignatureElements);
+    }
+
+    public Boolean getVerifierSecureValidation() {
+        return getVerifierConfiguration().getSecureValidation();
+    }
+
+    /**
+     * Enables secure validation. If true then secure validation is enabled.
+     * @param secureValidation
+     */
+    public void setVerifierSecureValidation(Boolean secureValidation) {
+        getVerifierConfiguration().setSecureValidation(secureValidation);
+    }
+
+    public String getVerifierValidationFailedHandlerName() {
+        return getVerifierConfiguration().getValidationFailedHandlerName();
+    }
+
+    /**
+     * Name of handler to
+     * @param validationFailedHandlerName
+     */
+    public void setVerifierValidationFailedHandlerName(String validationFailedHandlerName) {
+        getVerifierConfiguration().setValidationFailedHandlerName(validationFailedHandlerName);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
index 0a34deb..f6d4e31 100644
--- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
+++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/springboot/XmlSignatureComponentConfiguration.java
@@ -16,6 +16,16 @@
  */
 package org.apache.camel.component.xmlsecurity.springboot;
 
+import java.util.List;
+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.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.apache.camel.component.xmlsecurity.processor.XmlSignerConfiguration;
 import org.apache.camel.component.xmlsecurity.processor.XmlVerifierConfiguration;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -30,14 +40,322 @@ public class XmlSignatureComponentConfiguration {
 
     /**
      * To use a shared XmlSignerConfiguration configuration to use as base for
-     * configuring endpoints.
+     * configuring endpoints. Properties of the shared configuration can also be
+     * set individually.
      */
     private XmlSignerConfiguration signerConfiguration;
     /**
      * To use a shared XmlVerifierConfiguration configuration to use as base for
-     * configuring endpoints.
+     * configuring endpoints. Properties of the shared configuration can also be
+     * set individually.
      */
     private XmlVerifierConfiguration verifierConfiguration;
+    /**
+     * If you want to restrict the remote access via reference URIs you can
+     * setSigner an own dereferencer. Optional parameter. If not setSigner the
+     * provider default dereferencer is used which can resolve URI fragments
+     * HTTP file and XPpointer URIs. Attention: The implementation is provider
+     * dependent!
+     */
+    private URIDereferencer signerUriDereferencer;
+    /**
+     * You can setSigner a base URI which is used in the URI dereferencing.
+     * Relative URIs are then concatenated with the base URI.
+     */
+    private String signerBaseUri;
+    /**
+     * Disallows that the incoming XML document contains DTD DOCTYPE
+     * declaration. The default value is link BooleanTRUE.
+     */
+    private Boolean signerDisallowDoctypeDecl;
+    /**
+     * 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.
+     */
+    private KeyAccessor signerKeyAccessor;
+    /**
+     * Indicator whether the XML declaration in the outgoing message body should
+     * be omitted. Default value is false. Can be overwritten by the header link
+     * XmlSignatureConstantsHEADER_OMIT_XML_DECLARATION.
+     */
+    private Boolean signerOmitXmlDeclaration;
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     */
+    private Boolean signerClearHeaders;
+    /**
+     * Canonicalization method used to canonicalize the SignedInfo element
+     * before the digest is calculated. You can use the helper methods
+     * XmlSignatureHelper.getCanonicalizationMethod(String algorithm) or
+     * getSignerCanonicalizationMethod(String algorithm List
+     * inclusiveNamespacePrefixes) to create a canonicalization method.
+     */
+    private AlgorithmMethod signerCanonicalizationMethod;
+    /**
+     * Classpath to the XML Schema. Must be specified in the detached XML
+     * Signature case for determining the ID attributes might be setSigner in
+     * the enveloped and enveloping case. If setSigner then the XML document is
+     * validated with the specified XML schema. The schema resource URI can be
+     * overwritten by the header link
+     * XmlSignatureConstantsHEADER_SCHEMA_RESOURCE_URI.
+     */
+    private String signerSchemaResourceUri;
+    /**
+     * The character encoding of the resulting signed XML document. If null then
+     * the encoding of the original XML document is used.
+     */
+    private String signerOutputXmlEncoding;
+    /**
+     * 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/xmldsigenveloped-signature is added at position
+     * 0 of the list. Use methods in XmlSignatureHelper to create the transform
+     * methods.
+     */
+    private List<AlgorithmMethod> signerTransformMethods;
+    /**
+     * Signature algorithm. Default value is
+     * http://www.w3.org/2000/09/xmldsigrsa-sha1.
+     */
+    private String signerSignatureAlgorithm;
+    /**
+     * 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/xmlencsha256
+     */
+    private String signerDigestAlgorithm;
+    /**
+     * 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 true. Only relevant when a KeyInfo
+     * is returned by KeyAccessor. and link KeyInfogetId() is not null.
+     */
+    private Boolean signerAddKeyInfoReference;
+    /**
+     * Namespace prefix for the XML signature namespace
+     * http://www.w3.org/2000/09/xmldsig. Default value is ds. If null or an
+     * empty value is setSigner then no prefix is used for the XML signature
+     * namespace. See best practice
+     * http://www.w3.org/TR/xmldsig-bestpractices/signing-xml-
+     * without-namespaces
+     */
+    private String signerPrefixForXmlSignatureNamespace;
+    /**
+     * 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). Default value
+     * is null. The value must be null for enveloping and detached XML
+     * signature. This parameter or the parameter link
+     * setParentXpath(XPathFilterParameterSpec) for enveloped signature and the
+     * parameter link setXpathsToIdAttributes(List) for detached signature must
+     * not be setSigner in the same configuration. If the parameters parentXpath
+     * and parentLocalName are specified in the same configuration then an
+     * exception is thrown.
+     */
+    private String signerParentLocalName;
+    /**
+     * Namespace of the parent element to which the XML signature element will
+     * be added.
+     */
+    private String signerParentNamespace;
+    /**
+     * setSigners the content object Id attribute value. By default a UUID is
+     * generated. If you setSigner the null value then a new UUID will be
+     * generated. Only used in the enveloping case.
+     */
+    private String signerContentObjectId;
+    /**
+     * setSigners the signature Id. If this parameter is not setSigner (null
+     * value) then a unique ID is generated for the signature ID (default). If
+     * this parameter is setSigner to (empty string) then no Id attribute is
+     * created in the signature element.
+     */
+    private String signerSignatureId;
+    /**
+     * 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
+     * setSigner because the schema validator will then find out which
+     * attributes are ID attributes. Will be ignored in the enveloping or
+     * detached case.
+     */
+    private String signerContentReferenceUri;
+    /**
+     * Type of the content reference. The default value is null. This value can
+     * be overwritten by the header link
+     * XmlSignatureConstantsHEADER_CONTENT_REFERENCE_TYPE.
+     */
+    private String signerContentReferenceType;
+    /**
+     * Indicator whether the message body contains plain text. The default value
+     * is false indicating that the message body contains XML. The value can be
+     * overwritten by the header link
+     * XmlSignatureConstantsHEADER_MESSAGE_IS_PLAIN_TEXT.
+     */
+    private Boolean signerPlainText;
+    /**
+     * 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 signerPlainTextEncoding;
+    /**
+     * For adding additional References and Objects to the XML signature which
+     * contain additional properties you can provide a bean which implements the
+     * XmlSignatureProperties interface.
+     */
+    private XmlSignatureProperties signerProperties;
+    /**
+     * 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. You can also
+     * setSigner the XPATH list dynamically via the header link
+     * XmlSignatureConstantsHEADER_XPATHS_TO_ID_ATTRIBUTES. The parameter link
+     * setParentLocalName(String) or link
+     * setParentXpath(XPathFilterParameterSpec) for enveloped signature and this
+     * parameter for detached signature must not be setSigner in the same
+     * configuration.
+     */
+    private List<XPathFilterParameterSpec> signerXpathsToIdAttributes;
+    /**
+     * setSigners 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). Default value is null. The value
+     * must be null for enveloping and detached XML signature. If the parameters
+     * parentXpath and parentLocalName are specified in the same configuration
+     * then an exception is thrown.
+     */
+    private XPathFilterParameterSpec signerParentXpath;
+    /**
+     * If you want to restrict the remote access via reference URIs you can
+     * setVerifier an own dereferencer. Optional parameter. If not setVerifier
+     * the provider default dereferencer is used which can resolve URI fragments
+     * HTTP file and XPpointer URIs. Attention: The implementation is provider
+     * dependent!
+     */
+    private URIDereferencer verifierUriDereferencer;
+    /**
+     * You can setVerifier a base URI which is used in the URI dereferencing.
+     * Relative URIs are then concatenated with the base URI.
+     */
+    private String verifierBaseUri;
+    /**
+     * Provides the key for validating the XML signature.
+     */
+    private KeySelector verifierKeySelector;
+    /**
+     * 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
+     */
+    private XmlSignatureChecker verifierXmlSignatureChecker;
+    /**
+     * Disallows that the incoming XML document contains DTD DOCTYPE
+     * declaration. The default value is link BooleanTRUE.
+     */
+    private Boolean verifierDisallowDoctypeDecl;
+    /**
+     * Indicator whether the XML declaration in the outgoing message body should
+     * be omitted. Default value is false. Can be overwritten by the header link
+     * XmlSignatureConstantsHEADER_OMIT_XML_DECLARATION.
+     */
+    private Boolean verifierOmitXmlDeclaration;
+    /**
+     * Determines if the XML signature specific headers be cleared after signing
+     * and verification. Defaults to true.
+     */
+    private Boolean verifierClearHeaders;
+    /**
+     * Classpath to the XML Schema. Must be specified in the detached XML
+     * Signature case for determining the ID attributes might be setVerifier in
+     * the enveloped and enveloping case. If setVerifier then the XML document
+     * is validated with the specified XML schema. The schema resource URI can
+     * be overwritten by the header link
+     * XmlSignatureConstantsHEADER_SCHEMA_RESOURCE_URI.
+     */
+    private String verifierSchemaResourceUri;
+    /**
+     * The character encoding of the resulting signed XML document. If null then
+     * the encoding of the original XML document is used.
+     */
+    private String verifierOutputXmlEncoding;
+    /**
+     * 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 setVerifier 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/xmldsigenveloped-signature) the incoming XML
+     * document without the Signature element is setVerifier 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.
+     */
+    private XmlSignature2Message verifierXmlSignature2Message;
+    /**
+     * 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.
+     */
+    private ValidationFailedHandler verifierValidationFailedHandler;
+    /**
+     * setVerifiers the output node search value for determining the node from
+     * the XML signature document which shall be setVerifier 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 XmlSignature2Message.
+     */
+    private Object verifierOutputNodeSearch;
+    /**
+     * 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 DefaultXmlSignature2Message.
+     */
+    private String verifierOutputNodeSearchType;
+    /**
+     * 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 setVerifier to the output message. Normally
+     * this is only necessary if the XML signature is enveloped. The default
+     * value is link BooleanFALSE. This parameter is forwarded to
+     * XmlSignature2Message. This indicator has no effect if the output node
+     * search is of type link
+     * DefaultXmlSignature2MessageOUTPUT_NODE_SEARCH_TYPE_DEFAULT.F
+     */
+    private Boolean verifierRemoveSignatureElements;
+    /**
+     * Enables secure validation. If true then secure validation is enabled.
+     */
+    private Boolean verifierSecureValidation;
+    /**
+     * Name of handler to
+     */
+    private String verifierValidationFailedHandlerName;
 
     public XmlSignerConfiguration getSignerConfiguration() {
         return signerConfiguration;
@@ -56,4 +374,344 @@ public class XmlSignatureComponentConfiguration {
             XmlVerifierConfiguration verifierConfiguration) {
         this.verifierConfiguration = verifierConfiguration;
     }
+
+    public URIDereferencer getSignerUriDereferencer() {
+        return signerUriDereferencer;
+    }
+
+    public void setSignerUriDereferencer(URIDereferencer signerUriDereferencer) {
+        this.signerUriDereferencer = signerUriDereferencer;
+    }
+
+    public String getSignerBaseUri() {
+        return signerBaseUri;
+    }
+
+    public void setSignerBaseUri(String signerBaseUri) {
+        this.signerBaseUri = signerBaseUri;
+    }
+
+    public Boolean getSignerDisallowDoctypeDecl() {
+        return signerDisallowDoctypeDecl;
+    }
+
+    public void setSignerDisallowDoctypeDecl(Boolean signerDisallowDoctypeDecl) {
+        this.signerDisallowDoctypeDecl = signerDisallowDoctypeDecl;
+    }
+
+    public KeyAccessor getSignerKeyAccessor() {
+        return signerKeyAccessor;
+    }
+
+    public void setSignerKeyAccessor(KeyAccessor signerKeyAccessor) {
+        this.signerKeyAccessor = signerKeyAccessor;
+    }
+
+    public Boolean getSignerOmitXmlDeclaration() {
+        return signerOmitXmlDeclaration;
+    }
+
+    public void setSignerOmitXmlDeclaration(Boolean signerOmitXmlDeclaration) {
+        this.signerOmitXmlDeclaration = signerOmitXmlDeclaration;
+    }
+
+    public Boolean getSignerClearHeaders() {
+        return signerClearHeaders;
+    }
+
+    public void setSignerClearHeaders(Boolean signerClearHeaders) {
+        this.signerClearHeaders = signerClearHeaders;
+    }
+
+    public AlgorithmMethod getSignerCanonicalizationMethod() {
+        return signerCanonicalizationMethod;
+    }
+
+    public void setSignerCanonicalizationMethod(
+            AlgorithmMethod signerCanonicalizationMethod) {
+        this.signerCanonicalizationMethod = signerCanonicalizationMethod;
+    }
+
+    public String getSignerSchemaResourceUri() {
+        return signerSchemaResourceUri;
+    }
+
+    public void setSignerSchemaResourceUri(String signerSchemaResourceUri) {
+        this.signerSchemaResourceUri = signerSchemaResourceUri;
+    }
+
+    public String getSignerOutputXmlEncoding() {
+        return signerOutputXmlEncoding;
+    }
+
+    public void setSignerOutputXmlEncoding(String signerOutputXmlEncoding) {
+        this.signerOutputXmlEncoding = signerOutputXmlEncoding;
+    }
+
+    public List<AlgorithmMethod> getSignerTransformMethods() {
+        return signerTransformMethods;
+    }
+
+    public void setSignerTransformMethods(
+            List<AlgorithmMethod> signerTransformMethods) {
+        this.signerTransformMethods = signerTransformMethods;
+    }
+
+    public String getSignerSignatureAlgorithm() {
+        return signerSignatureAlgorithm;
+    }
+
+    public void setSignerSignatureAlgorithm(String signerSignatureAlgorithm) {
+        this.signerSignatureAlgorithm = signerSignatureAlgorithm;
+    }
+
+    public String getSignerDigestAlgorithm() {
+        return signerDigestAlgorithm;
+    }
+
+    public void setSignerDigestAlgorithm(String signerDigestAlgorithm) {
+        this.signerDigestAlgorithm = signerDigestAlgorithm;
+    }
+
+    public Boolean getSignerAddKeyInfoReference() {
+        return signerAddKeyInfoReference;
+    }
+
+    public void setSignerAddKeyInfoReference(Boolean signerAddKeyInfoReference) {
+        this.signerAddKeyInfoReference = signerAddKeyInfoReference;
+    }
+
+    public String getSignerPrefixForXmlSignatureNamespace() {
+        return signerPrefixForXmlSignatureNamespace;
+    }
+
+    public void setSignerPrefixForXmlSignatureNamespace(
+            String signerPrefixForXmlSignatureNamespace) {
+        this.signerPrefixForXmlSignatureNamespace = signerPrefixForXmlSignatureNamespace;
+    }
+
+    public String getSignerParentLocalName() {
+        return signerParentLocalName;
+    }
+
+    public void setSignerParentLocalName(String signerParentLocalName) {
+        this.signerParentLocalName = signerParentLocalName;
+    }
+
+    public String getSignerParentNamespace() {
+        return signerParentNamespace;
+    }
+
+    public void setSignerParentNamespace(String signerParentNamespace) {
+        this.signerParentNamespace = signerParentNamespace;
+    }
+
+    public String getSignerContentObjectId() {
+        return signerContentObjectId;
+    }
+
+    public void setSignerContentObjectId(String signerContentObjectId) {
+        this.signerContentObjectId = signerContentObjectId;
+    }
+
+    public String getSignerSignatureId() {
+        return signerSignatureId;
+    }
+
+    public void setSignerSignatureId(String signerSignatureId) {
+        this.signerSignatureId = signerSignatureId;
+    }
+
+    public String getSignerContentReferenceUri() {
+        return signerContentReferenceUri;
+    }
+
+    public void setSignerContentReferenceUri(String signerContentReferenceUri) {
+        this.signerContentReferenceUri = signerContentReferenceUri;
+    }
+
+    public String getSignerContentReferenceType() {
+        return signerContentReferenceType;
+    }
+
+    public void setSignerContentReferenceType(String signerContentReferenceType) {
+        this.signerContentReferenceType = signerContentReferenceType;
+    }
+
+    public Boolean getSignerPlainText() {
+        return signerPlainText;
+    }
+
+    public void setSignerPlainText(Boolean signerPlainText) {
+        this.signerPlainText = signerPlainText;
+    }
+
+    public String getSignerPlainTextEncoding() {
+        return signerPlainTextEncoding;
+    }
+
+    public void setSignerPlainTextEncoding(String signerPlainTextEncoding) {
+        this.signerPlainTextEncoding = signerPlainTextEncoding;
+    }
+
+    public XmlSignatureProperties getSignerProperties() {
+        return signerProperties;
+    }
+
+    public void setSignerProperties(XmlSignatureProperties signerProperties) {
+        this.signerProperties = signerProperties;
+    }
+
+    public List<XPathFilterParameterSpec> getSignerXpathsToIdAttributes() {
+        return signerXpathsToIdAttributes;
+    }
+
+    public void setSignerXpathsToIdAttributes(
+            List<XPathFilterParameterSpec> signerXpathsToIdAttributes) {
+        this.signerXpathsToIdAttributes = signerXpathsToIdAttributes;
+    }
+
+    public XPathFilterParameterSpec getSignerParentXpath() {
+        return signerParentXpath;
+    }
+
+    public void setSignerParentXpath(XPathFilterParameterSpec signerParentXpath) {
+        this.signerParentXpath = signerParentXpath;
+    }
+
+    public URIDereferencer getVerifierUriDereferencer() {
+        return verifierUriDereferencer;
+    }
+
+    public void setVerifierUriDereferencer(
+            URIDereferencer verifierUriDereferencer) {
+        this.verifierUriDereferencer = verifierUriDereferencer;
+    }
+
+    public String getVerifierBaseUri() {
+        return verifierBaseUri;
+    }
+
+    public void setVerifierBaseUri(String verifierBaseUri) {
+        this.verifierBaseUri = verifierBaseUri;
+    }
+
+    public KeySelector getVerifierKeySelector() {
+        return verifierKeySelector;
+    }
+
+    public void setVerifierKeySelector(KeySelector verifierKeySelector) {
+        this.verifierKeySelector = verifierKeySelector;
+    }
+
+    public XmlSignatureChecker getVerifierXmlSignatureChecker() {
+        return verifierXmlSignatureChecker;
+    }
+
+    public void setVerifierXmlSignatureChecker(
+            XmlSignatureChecker verifierXmlSignatureChecker) {
+        this.verifierXmlSignatureChecker = verifierXmlSignatureChecker;
+    }
+
+    public Boolean getVerifierDisallowDoctypeDecl() {
+        return verifierDisallowDoctypeDecl;
+    }
+
+    public void setVerifierDisallowDoctypeDecl(
+            Boolean verifierDisallowDoctypeDecl) {
+        this.verifierDisallowDoctypeDecl = verifierDisallowDoctypeDecl;
+    }
+
+    public Boolean getVerifierOmitXmlDeclaration() {
+        return verifierOmitXmlDeclaration;
+    }
+
+    public void setVerifierOmitXmlDeclaration(Boolean verifierOmitXmlDeclaration) {
+        this.verifierOmitXmlDeclaration = verifierOmitXmlDeclaration;
+    }
+
+    public Boolean getVerifierClearHeaders() {
+        return verifierClearHeaders;
+    }
+
+    public void setVerifierClearHeaders(Boolean verifierClearHeaders) {
+        this.verifierClearHeaders = verifierClearHeaders;
+    }
+
+    public String getVerifierSchemaResourceUri() {
+        return verifierSchemaResourceUri;
+    }
+
+    public void setVerifierSchemaResourceUri(String verifierSchemaResourceUri) {
+        this.verifierSchemaResourceUri = verifierSchemaResourceUri;
+    }
+
+    public String getVerifierOutputXmlEncoding() {
+        return verifierOutputXmlEncoding;
+    }
+
+    public void setVerifierOutputXmlEncoding(String verifierOutputXmlEncoding) {
+        this.verifierOutputXmlEncoding = verifierOutputXmlEncoding;
+    }
+
+    public XmlSignature2Message getVerifierXmlSignature2Message() {
+        return verifierXmlSignature2Message;
+    }
+
+    public void setVerifierXmlSignature2Message(
+            XmlSignature2Message verifierXmlSignature2Message) {
+        this.verifierXmlSignature2Message = verifierXmlSignature2Message;
+    }
+
+    public ValidationFailedHandler getVerifierValidationFailedHandler() {
+        return verifierValidationFailedHandler;
+    }
+
+    public void setVerifierValidationFailedHandler(
+            ValidationFailedHandler verifierValidationFailedHandler) {
+        this.verifierValidationFailedHandler = verifierValidationFailedHandler;
+    }
+
+    public Object getVerifierOutputNodeSearch() {
+        return verifierOutputNodeSearch;
+    }
+
+    public void setVerifierOutputNodeSearch(Object verifierOutputNodeSearch) {
+        this.verifierOutputNodeSearch = verifierOutputNodeSearch;
+    }
+
+    public String getVerifierOutputNodeSearchType() {
+        return verifierOutputNodeSearchType;
+    }
+
+    public void setVerifierOutputNodeSearchType(
+            String verifierOutputNodeSearchType) {
+        this.verifierOutputNodeSearchType = verifierOutputNodeSearchType;
+    }
+
+    public Boolean getVerifierRemoveSignatureElements() {
+        return verifierRemoveSignatureElements;
+    }
+
+    public void setVerifierRemoveSignatureElements(
+            Boolean verifierRemoveSignatureElements) {
+        this.verifierRemoveSignatureElements = verifierRemoveSignatureElements;
+    }
+
+    public Boolean getVerifierSecureValidation() {
+        return verifierSecureValidation;
+    }
+
+    public void setVerifierSecureValidation(Boolean verifierSecureValidation) {
+        this.verifierSecureValidation = verifierSecureValidation;
+    }
+
+    public String getVerifierValidationFailedHandlerName() {
+        return verifierValidationFailedHandlerName;
+    }
+
+    public void setVerifierValidationFailedHandlerName(
+            String verifierValidationFailedHandlerName) {
+        this.verifierValidationFailedHandlerName = verifierValidationFailedHandlerName;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperComponent.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperComponent.java
index e104a9b..28e5fd9 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperComponent.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperComponent.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.zookeeper;
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
@@ -74,9 +75,127 @@ public class ZooKeeperComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use a shared {@link ZooKeeperConfiguration}
+     * To use a shared ZooKeeperConfiguration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(ZooKeeperConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    private ZooKeeperConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new ZooKeeperConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public List<String> getServers() {
+        return getConfigurationOrCreate().getServers();
+    }
+
+    /**
+     * The zookeeper server hosts
+     */
+    public void setServers(List<String> servers) {
+        getConfigurationOrCreate().setServers(servers);
+    }
+
+    public int getTimeout() {
+        return getConfigurationOrCreate().getTimeout();
+    }
+
+    /**
+     * The time interval to wait on connection before timing out.
+     * @param timeout
+     */
+    public void setTimeout(int timeout) {
+        getConfigurationOrCreate().setTimeout(timeout);
+    }
+
+    public boolean isListChildren() {
+        return getConfigurationOrCreate().isListChildren();
+    }
+
+    /**
+     * Whether the children of the node should be listed
+     * @param listChildren
+     */
+    public void setListChildren(boolean listChildren) {
+        getConfigurationOrCreate().setListChildren(listChildren);
+    }
+
+    public String getConnectString() {
+        return getConfigurationOrCreate().getConnectString();
+    }
+
+    /**
+     * The node in the ZooKeeper server (aka znode)
+     * @param path
+     */
+    public void setPath(String path) {
+        getConfigurationOrCreate().setPath(path);
+    }
+
+    public String getPath() {
+        return getConfigurationOrCreate().getPath();
+    }
+
+    public boolean isRepeat() {
+        return getConfigurationOrCreate().isRepeat();
+    }
+
+    /**
+     * Should changes to the znode be 'watched' and repeatedly processed.
+     * @param repeat
+     */
+    public void setRepeat(boolean repeat) {
+        getConfigurationOrCreate().setRepeat(repeat);
+    }
+
+    public long getBackoff() {
+        return getConfigurationOrCreate().getBackoff();
+    }
+
+    /**
+     * The time interval to backoff for after an error before retrying.
+     * @param backoff
+     */
+    public void setBackoff(long backoff) {
+        getConfigurationOrCreate().setBackoff(backoff);
+    }
+
+    public boolean isCreate() {
+        return getConfigurationOrCreate().isCreate();
+    }
+
+    /**
+     * Should the endpoint create the node if it does not currently exist.
+     * @param shouldCreate
+     */
+    public void setCreate(boolean shouldCreate) {
+        getConfigurationOrCreate().setCreate(shouldCreate);
+    }
+
+    public String getCreateMode() {
+        return getConfigurationOrCreate().getCreateMode();
+    }
+
+    /**
+     * The create mode that should be used for the newly created node
+     * @param createMode
+     */
+    public void setCreateMode(String createMode) {
+        getConfigurationOrCreate().setCreateMode(createMode);
+    }
+
+    public boolean isSendEmptyMessageOnDelete() {
+        return getConfigurationOrCreate().isSendEmptyMessageOnDelete();
+    }
+
+    /**
+     * Upon the delete of a znode, should an empty message be send to the consumer
+     * @param sendEmptyMessageOnDelete
+     */
+    public void setSendEmptyMessageOnDelete(boolean sendEmptyMessageOnDelete) {
+        getConfigurationOrCreate().setSendEmptyMessageOnDelete(sendEmptyMessageOnDelete);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
index 66a9e74..34d3edb 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/ZooKeeperConfiguration.java
@@ -92,6 +92,9 @@ public class ZooKeeperConfiguration implements Cloneable {
         return null;
     }
 
+    /**
+     * The zookeeper server hosts
+     */
     public void setServers(List<String> servers) {
         this.servers = servers;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
index a3902ad..e28b42f 100644
--- a/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
+++ b/components/camel-zookeeper/src/main/java/org/apache/camel/component/zookeeper/springboot/ZooKeeperComponentConfiguration.java
@@ -16,6 +16,7 @@
  */
 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;
 
@@ -28,9 +29,47 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class ZooKeeperComponentConfiguration {
 
     /**
-     * To use a shared ZooKeeperConfiguration
+     * To use a shared ZooKeeperConfiguration. Properties of the shared
+     * configuration can also be set individually.
      */
     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 = false;
+    /**
+     * The node in the ZooKeeper server (aka znode)
+     */
+    private String path;
+    /**
+     * Should changes to the znode be 'watched' and repeatedly processed.
+     */
+    private Boolean repeat = false;
+    /**
+     * 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 = false;
+    /**
+     * 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 = false;
 
     public ZooKeeperConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +78,76 @@ public class ZooKeeperComponentConfiguration {
     public void setConfiguration(ZooKeeperConfiguration 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;
+    }
 }
\ No newline at end of file


[05/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce.adoc
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce.adoc b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce.adoc
index f931960..616c501 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce.adoc
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce.adoc
@@ -201,8 +201,10 @@ Options
 
 
 
+
+
 // component options: START
-The Salesforce component supports 16 options which are listed below.
+The Salesforce component supports 55 options which are listed below.
 
 
 
@@ -210,8 +212,8 @@ The Salesforce component supports 16 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| loginConfig | SalesforceLoginConfig | To use the shared SalesforceLoginConfig as login configuration
-| config | SalesforceEndpointConfig | To use the shared SalesforceLoginConfig as configuration
+| loginConfig | SalesforceLoginConfig | To use the shared SalesforceLoginConfig as login configuration. Properties of the shared configuration can also be set individually.
+| config | SalesforceEndpointConfig | To use the shared SalesforceEndpointConfig as configuration. Properties of the shared configuration can also be set individually.
 | httpClientProperties | Map | Used for configuring HTTP client properties as key/value pairs
 | sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
 | httpProxyHost | String | To configure HTTP proxy host
@@ -226,6 +228,45 @@ The Salesforce component supports 16 options which are listed below.
 | httpProxyRealm | String | HTTP proxy authentication realm
 | httpProxyUseDigestAuth | boolean | Use HTTP proxy Digest authentication false by default
 | packages | String[] | Package names to scan for DTO classes (multiple packages can be separated by comma).
+| loginUrl | String | Salesforce login URL defaults to https://login.salesforce.com
+| clientId | String | Salesforce connected application Consumer Key
+| clientSecret | String | Salesforce connected application Consumer Secret
+| userName | String | Salesforce account user name
+| password | String | Salesforce account password
+| lazyLogin | boolean | Flag to enable/disable lazy OAuth default is false. When enabled OAuth token retrieval or generation is not done until the first API call
+| format | PayloadFormat | Payload format to use for Salesforce API calls either JSON or XML defaults to JSON
+| apiVersion | String | Salesforce API version defaults to SalesforceEndpointConfig.DEFAULT_VERSION
+| sObjectName | String | SObject name if required or supported by API
+| sObjectId | String | SObject ID if required by API
+| sObjectFields | String | SObject fields to retrieve
+| sObjectIdName | String | SObject external ID field name
+| sObjectIdValue | String | SObject external ID field value
+| sObjectBlobFieldName | String | SObject blob field name
+| sObjectClass | String | Fully qualified SObject class name usually generated using camel-salesforce-maven-plugin
+| sObjectQuery | String | Salesforce SOQL query string
+| sObjectSearch | String | Salesforce SOSL search string
+| apexMethod | String | APEX method name
+| apexUrl | String | APEX method URL
+| apexQueryParams | Map | Query params for APEX method
+| contentType | ContentType | Bulk API content type one of XML CSV ZIP_XML ZIP_CSV
+| jobId | String | Bulk API Job ID
+| batchId | String | Bulk API Batch ID
+| resultId | String | Bulk API Result ID
+| updateTopic | boolean | Whether to update an existing Push Topic when using the Streaming API defaults to false
+| notifyForFields | NotifyForFieldsEnum | Notify for fields options are ALL REFERENCED SELECT WHERE
+| notifyForOperations | NotifyForOperationsEnum | Notify for operations options are ALL CREATE EXTENDED UPDATE (API version 29.0)
+| notifyForOperationCreate | Boolean | Notify for create operation defaults to false (API version = 29.0)
+| notifyForOperationUpdate | Boolean | Notify for update operation defaults to false (API version = 29.0)
+| notifyForOperationDelete | Boolean | Notify for delete operation defaults to false (API version = 29.0)
+| notifyForOperationUndelete | Boolean | Notify for un-delete operation defaults to false (API version = 29.0)
+| reportId | String | Salesforce1 Analytics report Id
+| includeDetails | Boolean | Include details in Salesforce1 Analytics report defaults to false.
+| reportMetadata | ReportMetadata | Salesforce1 Analytics report metadata for filtering
+| instanceId | String | Salesforce1 Analytics report execution instance ID
+| httpClient | SalesforceHttpClient | Custom Jetty Http Client to use to connect to Salesforce.
+| objectMapper | ObjectMapper | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects.
+| defaultReplayId | Integer | Default replayId setting if no value is found in link initialReplayIdMap
+| initialReplayIdMap | Map | Replay IDs to start from per channel name.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -236,6 +277,8 @@ The Salesforce component supports 16 options which are listed below.
 
 
 
+
+
 // endpoint options: START
 The Salesforce component supports 39 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
index 61357ea..76f7012 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java
@@ -28,14 +28,21 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.ComponentConfiguration;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.salesforce.api.SalesforceException;
 import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase;
 import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata;
+import org.apache.camel.component.salesforce.api.dto.bulk.ContentType;
 import org.apache.camel.component.salesforce.internal.OperationName;
+import org.apache.camel.component.salesforce.internal.PayloadFormat;
 import org.apache.camel.component.salesforce.internal.SalesforceSession;
+import org.apache.camel.component.salesforce.internal.dto.NotifyForFieldsEnum;
+import org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum;
 import org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.spi.EndpointCompleter;
@@ -383,7 +390,7 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
     }
 
     /**
-     * To use the shared SalesforceLoginConfig as login configuration
+     * To use the shared SalesforceLoginConfig as login configuration. Properties of the shared configuration can also be set individually.
      */
     public void setLoginConfig(SalesforceLoginConfig loginConfig) {
         this.loginConfig = loginConfig;
@@ -394,7 +401,7 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
     }
 
     /**
-     * To use the shared SalesforceLoginConfig as configuration
+     * To use the shared SalesforceEndpointConfig as configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfig(SalesforceEndpointConfig config) {
         this.config = config;
@@ -571,4 +578,486 @@ public class SalesforceComponent extends UriEndpointComponent implements Endpoin
     public Map<String, Class<?>> getClassMap() {
         return classMap;
     }
+
+    private SalesforceLoginConfig getLoginConfigOrCreate() {
+        if (this.getLoginConfig() == null) {
+            this.setLoginConfig(new SalesforceLoginConfig());
+        }
+        return this.getLoginConfig();
+    }
+
+    private SalesforceEndpointConfig getConfigOrCreate() {
+        if (this.getConfig() == null) {
+            this.setConfig(new SalesforceEndpointConfig());
+        }
+        return this.getConfig();
+    }
+
+    public String getLoginUrl() {
+        return getLoginConfigOrCreate().getLoginUrl();
+    }
+
+    /**
+     * Salesforce login URL, defaults to https://login.salesforce.com
+     * @param loginUrl
+     */
+    public void setLoginUrl(String loginUrl) {
+        getLoginConfigOrCreate().setLoginUrl(loginUrl);
+    }
+
+    public String getClientId() {
+        return getLoginConfigOrCreate().getClientId();
+    }
+
+    /**
+     * Salesforce connected application Consumer Key
+     * @param clientId
+     */
+    public void setClientId(String clientId) {
+        getLoginConfigOrCreate().setClientId(clientId);
+    }
+
+    public String getClientSecret() {
+        return getLoginConfigOrCreate().getClientSecret();
+    }
+
+    /**
+     * Salesforce connected application Consumer Secret
+     * @param clientSecret
+     */
+    public void setClientSecret(String clientSecret) {
+        getLoginConfigOrCreate().setClientSecret(clientSecret);
+    }
+
+    public String getUserName() {
+        return getLoginConfigOrCreate().getUserName();
+    }
+
+    /**
+     * Salesforce account user name
+     * @param userName
+     */
+    public void setUserName(String userName) {
+        getLoginConfigOrCreate().setUserName(userName);
+    }
+
+    public String getPassword() {
+        return getLoginConfigOrCreate().getPassword();
+    }
+
+    /**
+     * Salesforce account password
+     * @param password
+     */
+    public void setPassword(String password) {
+        getLoginConfigOrCreate().setPassword(password);
+    }
+
+    public boolean isLazyLogin() {
+        return getLoginConfigOrCreate().isLazyLogin();
+    }
+
+    /**
+     * Flag to enable/disable lazy OAuth, default is false. When enabled, OAuth token retrieval or generation is not done until the first API call
+     * @param lazyLogin
+     */
+    public void setLazyLogin(boolean lazyLogin) {
+        getLoginConfigOrCreate().setLazyLogin(lazyLogin);
+    }
+
+    public PayloadFormat getFormat() {
+        return getConfigOrCreate().getFormat();
+    }
+
+    /**
+     * Payload format to use for Salesforce API calls, either JSON or XML, defaults to JSON
+     * @param format
+     */
+    public void setFormat(PayloadFormat format) {
+        getConfigOrCreate().setFormat(format);
+    }
+
+    public String getApiVersion() {
+        return getConfigOrCreate().getApiVersion();
+    }
+
+    /**
+     * Salesforce API version, defaults to SalesforceEndpointConfig.DEFAULT_VERSION
+     * @param apiVersion
+     */
+    public void setApiVersion(String apiVersion) {
+        getConfigOrCreate().setApiVersion(apiVersion);
+    }
+
+    public String getSObjectName() {
+        return getConfigOrCreate().getSObjectName();
+    }
+
+    /**
+     * SObject name if required or supported by API
+     * @param sObjectName
+     */
+    public void setSObjectName(String sObjectName) {
+        getConfigOrCreate().setSObjectName(sObjectName);
+    }
+
+    public String getSObjectId() {
+        return getConfigOrCreate().getSObjectId();
+    }
+
+    /**
+     * SObject ID if required by API
+     * @param sObjectId
+     */
+    public void setSObjectId(String sObjectId) {
+        getConfigOrCreate().setSObjectId(sObjectId);
+    }
+
+    public String getSObjectFields() {
+        return getConfigOrCreate().getSObjectFields();
+    }
+
+    /**
+     * SObject fields to retrieve
+     * @param sObjectFields
+     */
+    public void setSObjectFields(String sObjectFields) {
+        getConfigOrCreate().setSObjectFields(sObjectFields);
+    }
+
+    public String getSObjectIdName() {
+        return getConfigOrCreate().getSObjectIdName();
+    }
+
+    /**
+     * SObject external ID field name
+     * @param sObjectIdName
+     */
+    public void setSObjectIdName(String sObjectIdName) {
+        getConfigOrCreate().setSObjectIdName(sObjectIdName);
+    }
+
+    public String getSObjectIdValue() {
+        return getConfigOrCreate().getSObjectIdValue();
+    }
+
+    /**
+     * SObject external ID field value
+     * @param sObjectIdValue
+     */
+    public void setSObjectIdValue(String sObjectIdValue) {
+        getConfigOrCreate().setSObjectIdValue(sObjectIdValue);
+    }
+
+    public String getSObjectBlobFieldName() {
+        return getConfigOrCreate().getSObjectBlobFieldName();
+    }
+
+    /**
+     * SObject blob field name
+     * @param sObjectBlobFieldName
+     */
+    public void setSObjectBlobFieldName(String sObjectBlobFieldName) {
+        getConfigOrCreate().setSObjectBlobFieldName(sObjectBlobFieldName);
+    }
+
+    public String getSObjectClass() {
+        return getConfigOrCreate().getSObjectClass();
+    }
+
+    /**
+     * Fully qualified SObject class name, usually generated using camel-salesforce-maven-plugin
+     * @param sObjectClass
+     */
+    public void setSObjectClass(String sObjectClass) {
+        getConfigOrCreate().setSObjectClass(sObjectClass);
+    }
+
+    public String getSObjectQuery() {
+        return getConfigOrCreate().getSObjectQuery();
+    }
+
+    /**
+     * Salesforce SOQL query string
+     * @param sObjectQuery
+     */
+    public void setSObjectQuery(String sObjectQuery) {
+        getConfigOrCreate().setSObjectQuery(sObjectQuery);
+    }
+
+    public String getSObjectSearch() {
+        return getConfigOrCreate().getSObjectSearch();
+    }
+
+    /**
+     * Salesforce SOSL search string
+     * @param sObjectSearch
+     */
+    public void setSObjectSearch(String sObjectSearch) {
+        getConfigOrCreate().setSObjectSearch(sObjectSearch);
+    }
+
+    public String getApexMethod() {
+        return getConfigOrCreate().getApexMethod();
+    }
+
+    /**
+     * APEX method name
+     * @param apexMethod
+     */
+    public void setApexMethod(String apexMethod) {
+        getConfigOrCreate().setApexMethod(apexMethod);
+    }
+
+    public String getApexUrl() {
+        return getConfigOrCreate().getApexUrl();
+    }
+
+    /**
+     * APEX method URL
+     * @param apexUrl
+     */
+    public void setApexUrl(String apexUrl) {
+        getConfigOrCreate().setApexUrl(apexUrl);
+    }
+
+    public Map<String, Object> getApexQueryParams() {
+        return getConfigOrCreate().getApexQueryParams();
+    }
+
+    /**
+     * Query params for APEX method
+     * @param apexQueryParams
+     */
+    public void setApexQueryParams(Map<String, Object> apexQueryParams) {
+        getConfigOrCreate().setApexQueryParams(apexQueryParams);
+    }
+
+    public ContentType getContentType() {
+        return getConfigOrCreate().getContentType();
+    }
+
+    /**
+     * Bulk API content type, one of XML, CSV, ZIP_XML, ZIP_CSV
+     * @param contentType
+     */
+    public void setContentType(ContentType contentType) {
+        getConfigOrCreate().setContentType(contentType);
+    }
+
+    public String getJobId() {
+        return getConfigOrCreate().getJobId();
+    }
+
+    /**
+     * Bulk API Job ID
+     * @param jobId
+     */
+    public void setJobId(String jobId) {
+        getConfigOrCreate().setJobId(jobId);
+    }
+
+    public String getBatchId() {
+        return getConfigOrCreate().getBatchId();
+    }
+
+    /**
+     * Bulk API Batch ID
+     * @param batchId
+     */
+    public void setBatchId(String batchId) {
+        getConfigOrCreate().setBatchId(batchId);
+    }
+
+    public String getResultId() {
+        return getConfigOrCreate().getResultId();
+    }
+
+    /**
+     * Bulk API Result ID
+     * @param resultId
+     */
+    public void setResultId(String resultId) {
+        getConfigOrCreate().setResultId(resultId);
+    }
+
+    public boolean isUpdateTopic() {
+        return getConfigOrCreate().isUpdateTopic();
+    }
+
+    /**
+     * Whether to update an existing Push Topic when using the Streaming API, defaults to false
+     * @param updateTopic
+     */
+    public void setUpdateTopic(boolean updateTopic) {
+        getConfigOrCreate().setUpdateTopic(updateTopic);
+    }
+
+    public NotifyForFieldsEnum getNotifyForFields() {
+        return getConfigOrCreate().getNotifyForFields();
+    }
+
+    /**
+     * Notify for fields, options are ALL, REFERENCED, SELECT, WHERE
+     * @param notifyForFields
+     */
+    public void setNotifyForFields(NotifyForFieldsEnum notifyForFields) {
+        getConfigOrCreate().setNotifyForFields(notifyForFields);
+    }
+
+    public NotifyForOperationsEnum getNotifyForOperations() {
+        return getConfigOrCreate().getNotifyForOperations();
+    }
+
+    /**
+     * Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version < 29.0)
+     * @param notifyForOperations
+     */
+    public void setNotifyForOperations(NotifyForOperationsEnum notifyForOperations) {
+        getConfigOrCreate().setNotifyForOperations(notifyForOperations);
+    }
+
+    public Boolean getNotifyForOperationCreate() {
+        return getConfigOrCreate().getNotifyForOperationCreate();
+    }
+
+    /**
+     * Notify for create operation, defaults to false (API version >= 29.0)
+     * @param notifyForOperationCreate
+     */
+    public void setNotifyForOperationCreate(Boolean notifyForOperationCreate) {
+        getConfigOrCreate().setNotifyForOperationCreate(notifyForOperationCreate);
+    }
+
+    public Boolean getNotifyForOperationUpdate() {
+        return getConfigOrCreate().getNotifyForOperationUpdate();
+    }
+
+    /**
+     * Notify for update operation, defaults to false (API version >= 29.0)
+     * @param notifyForOperationUpdate
+     */
+    public void setNotifyForOperationUpdate(Boolean notifyForOperationUpdate) {
+        getConfigOrCreate().setNotifyForOperationUpdate(notifyForOperationUpdate);
+    }
+
+    public Boolean getNotifyForOperationDelete() {
+        return getConfigOrCreate().getNotifyForOperationDelete();
+    }
+
+    /**
+     * Notify for delete operation, defaults to false (API version >= 29.0)
+     * @param notifyForOperationDelete
+     */
+    public void setNotifyForOperationDelete(Boolean notifyForOperationDelete) {
+        getConfigOrCreate().setNotifyForOperationDelete(notifyForOperationDelete);
+    }
+
+    public Boolean getNotifyForOperationUndelete() {
+        return getConfigOrCreate().getNotifyForOperationUndelete();
+    }
+
+    /**
+     * Notify for un-delete operation, defaults to false (API version >= 29.0)
+     * @param notifyForOperationUndelete
+     */
+    public void setNotifyForOperationUndelete(Boolean notifyForOperationUndelete) {
+        getConfigOrCreate().setNotifyForOperationUndelete(notifyForOperationUndelete);
+    }
+
+    public String getReportId() {
+        return getConfigOrCreate().getReportId();
+    }
+
+    /**
+     * Salesforce1 Analytics report Id
+     * @param reportId
+     */
+    public void setReportId(String reportId) {
+        getConfigOrCreate().setReportId(reportId);
+    }
+
+    public Boolean getIncludeDetails() {
+        return getConfigOrCreate().getIncludeDetails();
+    }
+
+    /**
+     * Include details in Salesforce1 Analytics report, defaults to false.
+     * @param includeDetails
+     */
+    public void setIncludeDetails(Boolean includeDetails) {
+        getConfigOrCreate().setIncludeDetails(includeDetails);
+    }
+
+    public ReportMetadata getReportMetadata() {
+        return getConfigOrCreate().getReportMetadata();
+    }
+
+    /**
+     * Salesforce1 Analytics report metadata for filtering
+     * @param reportMetadata
+     */
+    public void setReportMetadata(ReportMetadata reportMetadata) {
+        getConfigOrCreate().setReportMetadata(reportMetadata);
+    }
+
+    public String getInstanceId() {
+        return getConfigOrCreate().getInstanceId();
+    }
+
+    /**
+     * Salesforce1 Analytics report execution instance ID
+     * @param instanceId
+     */
+    public void setInstanceId(String instanceId) {
+        getConfigOrCreate().setInstanceId(instanceId);
+    }
+
+    /**
+     * Custom Jetty Http Client to use to connect to Salesforce.
+     * @param httpClient
+     */
+    public void setHttpClient(SalesforceHttpClient httpClient) {
+        getConfigOrCreate().setHttpClient(httpClient);
+    }
+
+    public SalesforceHttpClient getHttpClient() {
+        return getConfigOrCreate().getHttpClient();
+    }
+
+    public ObjectMapper getObjectMapper() {
+        return getConfigOrCreate().getObjectMapper();
+    }
+
+    /**
+     * Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects.
+     * @param objectMapper
+     */
+    public void setObjectMapper(ObjectMapper objectMapper) {
+        getConfigOrCreate().setObjectMapper(objectMapper);
+    }
+
+    public Integer getDefaultReplayId() {
+        return getConfigOrCreate().getDefaultReplayId();
+    }
+
+    /**
+     * Default replayId setting if no value is found in {@link #initialReplayIdMap}
+     * @param defaultReplayId
+     */
+    public void setDefaultReplayId(Integer defaultReplayId) {
+        getConfigOrCreate().setDefaultReplayId(defaultReplayId);
+    }
+
+    public Map<String, Integer> getInitialReplayIdMap() {
+        return getConfigOrCreate().getInitialReplayIdMap();
+    }
+
+    /**
+     * Replay IDs to start from per channel name.
+     * @param initialReplayIdMap
+     */
+    public void setInitialReplayIdMap(Map<String, Integer> initialReplayIdMap) {
+        getConfigOrCreate().setInitialReplayIdMap(initialReplayIdMap);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentConfiguration.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentConfiguration.java
index 0c1dcea..18894b7 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentConfiguration.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentConfiguration.java
@@ -18,8 +18,15 @@ package org.apache.camel.component.salesforce.springboot;
 
 import java.util.Map;
 import java.util.Set;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.camel.component.salesforce.SalesforceEndpointConfig;
+import org.apache.camel.component.salesforce.SalesforceHttpClient;
 import org.apache.camel.component.salesforce.SalesforceLoginConfig;
+import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata;
+import org.apache.camel.component.salesforce.api.dto.bulk.ContentType;
+import org.apache.camel.component.salesforce.internal.PayloadFormat;
+import org.apache.camel.component.salesforce.internal.dto.NotifyForFieldsEnum;
+import org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
@@ -33,11 +40,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class SalesforceComponentConfiguration {
 
     /**
-     * To use the shared SalesforceLoginConfig as login configuration
+     * To use the shared SalesforceLoginConfig as login configuration.
+     * Properties of the shared configuration can also be set individually.
      */
     private SalesforceLoginConfig loginConfig;
     /**
-     * To use the shared SalesforceLoginConfig as configuration
+     * To use the shared SalesforceEndpointConfig as configuration. Properties
+     * of the shared configuration can also be set individually.
      */
     private SalesforceEndpointConfig config;
     /**
@@ -97,6 +106,169 @@ public class SalesforceComponentConfiguration {
      * by comma).
      */
     private String[] packages;
+    /**
+     * Salesforce login URL defaults to https://login.salesforce.com
+     */
+    private String loginUrl;
+    /**
+     * Salesforce connected application Consumer Key
+     */
+    private String clientId;
+    /**
+     * Salesforce connected application Consumer Secret
+     */
+    private String clientSecret;
+    /**
+     * Salesforce account user name
+     */
+    private String userName;
+    /**
+     * Salesforce account password
+     */
+    private String password;
+    /**
+     * Flag to enable/disable lazy OAuth default is false. When enabled OAuth
+     * token retrieval or generation is not done until the first API call
+     */
+    private Boolean lazyLogin = false;
+    /**
+     * Payload format to use for Salesforce API calls either JSON or XML
+     * defaults to JSON
+     */
+    private PayloadFormat format;
+    /**
+     * Salesforce API version defaults to
+     * SalesforceEndpointConfig.DEFAULT_VERSION
+     */
+    private String apiVersion;
+    /**
+     * SObject name if required or supported by API
+     */
+    private String sObjectName;
+    /**
+     * SObject ID if required by API
+     */
+    private String sObjectId;
+    /**
+     * SObject fields to retrieve
+     */
+    private String sObjectFields;
+    /**
+     * SObject external ID field name
+     */
+    private String sObjectIdName;
+    /**
+     * SObject external ID field value
+     */
+    private String sObjectIdValue;
+    /**
+     * SObject blob field name
+     */
+    private String sObjectBlobFieldName;
+    /**
+     * Fully qualified SObject class name usually generated using
+     * camel-salesforce-maven-plugin
+     */
+    private String sObjectClass;
+    /**
+     * Salesforce SOQL query string
+     */
+    private String sObjectQuery;
+    /**
+     * Salesforce SOSL search string
+     */
+    private String sObjectSearch;
+    /**
+     * APEX method name
+     */
+    private String apexMethod;
+    /**
+     * APEX method URL
+     */
+    private String apexUrl;
+    /**
+     * Query params for APEX method
+     */
+    private Map<String, Object> apexQueryParams;
+    /**
+     * Bulk API content type one of XML CSV ZIP_XML ZIP_CSV
+     */
+    private ContentType contentType;
+    /**
+     * Bulk API Job ID
+     */
+    private String jobId;
+    /**
+     * Bulk API Batch ID
+     */
+    private String batchId;
+    /**
+     * Bulk API Result ID
+     */
+    private String resultId;
+    /**
+     * Whether to update an existing Push Topic when using the Streaming API
+     * defaults to false
+     */
+    private Boolean updateTopic = false;
+    /**
+     * Notify for fields options are ALL REFERENCED SELECT WHERE
+     */
+    private NotifyForFieldsEnum notifyForFields;
+    /**
+     * Notify for operations options are ALL CREATE EXTENDED UPDATE (API version
+     * 29.0)
+     */
+    private NotifyForOperationsEnum notifyForOperations;
+    /**
+     * Notify for create operation defaults to false (API version = 29.0)
+     */
+    private Boolean notifyForOperationCreate;
+    /**
+     * Notify for update operation defaults to false (API version = 29.0)
+     */
+    private Boolean notifyForOperationUpdate;
+    /**
+     * Notify for delete operation defaults to false (API version = 29.0)
+     */
+    private Boolean notifyForOperationDelete;
+    /**
+     * Notify for un-delete operation defaults to false (API version = 29.0)
+     */
+    private Boolean notifyForOperationUndelete;
+    /**
+     * Salesforce1 Analytics report Id
+     */
+    private String reportId;
+    /**
+     * Include details in Salesforce1 Analytics report defaults to false.
+     */
+    private Boolean includeDetails;
+    /**
+     * Salesforce1 Analytics report metadata for filtering
+     */
+    private ReportMetadata reportMetadata;
+    /**
+     * Salesforce1 Analytics report execution instance ID
+     */
+    private String instanceId;
+    /**
+     * Custom Jetty Http Client to use to connect to Salesforce.
+     */
+    private SalesforceHttpClient httpClient;
+    /**
+     * Custom Jackson ObjectMapper to use when serializing/deserializing
+     * Salesforce objects.
+     */
+    private ObjectMapper objectMapper;
+    /**
+     * Default replayId setting if no value is found in link initialReplayIdMap
+     */
+    private Integer defaultReplayId;
+    /**
+     * Replay IDs to start from per channel name.
+     */
+    private Map<String, Integer> initialReplayIdMap;
 
     public SalesforceLoginConfig getLoginConfig() {
         return loginConfig;
@@ -228,4 +400,317 @@ public class SalesforceComponentConfiguration {
     public void setPackages(String[] packages) {
         this.packages = packages;
     }
+
+    public String getLoginUrl() {
+        return loginUrl;
+    }
+
+    public void setLoginUrl(String loginUrl) {
+        this.loginUrl = loginUrl;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public Boolean getLazyLogin() {
+        return lazyLogin;
+    }
+
+    public void setLazyLogin(Boolean lazyLogin) {
+        this.lazyLogin = lazyLogin;
+    }
+
+    public PayloadFormat getFormat() {
+        return format;
+    }
+
+    public void setFormat(PayloadFormat format) {
+        this.format = format;
+    }
+
+    public String getApiVersion() {
+        return apiVersion;
+    }
+
+    public void setApiVersion(String apiVersion) {
+        this.apiVersion = apiVersion;
+    }
+
+    public String getSObjectName() {
+        return sObjectName;
+    }
+
+    public void setSObjectName(String sObjectName) {
+        this.sObjectName = sObjectName;
+    }
+
+    public String getSObjectId() {
+        return sObjectId;
+    }
+
+    public void setSObjectId(String sObjectId) {
+        this.sObjectId = sObjectId;
+    }
+
+    public String getSObjectFields() {
+        return sObjectFields;
+    }
+
+    public void setSObjectFields(String sObjectFields) {
+        this.sObjectFields = sObjectFields;
+    }
+
+    public String getSObjectIdName() {
+        return sObjectIdName;
+    }
+
+    public void setSObjectIdName(String sObjectIdName) {
+        this.sObjectIdName = sObjectIdName;
+    }
+
+    public String getSObjectIdValue() {
+        return sObjectIdValue;
+    }
+
+    public void setSObjectIdValue(String sObjectIdValue) {
+        this.sObjectIdValue = sObjectIdValue;
+    }
+
+    public String getSObjectBlobFieldName() {
+        return sObjectBlobFieldName;
+    }
+
+    public void setSObjectBlobFieldName(String sObjectBlobFieldName) {
+        this.sObjectBlobFieldName = sObjectBlobFieldName;
+    }
+
+    public String getSObjectClass() {
+        return sObjectClass;
+    }
+
+    public void setSObjectClass(String sObjectClass) {
+        this.sObjectClass = sObjectClass;
+    }
+
+    public String getSObjectQuery() {
+        return sObjectQuery;
+    }
+
+    public void setSObjectQuery(String sObjectQuery) {
+        this.sObjectQuery = sObjectQuery;
+    }
+
+    public String getSObjectSearch() {
+        return sObjectSearch;
+    }
+
+    public void setSObjectSearch(String sObjectSearch) {
+        this.sObjectSearch = sObjectSearch;
+    }
+
+    public String getApexMethod() {
+        return apexMethod;
+    }
+
+    public void setApexMethod(String apexMethod) {
+        this.apexMethod = apexMethod;
+    }
+
+    public String getApexUrl() {
+        return apexUrl;
+    }
+
+    public void setApexUrl(String apexUrl) {
+        this.apexUrl = apexUrl;
+    }
+
+    public Map<String, Object> getApexQueryParams() {
+        return apexQueryParams;
+    }
+
+    public void setApexQueryParams(Map<String, Object> apexQueryParams) {
+        this.apexQueryParams = apexQueryParams;
+    }
+
+    public ContentType getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(ContentType contentType) {
+        this.contentType = contentType;
+    }
+
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    public String getBatchId() {
+        return batchId;
+    }
+
+    public void setBatchId(String batchId) {
+        this.batchId = batchId;
+    }
+
+    public String getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(String resultId) {
+        this.resultId = resultId;
+    }
+
+    public Boolean getUpdateTopic() {
+        return updateTopic;
+    }
+
+    public void setUpdateTopic(Boolean updateTopic) {
+        this.updateTopic = updateTopic;
+    }
+
+    public NotifyForFieldsEnum getNotifyForFields() {
+        return notifyForFields;
+    }
+
+    public void setNotifyForFields(NotifyForFieldsEnum notifyForFields) {
+        this.notifyForFields = notifyForFields;
+    }
+
+    public NotifyForOperationsEnum getNotifyForOperations() {
+        return notifyForOperations;
+    }
+
+    public void setNotifyForOperations(
+            NotifyForOperationsEnum notifyForOperations) {
+        this.notifyForOperations = notifyForOperations;
+    }
+
+    public Boolean getNotifyForOperationCreate() {
+        return notifyForOperationCreate;
+    }
+
+    public void setNotifyForOperationCreate(Boolean notifyForOperationCreate) {
+        this.notifyForOperationCreate = notifyForOperationCreate;
+    }
+
+    public Boolean getNotifyForOperationUpdate() {
+        return notifyForOperationUpdate;
+    }
+
+    public void setNotifyForOperationUpdate(Boolean notifyForOperationUpdate) {
+        this.notifyForOperationUpdate = notifyForOperationUpdate;
+    }
+
+    public Boolean getNotifyForOperationDelete() {
+        return notifyForOperationDelete;
+    }
+
+    public void setNotifyForOperationDelete(Boolean notifyForOperationDelete) {
+        this.notifyForOperationDelete = notifyForOperationDelete;
+    }
+
+    public Boolean getNotifyForOperationUndelete() {
+        return notifyForOperationUndelete;
+    }
+
+    public void setNotifyForOperationUndelete(Boolean notifyForOperationUndelete) {
+        this.notifyForOperationUndelete = notifyForOperationUndelete;
+    }
+
+    public String getReportId() {
+        return reportId;
+    }
+
+    public void setReportId(String reportId) {
+        this.reportId = reportId;
+    }
+
+    public Boolean getIncludeDetails() {
+        return includeDetails;
+    }
+
+    public void setIncludeDetails(Boolean includeDetails) {
+        this.includeDetails = includeDetails;
+    }
+
+    public ReportMetadata getReportMetadata() {
+        return reportMetadata;
+    }
+
+    public void setReportMetadata(ReportMetadata reportMetadata) {
+        this.reportMetadata = reportMetadata;
+    }
+
+    public String getInstanceId() {
+        return instanceId;
+    }
+
+    public void setInstanceId(String instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    public SalesforceHttpClient getHttpClient() {
+        return httpClient;
+    }
+
+    public void setHttpClient(SalesforceHttpClient httpClient) {
+        this.httpClient = httpClient;
+    }
+
+    public ObjectMapper getObjectMapper() {
+        return objectMapper;
+    }
+
+    public void setObjectMapper(ObjectMapper objectMapper) {
+        this.objectMapper = objectMapper;
+    }
+
+    public Integer getDefaultReplayId() {
+        return defaultReplayId;
+    }
+
+    public void setDefaultReplayId(Integer defaultReplayId) {
+        this.defaultReplayId = defaultReplayId;
+    }
+
+    public Map<String, Integer> getInitialReplayIdMap() {
+        return initialReplayIdMap;
+    }
+
+    public void setInitialReplayIdMap(Map<String, Integer> initialReplayIdMap) {
+        this.initialReplayIdMap = initialReplayIdMap;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-smpp/src/main/docs/smpp.adoc
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/docs/smpp.adoc b/components/camel-smpp/src/main/docs/smpp.adoc
index eeaac2c..c2018da 100644
--- a/components/camel-smpp/src/main/docs/smpp.adoc
+++ b/components/camel-smpp/src/main/docs/smpp.adoc
@@ -176,8 +176,9 @@ URI Options
 ^^^^^^^^^^^
 
 
+
 // component options: START
-The SMPP component supports 1 options which are listed below.
+The SMPP component supports 36 options which are listed below.
 
 
 
@@ -185,13 +186,49 @@ The SMPP component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | SmppConfiguration | To use the shared SmppConfiguration as configuration.
+| configuration | SmppConfiguration | To use the shared SmppConfiguration as configuration. Properties of the shared configuration can also be set individually.
+| host | String | Hostname for the SMSC server to use.
+| port | Integer | Port number for the SMSC server to use.
+| systemId | String | The system id (username) for connecting to SMSC server.
+| dataCoding | byte | Defines the data coding according the SMPP 3.4 specification section 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1 (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646) 13: Extended Kanji JIS(X 0212-1990)
+| alphabet | byte | Defines encoding of data according the SMPP 3.4 specification section 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet
+| encoding | String | Defines the encoding scheme of the short message user data. Only for SubmitSm ReplaceSm and SubmitMulti.
+| password | String | The password for connecting to SMSC server.
+| enquireLinkTimer | Integer | Defines the interval in milliseconds between the confidence checks. The confidence check is used to test the communication path between an ESME and an SMSC.
+| transactionTimer | Integer | Defines the maximum period of inactivity allowed after a transaction after which an SMPP entity may assume that the session is no longer active. This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME).
+| systemType | String | This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters).
+| registeredDelivery | byte | Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined: 0: No SMSC delivery receipt requested. 1: SMSC delivery receipt requested where final delivery outcome is success or failure. 2: SMSC delivery receipt requested where the final delivery outcome is delivery failure.
+| serviceType | String | The service type parameter can be used to indicate the SMS Application service associated with the message. The following generic service_types are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol USSD: Unstructured Supplementary Services Data
+| sourceAddrTon | byte | Defines the type of number (TON) to be used in the SME originator address parameters. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated
+| destAddrTon | byte | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm SubmitMulti CancelSm and DataSm. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated
+| sourceAddrNpi | byte | Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum)
+| destAddrNpi | byte | Defines the type of number (TON) to be used in the SME destination address parameters. Only for SubmitSm SubmitMulti CancelSm and DataSm. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum)
+| protocolId | byte | The protocol id
+| priorityFlag | byte | Allows the originating SME to assign a priority level to the short message. Only for SubmitSm and SubmitMulti. Four Priority Levels are supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2 priority 3: Level 3 (highest) priority
+| replaceIfPresentFlag | byte | Used to request the SMSC to replace a previously submitted message that is still pending delivery. The SMSC will replace an existing message provided that the source address destination address and service type match the same fields in the new message. The following replace if present flag values are defined: 0: Don't replace 1: Replace
+| sourceAddr | String | Defines the address of SME (Short Message Entity) which originated this message.
+| destAddr | String | Defines the destination SME address. For mobile terminated messages this is the directory number of the recipient MS. Only for SubmitSm SubmitMulti CancelSm and DataSm.
+| typeOfNumber | byte | Defines the type of number (TON) to be used in the SME. The following TON values are defined: 0: Unknown 1: International 2: National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated
+| numberingPlanIndicator | byte | Defines the numeric plan indicator (NPI) to be used in the SME. The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum)
+| usingSSL | boolean | Whether using SSL with the smpps protocol
+| initialReconnectDelay | long | Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC after the connection was lost.
+| reconnectDelay | long | Defines the interval in milliseconds between the reconnect attempts if the connection to the SMSC was lost and the previous was not succeed.
+| lazySessionCreation | boolean | Sessions can be lazily created to avoid exceptions if the SMSC is not available when the Camel producer is started. Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange. If they are present Camel will use these data to connect to the SMSC.
+| httpProxyHost | String | If you need to tunnel SMPP through a HTTP proxy set this attribute to the hostname or ip address of your HTTP proxy.
+| httpProxyPort | Integer | If you need to tunnel SMPP through a HTTP proxy set this attribute to the port of your HTTP proxy.
+| httpProxyUsername | String | If your HTTP proxy requires basic authentication set this attribute to the username required for your HTTP proxy.
+| httpProxyPassword | String | If your HTTP proxy requires basic authentication set this attribute to the password required for your HTTP proxy.
+| sessionStateListener | SessionStateListener | You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed.
+| addressRange | String | You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range.
+| splittingPolicy | SmppSplittingPolicy | You can specify a policy for handling long messages: ALLOW - the default long messages are split to 140 bytes per message TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC. Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered. REJECT - if a message would need to be split it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long.
+| proxyHeaders | Map | These headers will be passed to the proxy server while establishing the connection.
 |=======================================================================
 {% endraw %}
 // component options: END
 
 
 
+
 // endpoint options: START
 The SMPP component supports 39 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
index 6a8eb43..996da53 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/SmppComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
+import org.jsmpp.session.SessionStateListener;
 
 /**
  * @version 
@@ -89,9 +90,563 @@ public class SmppComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the shared SmppConfiguration as configuration.
+     * To use the shared SmppConfiguration as configuration. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(SmppConfiguration configuration) {
         this.configuration = configuration;
     }
+
+
+    private SmppConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new SmppConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public String getHost() {
+        return getConfigurationOrCreate().getHost();
+    }
+
+    /**
+     * Hostname for the SMSC server to use.
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfigurationOrCreate().setHost(host);
+    }
+
+    public Integer getPort() {
+        return getConfigurationOrCreate().getPort();
+    }
+
+    /**
+     * Port number for the SMSC server to use.
+     * @param port
+     */
+    public void setPort(Integer port) {
+        getConfigurationOrCreate().setPort(port);
+    }
+
+    public String getSystemId() {
+        return getConfigurationOrCreate().getSystemId();
+    }
+
+    /**
+     * The system id (username) for connecting to SMSC server.
+     * @param systemId
+     */
+    public void setSystemId(String systemId) {
+        getConfigurationOrCreate().setSystemId(systemId);
+    }
+
+    /**
+     * The password for connecting to SMSC server.
+     */
+    public String getPassword() {
+        return getConfigurationOrCreate().getPassword();
+    }
+
+    public byte getDataCoding() {
+        return getConfigurationOrCreate().getDataCoding();
+    }
+
+    /**
+     * Defines the data coding according the SMPP 3.4 specification, section 5.2.19.
+     * Example data encodings are:
+     * <ul>
+     *     <li>0: SMSC Default Alphabet</li>
+     *     <li>3: Latin 1 (ISO-8859-1)</li>
+     *     <li>4: Octet unspecified (8-bit binary)</li>
+     *     <li>8: UCS2 (ISO/IEC-10646)</li>
+     *     <li>13: Extended Kanji JIS(X 0212-1990)</li>
+     * </ul>
+     * @param dataCoding
+     */
+    public void setDataCoding(byte dataCoding) {
+        getConfigurationOrCreate().setDataCoding(dataCoding);
+    }
+
+    public byte getAlphabet() {
+        return getConfigurationOrCreate().getAlphabet();
+    }
+
+    /**
+     * Defines encoding of data according the SMPP 3.4 specification, section 5.2.19.
+     * <ul>
+     *     <li>0: SMSC Default Alphabet
+     *     <li>4: 8 bit Alphabet</li>
+     *     <li>8: UCS2 Alphabet</li></li>
+     * </ul>
+     * @param alphabet
+     */
+    public void setAlphabet(byte alphabet) {
+        getConfigurationOrCreate().setAlphabet(alphabet);
+    }
+
+    public String getEncoding() {
+        return getConfigurationOrCreate().getEncoding();
+    }
+
+    /**
+     * Defines the encoding scheme of the short message user data.
+     * Only for SubmitSm, ReplaceSm and SubmitMulti.
+     * @param encoding
+     */
+    public void setEncoding(String encoding) {
+        getConfigurationOrCreate().setEncoding(encoding);
+    }
+
+    public void setPassword(String password) {
+        getConfigurationOrCreate().setPassword(password);
+    }
+
+    public Integer getEnquireLinkTimer() {
+        return getConfigurationOrCreate().getEnquireLinkTimer();
+    }
+
+    /**
+     * Defines the interval in milliseconds between the confidence checks.
+     * The confidence check is used to test the communication path between an ESME and an SMSC.
+     * @param enquireLinkTimer
+     */
+    public void setEnquireLinkTimer(Integer enquireLinkTimer) {
+        getConfigurationOrCreate().setEnquireLinkTimer(enquireLinkTimer);
+    }
+
+    public Integer getTransactionTimer() {
+        return getConfigurationOrCreate().getTransactionTimer();
+    }
+
+    /**
+     * Defines the maximum period of inactivity allowed after a transaction, after which
+     * an SMPP entity may assume that the session is no longer active.
+     * This timer may be active on either communicating SMPP entity (i.e. SMSC or ESME).
+     * @param transactionTimer
+     */
+    public void setTransactionTimer(Integer transactionTimer) {
+        getConfigurationOrCreate().setTransactionTimer(transactionTimer);
+    }
+
+    public String getSystemType() {
+        return getConfigurationOrCreate().getSystemType();
+    }
+
+    /**
+     * This parameter is used to categorize the type of ESME (External Short Message Entity) that is binding to the SMSC (max. 13 characters).
+     * @param systemType
+     */
+    public void setSystemType(String systemType) {
+        getConfigurationOrCreate().setSystemType(systemType);
+    }
+
+    public byte getRegisteredDelivery() {
+        return getConfigurationOrCreate().getRegisteredDelivery();
+    }
+
+    /**
+     * Is used to request an SMSC delivery receipt and/or SME originated acknowledgements. The following values are defined:
+     * <ul>
+     *     <li>0: No SMSC delivery receipt requested.</li>
+     *     <li>1: SMSC delivery receipt requested where final delivery outcome is success or failure.</li>
+     *     <li>2: SMSC delivery receipt requested where the final delivery outcome is delivery failure.</li>
+     * </ul>
+     * @param registeredDelivery
+     */
+    public void setRegisteredDelivery(byte registeredDelivery) {
+        getConfigurationOrCreate().setRegisteredDelivery(registeredDelivery);
+    }
+
+    public String getServiceType() {
+        return getConfigurationOrCreate().getServiceType();
+    }
+
+    /**
+     * The service type parameter can be used to indicate the SMS Application service associated with the message.
+     * The following generic service_types are defined:
+     * <ul>
+     *     <li>CMT: Cellular Messaging</li>
+     *     <li>CPT: Cellular Paging</li>
+     *     <li>VMN: Voice Mail Notification</li>
+     *     <li>VMA: Voice Mail Alerting</li>
+     *     <li>WAP: Wireless Application Protocol</li>
+     *     <li>USSD: Unstructured Supplementary Services Data</li>
+     * </ul>
+     * @param serviceType
+     */
+    public void setServiceType(String serviceType) {
+        getConfigurationOrCreate().setServiceType(serviceType);
+    }
+
+    public byte getSourceAddrTon() {
+        return getConfigurationOrCreate().getSourceAddrTon();
+    }
+
+    /**
+     * Defines the type of number (TON) to be used in the SME originator address parameters.
+     * The following TON values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: International</li>
+     *     <li>2: National</li>
+     *     <li>3: Network Specific</li>
+     *     <li>4: Subscriber Number</li>
+     *     <li>5: Alphanumeric</li>
+     *     <li>6: Abbreviated</li>
+     * </ul>
+     * @param sourceAddrTon
+     */
+    public void setSourceAddrTon(byte sourceAddrTon) {
+        getConfigurationOrCreate().setSourceAddrTon(sourceAddrTon);
+    }
+
+    public byte getDestAddrTon() {
+        return getConfigurationOrCreate().getDestAddrTon();
+    }
+
+    /**
+     * Defines the type of number (TON) to be used in the SME destination address parameters.
+     * Only for SubmitSm, SubmitMulti, CancelSm and DataSm.
+     * The following TON values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: International</li>
+     *     <li>2: National</li>
+     *     <li>3: Network Specific</li>
+     *     <li>4: Subscriber Number</li>
+     *     <li>5: Alphanumeric</li>
+     *     <li>6: Abbreviated</li>
+     * </ul>
+     * @param destAddrTon
+     */
+    public void setDestAddrTon(byte destAddrTon) {
+        getConfigurationOrCreate().setDestAddrTon(destAddrTon);
+    }
+
+    public byte getSourceAddrNpi() {
+        return getConfigurationOrCreate().getSourceAddrNpi();
+    }
+
+    /**
+     * Defines the numeric plan indicator (NPI) to be used in the SME originator address parameters.
+     * The following NPI values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: ISDN (E163/E164)</li>
+     *     <li>2: Data (X.121)</li>
+     *     <li>3: Telex (F.69)</li>
+     *     <li>6: Land Mobile (E.212)</li>
+     *     <li>8: National</li>
+     *     <li>9: Private</li>
+     *     <li>10: ERMES</li>
+     *     <li>13: Internet (IP)</li>
+     *     <li>18: WAP Client Id (to be defined by WAP Forum)</li>
+     * </ul>
+     * @param sourceAddrNpi
+     */
+    public void setSourceAddrNpi(byte sourceAddrNpi) {
+        getConfigurationOrCreate().setSourceAddrNpi(sourceAddrNpi);
+    }
+
+    public byte getDestAddrNpi() {
+        return getConfigurationOrCreate().getDestAddrNpi();
+    }
+
+    /**
+     * Defines the type of number (TON) to be used in the SME destination address parameters.
+     * Only for SubmitSm, SubmitMulti, CancelSm and DataSm.
+     * The following NPI values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: ISDN (E163/E164)</li>
+     *     <li>2: Data (X.121)</li>
+     *     <li>3: Telex (F.69)</li>
+     *     <li>6: Land Mobile (E.212)</li>
+     *     <li>8: National</li>
+     *     <li>9: Private</li>
+     *     <li>10: ERMES</li>
+     *     <li>13: Internet (IP)</li>
+     *     <li>18: WAP Client Id (to be defined by WAP Forum)</li>
+     * </ul>
+     * @param destAddrNpi
+     */
+    public void setDestAddrNpi(byte destAddrNpi) {
+        getConfigurationOrCreate().setDestAddrNpi(destAddrNpi);
+    }
+
+    public byte getProtocolId() {
+        return getConfigurationOrCreate().getProtocolId();
+    }
+
+    /**
+     * The protocol id
+     * @param protocolId
+     */
+    public void setProtocolId(byte protocolId) {
+        getConfigurationOrCreate().setProtocolId(protocolId);
+    }
+
+    public byte getPriorityFlag() {
+        return getConfigurationOrCreate().getPriorityFlag();
+    }
+
+    /**
+     * Allows the originating SME to assign a priority level to the short message.
+     * Only for SubmitSm and SubmitMulti.
+     * Four Priority Levels are supported:
+     * <ul>
+     *     <li>0: Level 0 (lowest) priority</li>
+     *     <li>1: Level 1 priority</li>
+     *     <li>2: Level 2 priority</li>
+     *     <li>3: Level 3 (highest) priority</li>
+     * </ul>
+     * @param priorityFlag
+     */
+    public void setPriorityFlag(byte priorityFlag) {
+        getConfigurationOrCreate().setPriorityFlag(priorityFlag);
+    }
+
+    public byte getReplaceIfPresentFlag() {
+        return getConfigurationOrCreate().getReplaceIfPresentFlag();
+    }
+
+    /**
+     * Used to request the SMSC to replace a previously submitted message, that is still pending delivery.
+     * The SMSC will replace an existing message provided that the source address, destination address and service
+     * type match the same fields in the new message.
+     * The following replace if present flag values are defined:
+     * <ul>
+     *     <li>0: Don't replace</li>
+     *     <li>1: Replace</li>
+     * </ul>
+     * @param replaceIfPresentFlag
+     */
+    public void setReplaceIfPresentFlag(byte replaceIfPresentFlag) {
+        getConfigurationOrCreate().setReplaceIfPresentFlag(replaceIfPresentFlag);
+    }
+
+    public String getSourceAddr() {
+        return getConfigurationOrCreate().getSourceAddr();
+    }
+
+    /**
+     * Defines the address of SME (Short Message Entity) which originated this message.
+     * @param sourceAddr
+     */
+    public void setSourceAddr(String sourceAddr) {
+        getConfigurationOrCreate().setSourceAddr(sourceAddr);
+    }
+
+    public String getDestAddr() {
+        return getConfigurationOrCreate().getDestAddr();
+    }
+
+    /**
+     * Defines the destination SME address. For mobile terminated messages, this is the directory number of the recipient MS.
+     * Only for SubmitSm, SubmitMulti, CancelSm and DataSm.
+     * @param destAddr
+     */
+    public void setDestAddr(String destAddr) {
+        getConfigurationOrCreate().setDestAddr(destAddr);
+    }
+
+    public byte getTypeOfNumber() {
+        return getConfigurationOrCreate().getTypeOfNumber();
+    }
+
+    /**
+     * Defines the type of number (TON) to be used in the SME.
+     * The following TON values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: International</li>
+     *     <li>2: National</li>
+     *     <li>3: Network Specific</li>
+     *     <li>4: Subscriber Number</li>
+     *     <li>5: Alphanumeric</li>
+     *     <li>6: Abbreviated</li>
+     * </ul>
+     * @param typeOfNumber
+     */
+    public void setTypeOfNumber(byte typeOfNumber) {
+        getConfigurationOrCreate().setTypeOfNumber(typeOfNumber);
+    }
+
+    public byte getNumberingPlanIndicator() {
+        return getConfigurationOrCreate().getNumberingPlanIndicator();
+    }
+
+    /**
+     * Defines the numeric plan indicator (NPI) to be used in the SME.
+     * The following NPI values are defined:
+     * <ul>
+     *     <li>0: Unknown</li>
+     *     <li>1: ISDN (E163/E164)</li>
+     *     <li>2: Data (X.121)</li>
+     *     <li>3: Telex (F.69)</li>
+     *     <li>6: Land Mobile (E.212)</li>
+     *     <li>8: National</li>
+     *     <li>9: Private</li>
+     *     <li>10: ERMES</li>
+     *     <li>13: Internet (IP)</li>
+     *     <li>18: WAP Client Id (to be defined by WAP Forum)</li>
+     * </ul>
+     * @param numberingPlanIndicator
+     */
+    public void setNumberingPlanIndicator(byte numberingPlanIndicator) {
+        getConfigurationOrCreate().setNumberingPlanIndicator(numberingPlanIndicator);
+    }
+
+    public boolean getUsingSSL() {
+        return getConfigurationOrCreate().getUsingSSL();
+    }
+
+    /**
+     * Whether using SSL with the smpps protocol
+     * @param usingSSL
+     */
+    public void setUsingSSL(boolean usingSSL) {
+        getConfigurationOrCreate().setUsingSSL(usingSSL);
+    }
+
+    public long getInitialReconnectDelay() {
+        return getConfigurationOrCreate().getInitialReconnectDelay();
+    }
+
+    /**
+     * Defines the initial delay in milliseconds after the consumer/producer tries to reconnect to the SMSC, after the connection was lost.
+     * @param initialReconnectDelay
+     */
+    public void setInitialReconnectDelay(long initialReconnectDelay) {
+        getConfigurationOrCreate().setInitialReconnectDelay(initialReconnectDelay);
+    }
+
+    public long getReconnectDelay() {
+        return getConfigurationOrCreate().getReconnectDelay();
+    }
+
+    /**
+     * Defines the interval in milliseconds between the reconnect attempts, if the connection to the SMSC was lost and the previous was not succeed.
+     * @param reconnectDelay
+     */
+    public void setReconnectDelay(long reconnectDelay) {
+        getConfigurationOrCreate().setReconnectDelay(reconnectDelay);
+    }
+
+    public boolean isLazySessionCreation() {
+        return getConfigurationOrCreate().isLazySessionCreation();
+    }
+
+    /**
+     * Sessions can be lazily created to avoid exceptions, if the SMSC is not available when the Camel producer is started.
+     * Camel will check the in message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first exchange.
+     * If they are present, Camel will use these data to connect to the SMSC.
+     * @param lazySessionCreation
+     */
+    public void setLazySessionCreation(boolean lazySessionCreation) {
+        getConfigurationOrCreate().setLazySessionCreation(lazySessionCreation);
+    }
+
+    public String getHttpProxyHost() {
+        return getConfigurationOrCreate().getHttpProxyHost();
+    }
+
+    /**
+     * If you need to tunnel SMPP through a HTTP proxy, set this attribute to the hostname or ip address of your HTTP proxy.
+     * @param httpProxyHost
+     */
+    public void setHttpProxyHost(String httpProxyHost) {
+        getConfigurationOrCreate().setHttpProxyHost(httpProxyHost);
+    }
+
+    public Integer getHttpProxyPort() {
+        return getConfigurationOrCreate().getHttpProxyPort();
+    }
+
+    /**
+     * If you need to tunnel SMPP through a HTTP proxy, set this attribute to the port of your HTTP proxy.
+     * @param httpProxyPort
+     */
+    public void setHttpProxyPort(Integer httpProxyPort) {
+        getConfigurationOrCreate().setHttpProxyPort(httpProxyPort);
+    }
+
+    public String getHttpProxyUsername() {
+        return getConfigurationOrCreate().getHttpProxyUsername();
+    }
+
+    /**
+     * If your HTTP proxy requires basic authentication, set this attribute to the username required for your HTTP proxy.
+     * @param httpProxyUsername
+     */
+    public void setHttpProxyUsername(String httpProxyUsername) {
+        getConfigurationOrCreate().setHttpProxyUsername(httpProxyUsername);
+    }
+
+    public String getHttpProxyPassword() {
+        return getConfigurationOrCreate().getHttpProxyPassword();
+    }
+
+    /**
+     * If your HTTP proxy requires basic authentication, set this attribute to the password required for your HTTP proxy.
+     * @param httpProxyPassword
+     */
+    public void setHttpProxyPassword(String httpProxyPassword) {
+        getConfigurationOrCreate().setHttpProxyPassword(httpProxyPassword);
+    }
+
+    public SessionStateListener getSessionStateListener() {
+        return getConfigurationOrCreate().getSessionStateListener();
+    }
+
+    /**
+     * You can refer to a org.jsmpp.session.SessionStateListener in the Registry to receive callbacks when the session state changed.
+     * @param sessionStateListener
+     */
+    public void setSessionStateListener(SessionStateListener sessionStateListener) {
+        getConfigurationOrCreate().setSessionStateListener(sessionStateListener);
+    }
+
+    public String getAddressRange() {
+        return getConfigurationOrCreate().getAddressRange();
+    }
+
+    /**
+     *  You can specify the address range for the SmppConsumer as defined in section 5.2.7 of the SMPP 3.4 specification.
+     *  The SmppConsumer will receive messages only from SMSC's which target an address (MSISDN or IP address) within this range.
+     * @param addressRange
+     */
+    public void setAddressRange(String addressRange) {
+        getConfigurationOrCreate().setAddressRange(addressRange);
+    }
+
+    public SmppSplittingPolicy getSplittingPolicy() {
+        return getConfigurationOrCreate().getSplittingPolicy();
+    }
+
+    /**
+     * You can specify a policy for handling long messages:
+     * <ul>
+     *     <li>ALLOW - the default, long messages are split to 140 bytes per message</li>
+     *     <li>TRUNCATE - long messages are split and only the first fragment will be sent to the SMSC.
+     *     Some carriers drop subsequent fragments so this reduces load on the SMPP connection sending parts of a message that will never be delivered.</li>
+     *     <li>REJECT - if a message would need to be split, it is rejected with an SMPP NegativeResponseException and the reason code signifying the message is too long.</li>
+     * </ul>
+     * @param splittingPolicy
+     */
+    public void setSplittingPolicy(SmppSplittingPolicy splittingPolicy) {
+        getConfigurationOrCreate().setSplittingPolicy(splittingPolicy);
+    }
+
+    /**
+     * These headers will be passed to the proxy server while establishing the connection.
+     * @param proxyHeaders
+     */
+    public void setProxyHeaders(Map<String, String> proxyHeaders) {
+        getConfigurationOrCreate().setProxyHeaders(proxyHeaders);
+    }
+
+    public Map<String, String> getProxyHeaders() {
+        return getConfigurationOrCreate().getProxyHeaders();
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/springboot/SmppComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/springboot/SmppComponentConfiguration.java b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/springboot/SmppComponentConfiguration.java
index 066685d..e74b26a 100644
--- a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/springboot/SmppComponentConfiguration.java
+++ b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/springboot/SmppComponentConfiguration.java
@@ -16,7 +16,10 @@
  */
 package org.apache.camel.component.smpp.springboot;
 
+import java.util.Map;
 import org.apache.camel.component.smpp.SmppConfiguration;
+import org.apache.camel.component.smpp.SmppSplittingPolicy;
+import org.jsmpp.session.SessionStateListener;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +31,222 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class SmppComponentConfiguration {
 
     /**
-     * To use the shared SmppConfiguration as configuration.
+     * To use the shared SmppConfiguration as configuration. Properties of the
+     * shared configuration can also be set individually.
      */
     private SmppConfiguration configuration;
+    /**
+     * Hostname for the SMSC server to use.
+     */
+    private String host;
+    /**
+     * Port number for the SMSC server to use.
+     */
+    private Integer port;
+    /**
+     * The system id (username) for connecting to SMSC server.
+     */
+    private String systemId;
+    /**
+     * Defines the data coding according the SMPP 3.4 specification section
+     * 5.2.19. Example data encodings are: 0: SMSC Default Alphabet 3: Latin 1
+     * (ISO-8859-1) 4: Octet unspecified (8-bit binary) 8: UCS2 (ISO/IEC-10646)
+     * 13: Extended Kanji JIS(X 0212-1990)
+     */
+    private Byte dataCoding;
+    /**
+     * Defines encoding of data according the SMPP 3.4 specification section
+     * 5.2.19. 0: SMSC Default Alphabet 4: 8 bit Alphabet 8: UCS2 Alphabet
+     */
+    private Byte alphabet;
+    /**
+     * Defines the encoding scheme of the short message user data. Only for
+     * SubmitSm ReplaceSm and SubmitMulti.
+     */
+    private String encoding;
+    /**
+     * The password for connecting to SMSC server.
+     */
+    private String password;
+    /**
+     * Defines the interval in milliseconds between the confidence checks. The
+     * confidence check is used to test the communication path between an ESME
+     * and an SMSC.
+     */
+    private Integer enquireLinkTimer;
+    /**
+     * Defines the maximum period of inactivity allowed after a transaction
+     * after which an SMPP entity may assume that the session is no longer
+     * active. This timer may be active on either communicating SMPP entity
+     * (i.e. SMSC or ESME).
+     */
+    private Integer transactionTimer;
+    /**
+     * This parameter is used to categorize the type of ESME (External Short
+     * Message Entity) that is binding to the SMSC (max. 13 characters).
+     */
+    private String systemType;
+    /**
+     * Is used to request an SMSC delivery receipt and/or SME originated
+     * acknowledgements. The following values are defined: 0: No SMSC delivery
+     * receipt requested. 1: SMSC delivery receipt requested where final
+     * delivery outcome is success or failure. 2: SMSC delivery receipt
+     * requested where the final delivery outcome is delivery failure.
+     */
+    private Byte registeredDelivery;
+    /**
+     * The service type parameter can be used to indicate the SMS Application
+     * service associated with the message. The following generic service_types
+     * are defined: CMT: Cellular Messaging CPT: Cellular Paging VMN: Voice Mail
+     * Notification VMA: Voice Mail Alerting WAP: Wireless Application Protocol
+     * USSD: Unstructured Supplementary Services Data
+     */
+    private String serviceType;
+    /**
+     * Defines the type of number (TON) to be used in the SME originator address
+     * parameters. The following TON values are defined: 0: Unknown 1:
+     * International 2: National 3: Network Specific 4: Subscriber Number 5:
+     * Alphanumeric 6: Abbreviated
+     */
+    private Byte sourceAddrTon;
+    /**
+     * Defines the type of number (TON) to be used in the SME destination
+     * address parameters. Only for SubmitSm SubmitMulti CancelSm and DataSm.
+     * The following TON values are defined: 0: Unknown 1: International 2:
+     * National 3: Network Specific 4: Subscriber Number 5: Alphanumeric 6:
+     * Abbreviated
+     */
+    private Byte destAddrTon;
+    /**
+     * Defines the numeric plan indicator (NPI) to be used in the SME originator
+     * address parameters. The following NPI values are defined: 0: Unknown 1:
+     * ISDN (E163/E164) 2: Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212)
+     * 8: National 9: Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to
+     * be defined by WAP Forum)
+     */
+    private Byte sourceAddrNpi;
+    /**
+     * Defines the type of number (TON) to be used in the SME destination
+     * address parameters. Only for SubmitSm SubmitMulti CancelSm and DataSm.
+     * The following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2:
+     * Data (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9:
+     * Private 10: ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by
+     * WAP Forum)
+     */
+    private Byte destAddrNpi;
+    /**
+     * The protocol id
+     */
+    private Byte protocolId;
+    /**
+     * Allows the originating SME to assign a priority level to the short
+     * message. Only for SubmitSm and SubmitMulti. Four Priority Levels are
+     * supported: 0: Level 0 (lowest) priority 1: Level 1 priority 2: Level 2
+     * priority 3: Level 3 (highest) priority
+     */
+    private Byte priorityFlag;
+    /**
+     * Used to request the SMSC to replace a previously submitted message that
+     * is still pending delivery. The SMSC will replace an existing message
+     * provided that the source address destination address and service type
+     * match the same fields in the new message. The following replace if
+     * present flag values are defined: 0: Don't replace 1: Replace
+     */
+    private Byte replaceIfPresentFlag;
+    /**
+     * Defines the address of SME (Short Message Entity) which originated this
+     * message.
+     */
+    private String sourceAddr;
+    /**
+     * Defines the destination SME address. For mobile terminated messages this
+     * is the directory number of the recipient MS. Only for SubmitSm
+     * SubmitMulti CancelSm and DataSm.
+     */
+    private String destAddr;
+    /**
+     * Defines the type of number (TON) to be used in the SME. The following TON
+     * values are defined: 0: Unknown 1: International 2: National 3: Network
+     * Specific 4: Subscriber Number 5: Alphanumeric 6: Abbreviated
+     */
+    private Byte typeOfNumber;
+    /**
+     * Defines the numeric plan indicator (NPI) to be used in the SME. The
+     * following NPI values are defined: 0: Unknown 1: ISDN (E163/E164) 2: Data
+     * (X.121) 3: Telex (F.69) 6: Land Mobile (E.212) 8: National 9: Private 10:
+     * ERMES 13: Internet (IP) 18: WAP Client Id (to be defined by WAP Forum)
+     */
+    private Byte numberingPlanIndicator;
+    /**
+     * Whether using SSL with the smpps protocol
+     */
+    private Boolean usingSSL = false;
+    /**
+     * Defines the initial delay in milliseconds after the consumer/producer
+     * tries to reconnect to the SMSC after the connection was lost.
+     */
+    private long initialReconnectDelay;
+    /**
+     * Defines the interval in milliseconds between the reconnect attempts if
+     * the connection to the SMSC was lost and the previous was not succeed.
+     */
+    private long reconnectDelay;
+    /**
+     * Sessions can be lazily created to avoid exceptions if the SMSC is not
+     * available when the Camel producer is started. Camel will check the in
+     * message headers 'CamelSmppSystemId' and 'CamelSmppPassword' of the first
+     * exchange. If they are present Camel will use these data to connect to the
+     * SMSC.
+     */
+    private Boolean lazySessionCreation = false;
+    /**
+     * If you need to tunnel SMPP through a HTTP proxy set this attribute to the
+     * hostname or ip address of your HTTP proxy.
+     */
+    private String httpProxyHost;
+    /**
+     * If you need to tunnel SMPP through a HTTP proxy set this attribute to the
+     * port of your HTTP proxy.
+     */
+    private Integer httpProxyPort;
+    /**
+     * If your HTTP proxy requires basic authentication set this attribute to
+     * the username required for your HTTP proxy.
+     */
+    private String httpProxyUsername;
+    /**
+     * If your HTTP proxy requires basic authentication set this attribute to
+     * the password required for your HTTP proxy.
+     */
+    private String httpProxyPassword;
+    /**
+     * You can refer to a org.jsmpp.session.SessionStateListener in the Registry
+     * to receive callbacks when the session state changed.
+     */
+    private SessionStateListener sessionStateListener;
+    /**
+     * You can specify the address range for the SmppConsumer as defined in
+     * section 5.2.7 of the SMPP 3.4 specification. The SmppConsumer will
+     * receive messages only from SMSC's which target an address (MSISDN or IP
+     * address) within this range.
+     */
+    private String addressRange;
+    /**
+     * You can specify a policy for handling long messages: ALLOW - the default
+     * long messages are split to 140 bytes per message TRUNCATE - long messages
+     * are split and only the first fragment will be sent to the SMSC. Some
+     * carriers drop subsequent fragments so this reduces load on the SMPP
+     * connection sending parts of a message that will never be delivered.
+     * REJECT - if a message would need to be split it is rejected with an SMPP
+     * NegativeResponseException and the reason code signifying the message is
+     * too long.
+     */
+    private SmppSplittingPolicy splittingPolicy;
+    /**
+     * These headers will be passed to the proxy server while establishing the
+     * connection.
+     */
+    private Map<String, String> proxyHeaders;
 
     public SmppConfiguration getConfiguration() {
         return configuration;
@@ -39,4 +255,285 @@ public class SmppComponentConfiguration {
     public void setConfiguration(SmppConfiguration configuration) {
         this.configuration = configuration;
     }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getSystemId() {
+        return systemId;
+    }
+
+    public void setSystemId(String systemId) {
+        this.systemId = systemId;
+    }
+
+    public Byte getDataCoding() {
+        return dataCoding;
+    }
+
+    public void setDataCoding(Byte dataCoding) {
+        this.dataCoding = dataCoding;
+    }
+
+    public Byte getAlphabet() {
+        return alphabet;
+    }
+
+    public void setAlphabet(Byte alphabet) {
+        this.alphabet = alphabet;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public Integer getEnquireLinkTimer() {
+        return enquireLinkTimer;
+    }
+
+    public void setEnquireLinkTimer(Integer enquireLinkTimer) {
+        this.enquireLinkTimer = enquireLinkTimer;
+    }
+
+    public Integer getTransactionTimer() {
+        return transactionTimer;
+    }
+
+    public void setTransactionTimer(Integer transactionTimer) {
+        this.transactionTimer = transactionTimer;
+    }
+
+    public String getSystemType() {
+        return systemType;
+    }
+
+    public void setSystemType(String systemType) {
+        this.systemType = systemType;
+    }
+
+    public Byte getRegisteredDelivery() {
+        return registeredDelivery;
+    }
+
+    public void setRegisteredDelivery(Byte registeredDelivery) {
+        this.registeredDelivery = registeredDelivery;
+    }
+
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    public void setServiceType(String serviceType) {
+        this.serviceType = serviceType;
+    }
+
+    public Byte getSourceAddrTon() {
+        return sourceAddrTon;
+    }
+
+    public void setSourceAddrTon(Byte sourceAddrTon) {
+        this.sourceAddrTon = sourceAddrTon;
+    }
+
+    public Byte getDestAddrTon() {
+        return destAddrTon;
+    }
+
+    public void setDestAddrTon(Byte destAddrTon) {
+        this.destAddrTon = destAddrTon;
+    }
+
+    public Byte getSourceAddrNpi() {
+        return sourceAddrNpi;
+    }
+
+    public void setSourceAddrNpi(Byte sourceAddrNpi) {
+        this.sourceAddrNpi = sourceAddrNpi;
+    }
+
+    public Byte getDestAddrNpi() {
+        return destAddrNpi;
+    }
+
+    public void setDestAddrNpi(Byte destAddrNpi) {
+        this.destAddrNpi = destAddrNpi;
+    }
+
+    public Byte getProtocolId() {
+        return protocolId;
+    }
+
+    public void setProtocolId(Byte protocolId) {
+        this.protocolId = protocolId;
+    }
+
+    public Byte getPriorityFlag() {
+        return priorityFlag;
+    }
+
+    public void setPriorityFlag(Byte priorityFlag) {
+        this.priorityFlag = priorityFlag;
+    }
+
+    public Byte getReplaceIfPresentFlag() {
+        return replaceIfPresentFlag;
+    }
+
+    public void setReplaceIfPresentFlag(Byte replaceIfPresentFlag) {
+        this.replaceIfPresentFlag = replaceIfPresentFlag;
+    }
+
+    public String getSourceAddr() {
+        return sourceAddr;
+    }
+
+    public void setSourceAddr(String sourceAddr) {
+        this.sourceAddr = sourceAddr;
+    }
+
+    public String getDestAddr() {
+        return destAddr;
+    }
+
+    public void setDestAddr(String destAddr) {
+        this.destAddr = destAddr;
+    }
+
+    public Byte getTypeOfNumber() {
+        return typeOfNumber;
+    }
+
+    public void setTypeOfNumber(Byte typeOfNumber) {
+        this.typeOfNumber = typeOfNumber;
+    }
+
+    public Byte getNumberingPlanIndicator() {
+        return numberingPlanIndicator;
+    }
+
+    public void setNumberingPlanIndicator(Byte numberingPlanIndicator) {
+        this.numberingPlanIndicator = numberingPlanIndicator;
+    }
+
+    public Boolean getUsingSSL() {
+        return usingSSL;
+    }
+
+    public void setUsingSSL(Boolean usingSSL) {
+        this.usingSSL = usingSSL;
+    }
+
+    public long getInitialReconnectDelay() {
+        return initialReconnectDelay;
+    }
+
+    public void setInitialReconnectDelay(long initialReconnectDelay) {
+        this.initialReconnectDelay = initialReconnectDelay;
+    }
+
+    public long getReconnectDelay() {
+        return reconnectDelay;
+    }
+
+    public void setReconnectDelay(long reconnectDelay) {
+        this.reconnectDelay = reconnectDelay;
+    }
+
+    public Boolean getLazySessionCreation() {
+        return lazySessionCreation;
+    }
+
+    public void setLazySessionCreation(Boolean lazySessionCreation) {
+        this.lazySessionCreation = lazySessionCreation;
+    }
+
+    public String getHttpProxyHost() {
+        return httpProxyHost;
+    }
+
+    public void setHttpProxyHost(String httpProxyHost) {
+        this.httpProxyHost = httpProxyHost;
+    }
+
+    public Integer getHttpProxyPort() {
+        return httpProxyPort;
+    }
+
+    public void setHttpProxyPort(Integer httpProxyPort) {
+        this.httpProxyPort = httpProxyPort;
+    }
+
+    public String getHttpProxyUsername() {
+        return httpProxyUsername;
+    }
+
+    public void setHttpProxyUsername(String httpProxyUsername) {
+        this.httpProxyUsername = httpProxyUsername;
+    }
+
+    public String getHttpProxyPassword() {
+        return httpProxyPassword;
+    }
+
+    public void setHttpProxyPassword(String httpProxyPassword) {
+        this.httpProxyPassword = httpProxyPassword;
+    }
+
+    public SessionStateListener getSessionStateListener() {
+        return sessionStateListener;
+    }
+
+    public void setSessionStateListener(
+            SessionStateListener sessionStateListener) {
+        this.sessionStateListener = sessionStateListener;
+    }
+
+    public String getAddressRange() {
+        return addressRange;
+    }
+
+    public void setAddressRange(String addressRange) {
+        this.addressRange = addressRange;
+    }
+
+    public SmppSplittingPolicy getSplittingPolicy() {
+        return splittingPolicy;
+    }
+
+    public void setSplittingPolicy(SmppSplittingPolicy splittingPolicy) {
+        this.splittingPolicy = splittingPolicy;
+    }
+
+    public Map<String, String> getProxyHeaders() {
+        return proxyHeaders;
+    }
+
+    public void setProxyHeaders(Map<String, String> proxyHeaders) {
+        this.proxyHeaders = proxyHeaders;
+    }
 }
\ No newline at end of file


[06/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty4/src/main/docs/netty4.adoc
----------------------------------------------------------------------
diff --git a/components/camel-netty4/src/main/docs/netty4.adoc b/components/camel-netty4/src/main/docs/netty4.adoc
index b6bb378..d039a6e 100644
--- a/components/camel-netty4/src/main/docs/netty4.adoc
+++ b/components/camel-netty4/src/main/docs/netty4.adoc
@@ -56,8 +56,9 @@ Options
 
 
 
+
 // component options: START
-The Netty4 component supports 3 options which are listed below.
+The Netty4 component supports 69 options which are listed below.
 
 
 
@@ -66,8 +67,74 @@ The Netty4 component supports 3 options which are listed below.
 |=======================================================================
 | Name | Java Type | Description
 | maximumPoolSize | int | The thread pool size for the EventExecutorGroup if its in use. The default value is 16.
-| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints.
+| configuration | NettyConfiguration | To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
 | executorService | EventExecutorGroup | To use the given EventExecutorGroup
+| protocol | String | The protocol to use which can be tcp or udp.
+| host | String | The hostname. For the consumer the hostname is localhost or 0.0.0.0 For the producer the hostname is the remote host to connect to
+| port | int | The host port number
+| broadcast | boolean | Setting to choose Multicast over UDP
+| sendBufferSize | int | The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+| receiveBufferSize | int | The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+| receiveBufferSizePredictor | int | Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+| workerCount | int | When netty works on nio mode it uses default workerCount parameter from Netty which is cpu_core_threads2. User can use this operation to override the default workerCount from Netty
+| bossCount | int | When netty works on nio mode it uses default bossCount parameter from Netty which is 1. User can use this operation to override the default bossCount from Netty
+| keepAlive | boolean | Setting to ensure socket is not closed due to inactivity
+| tcpNoDelay | boolean | Setting to improve TCP protocol performance
+| reuseAddress | boolean | Setting to facilitate socket multiplexing
+| connectTimeout | int | Time to wait for a socket connection to be available. Value is in millis.
+| backlog | int | Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200 500 or 1000 tells the TCP stack how long the accept queue can be If this option is not configured then the backlog depends on OS setting.
+| ssl | boolean | Setting to specify whether SSL encryption is applied to this endpoint
+| sslClientCertHeaders | boolean | When enabled and in SSL mode then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name issuer name serial number and the valid date range.
+| sslHandler | SslHandler | Reference to a class that could be used to return an SSL Handler
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
+| needClientAuth | boolean | Configures whether the server needs client authentication when using SSL.
+| keyStoreResource | String | Client side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| trustStoreResource | String | Server side certificate keystore to be used for encryption. Is loaded by default from classpath but you can prefix with classpath: file: or http: to load the resource from different systems.
+| keyStoreFormat | String | Keystore format to be used for payload encryption. Defaults to JKS if not set
+| securityProvider | String | Security provider to be used for payload encryption. Defaults to SunX509 if not set.
+| passphrase | String | Password setting to use in order to encrypt/decrypt payloads sent using SSH
+| serverInitializerFactory | ServerInitializerFactory | To use a custom ServerInitializerFactory
+| nettyServerBootstrapFactory | NettyServerBootstrapFactory | To use a custom NettyServerBootstrapFactory
+| requestTimeout | long | Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+| sync | boolean | Setting to set endpoint as one-way or request-response
+| options | Map | Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.
+| textline | boolean | Only used for TCP. If no codec is specified you can use this flag to indicate a text line based codec; if not specified or the value is false then Object Serialization is assumed over TCP.
+| nativeTransport | boolean | Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: http://netty.io/wiki/native-transports.html
+| decoderMaxLineLength | int | The max line length to use for the textline codec.
+| bossGroup | EventLoopGroup | Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint
+| delimiter | TextLineDelimiter | The delimiter to use for the textline codec. Possible values are LINE and NULL.
+| autoAppendDelimiter | boolean | Whether or not to auto append missing end delimiter when sending using the textline codec.
+| workerGroup | EventLoopGroup | To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+| channelGroup | ChannelGroup | To use a explicit ChannelGroup.
+| encoding | String | The encoding (a charset name) to use for the textline codec. If not provided Camel will use the JVM default Charset.
+| networkInterface | String | When using UDP then this option can be used to specify a network interface by its name such as eth0 to join a multicast group.
+| decoders | List | A list of decoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| enabledProtocols | String | Which protocols to enable when using SSL
+| encoders | List | A list of encoders to be used. You can use a String which have values separated by comma and have the values be looked up in the Registry. Just remember to prefix the value with so Camel knows it should lookup.
+| reconnect | boolean | Used only in clientMode in consumer the consumer will attempt to reconnect on disconnection if this is enabled
+| encoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads.
+| reconnectInterval | int | Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection
+| decoder | ChannelHandler | A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads.
+| disconnect | boolean | Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+| lazyChannelCreation | boolean | Channels can be lazily created to avoid exceptions if the remote server is not up and running when the Camel producer is started.
+| transferExchange | boolean | Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body Out body fault body In headers Out headers fault headers exchange properties exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+| disconnectOnNoReply | boolean | If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+| noReplyLogLevel | LoggingLevel | If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+| serverExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an exception then its logged using this logging level.
+| serverClosedChannelExceptionCaughtLogLevel | LoggingLevel | If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+| allowDefaultCodec | boolean | The netty component installs a default codec if both encoder/deocder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+| clientInitializerFactory | ClientInitializerFactory | To use a custom ClientInitializerFactory
+| usingExecutorService | boolean | Whether to use ordered thread pool to ensure events are processed orderly on the same channel.
+| producerPoolMaxActive | int | Sets the cap on the number of objects that can be allocated by the pool (checked out to clients or idle awaiting checkout) at a given time. Use a negative value for no limit.
+| producerPoolMinIdle | int | Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+| producerPoolMaxIdle | int | Sets the cap on the number of idle instances in the pool.
+| producerPoolMinEvictableIdle | long | Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+| producerPoolEnabled | boolean | Whether producer pool is enabled or not. Important: Do not turn this off as the pooling is needed for handling concurrency and reliable request/reply.
+| udpConnectionlessSending | boolean | This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+| clientMode | boolean | If the clientMode is true netty consumer will connect the address as a TCP client.
+| useByteBuf | boolean | If the useByteBuf is true netty producer will turn the message body into ByteBuf before sending it out.
+| udpByteArrayCodec | boolean | For UDP only. If enabled the using byte array codec instead of Java serialization protocol.
+| reuseChannel | boolean | This option allows producers to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useable if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key link NettyConstantsNETTY_CHANNEL which allows you to obtain the channel during routing and use it as well.
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -80,6 +147,7 @@ The Netty4 component supports 3 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Netty4 component supports 73 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyComponent.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyComponent.java
index 048d054..601f952 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyComponent.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/NettyComponent.java
@@ -18,17 +18,24 @@ package org.apache.camel.component.netty4;
 
 import java.net.URI;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ThreadFactory;
 
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.group.ChannelGroup;
+import io.netty.handler.ssl.SslHandler;
 import io.netty.util.concurrent.DefaultEventExecutorGroup;
 import io.netty.util.concurrent.EventExecutorGroup;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
+import org.apache.camel.LoggingLevel;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.concurrent.CamelThreadFactory;
+import org.apache.camel.util.jsse.SSLContextParameters;
 
 public class NettyComponent extends UriEndpointComponent {
     private NettyConfiguration configuration;
@@ -102,7 +109,7 @@ public class NettyComponent extends UriEndpointComponent {
     }
 
     /**
-     * To use the NettyConfiguration as configuration when creating endpoints.
+     * To use the NettyConfiguration as configuration when creating endpoints. Properties of the shared configuration can also be set individually.
      */
     public void setConfiguration(NettyConfiguration configuration) {
         this.configuration = configuration;
@@ -153,4 +160,846 @@ public class NettyComponent extends UriEndpointComponent {
         super.doStop();
     }
 
+    private NettyConfiguration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new NettyConfiguration());
+        }
+        return this.getConfiguration();
+    }
+
+    public String getAddress() {
+        return getConfigurationOrCreate().getAddress();
+    }
+
+    public boolean isTcp() {
+        return getConfigurationOrCreate().isTcp();
+    }
+
+    public String getProtocol() {
+        return getConfigurationOrCreate().getProtocol();
+    }
+
+    /**
+     * The protocol to use which can be tcp or udp.
+     * @param protocol
+     */
+    public void setProtocol(String protocol) {
+        getConfigurationOrCreate().setProtocol(protocol);
+    }
+
+    public String getHost() {
+        return getConfigurationOrCreate().getHost();
+    }
+
+    /**
+     * The hostname.
+     * <p/>
+     * For the consumer the hostname is localhost or 0.0.0.0
+     * For the producer the hostname is the remote host to connect to
+     * @param host
+     */
+    public void setHost(String host) {
+        getConfigurationOrCreate().setHost(host);
+    }
+
+    public int getPort() {
+        return getConfigurationOrCreate().getPort();
+    }
+
+    /**
+     * The host port number
+     * @param port
+     */
+    public void setPort(int port) {
+        getConfigurationOrCreate().setPort(port);
+    }
+
+    public boolean isBroadcast() {
+        return getConfigurationOrCreate().isBroadcast();
+    }
+
+    /**
+     * Setting to choose Multicast over UDP
+     * @param broadcast
+     */
+    public void setBroadcast(boolean broadcast) {
+        getConfigurationOrCreate().setBroadcast(broadcast);
+    }
+
+    public int getSendBufferSize() {
+        return getConfigurationOrCreate().getSendBufferSize();
+    }
+
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.
+     * @param sendBufferSize
+     */
+    public void setSendBufferSize(int sendBufferSize) {
+        getConfigurationOrCreate().setSendBufferSize(sendBufferSize);
+    }
+
+    public int getReceiveBufferSize() {
+        return getConfigurationOrCreate().getReceiveBufferSize();
+    }
+
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.
+     * @param receiveBufferSize
+     */
+    public void setReceiveBufferSize(int receiveBufferSize) {
+        getConfigurationOrCreate().setReceiveBufferSize(receiveBufferSize);
+    }
+
+    public int getReceiveBufferSizePredictor() {
+        return getConfigurationOrCreate().getReceiveBufferSizePredictor();
+    }
+
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation and this mail thread.
+     * @param receiveBufferSizePredictor
+     */
+    public void setReceiveBufferSizePredictor(int receiveBufferSizePredictor) {
+        getConfigurationOrCreate().setReceiveBufferSizePredictor(receiveBufferSizePredictor);
+    }
+
+    public int getWorkerCount() {
+        return getConfigurationOrCreate().getWorkerCount();
+    }
+
+    /**
+     * When netty works on nio mode, it uses default workerCount parameter from Netty, which is cpu_core_threads*2.
+     * User can use this operation to override the default workerCount from Netty
+     * @param workerCount
+     */
+    public void setWorkerCount(int workerCount) {
+        getConfigurationOrCreate().setWorkerCount(workerCount);
+    }
+
+    public int getBossCount() {
+        return getConfigurationOrCreate().getBossCount();
+    }
+
+    /**
+     * When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1.
+     * User can use this operation to override the default bossCount from Netty
+     * @param bossCount
+     */
+    public void setBossCount(int bossCount) {
+        getConfigurationOrCreate().setBossCount(bossCount);
+    }
+
+    public boolean isKeepAlive() {
+        return getConfigurationOrCreate().isKeepAlive();
+    }
+
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     * @param keepAlive
+     */
+    public void setKeepAlive(boolean keepAlive) {
+        getConfigurationOrCreate().setKeepAlive(keepAlive);
+    }
+
+    public boolean isTcpNoDelay() {
+        return getConfigurationOrCreate().isTcpNoDelay();
+    }
+
+    /**
+     * Setting to improve TCP protocol performance
+     * @param tcpNoDelay
+     */
+    public void setTcpNoDelay(boolean tcpNoDelay) {
+        getConfigurationOrCreate().setTcpNoDelay(tcpNoDelay);
+    }
+
+    public boolean isReuseAddress() {
+        return getConfigurationOrCreate().isReuseAddress();
+    }
+
+    /**
+     * Setting to facilitate socket multiplexing
+     * @param reuseAddress
+     */
+    public void setReuseAddress(boolean reuseAddress) {
+        getConfigurationOrCreate().setReuseAddress(reuseAddress);
+    }
+
+    public int getConnectTimeout() {
+        return getConfigurationOrCreate().getConnectTimeout();
+    }
+
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     * @param connectTimeout
+     */
+    public void setConnectTimeout(int connectTimeout) {
+        getConfigurationOrCreate().setConnectTimeout(connectTimeout);
+    }
+
+    public int getBacklog() {
+        return getConfigurationOrCreate().getBacklog();
+    }
+
+    /**
+     * Allows to configure a backlog for netty consumer (server).
+     * Note the backlog is just a best effort depending on the OS.
+     * Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the "accept" queue can be
+     * If this option is not configured, then the backlog depends on OS setting.
+     * @param backlog
+     */
+    public void setBacklog(int backlog) {
+        getConfigurationOrCreate().setBacklog(backlog);
+    }
+
+    public boolean isSsl() {
+        return getConfigurationOrCreate().isSsl();
+    }
+
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     * @param ssl
+     */
+    public void setSsl(boolean ssl) {
+        getConfigurationOrCreate().setSsl(ssl);
+    }
+
+    public boolean isSslClientCertHeaders() {
+        return getConfigurationOrCreate().isSslClientCertHeaders();
+    }
+
+    /**
+     * When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having
+     * information about the client certificate such as subject name, issuer name, serial number, and the valid date range.
+     * @param sslClientCertHeaders
+     */
+    public void setSslClientCertHeaders(boolean sslClientCertHeaders) {
+        getConfigurationOrCreate().setSslClientCertHeaders(sslClientCertHeaders);
+    }
+
+    public SslHandler getSslHandler() {
+        return getConfigurationOrCreate().getSslHandler();
+    }
+
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     * @param sslHandler
+     */
+    public void setSslHandler(SslHandler sslHandler) {
+        getConfigurationOrCreate().setSslHandler(sslHandler);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfigurationOrCreate().getSslContextParameters();
+    }
+
+    /**
+     * To configure security using SSLContextParameters
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfigurationOrCreate().setSslContextParameters(sslContextParameters);
+    }
+
+    public boolean isNeedClientAuth() {
+        return getConfigurationOrCreate().isNeedClientAuth();
+    }
+
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     * @param needClientAuth
+     */
+    public void setNeedClientAuth(boolean needClientAuth) {
+        getConfigurationOrCreate().setNeedClientAuth(needClientAuth);
+    }
+
+    public String getKeyStoreResource() {
+        return getConfigurationOrCreate().getKeyStoreResource();
+    }
+
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by default from classpath,
+     * but you can prefix with "classpath:", "file:", or "http:" to load the resource from different systems.
+     * @param keyStoreResource
+     */
+    public void setKeyStoreResource(String keyStoreResource) {
+        getConfigurationOrCreate().setKeyStoreResource(keyStoreResource);
+    }
+
+    public String getTrustStoreResource() {
+        return getConfigurationOrCreate().getTrustStoreResource();
+    }
+
+    /**
+     * Server side certificate keystore to be used for encryption.
+     * Is loaded by default from classpath, but you can prefix with "classpath:", "file:", or "http:" to load the resource from different systems.
+     * @param trustStoreResource
+     */
+    public void setTrustStoreResource(String trustStoreResource) {
+        getConfigurationOrCreate().setTrustStoreResource(trustStoreResource);
+    }
+
+    public String getKeyStoreFormat() {
+        return getConfigurationOrCreate().getKeyStoreFormat();
+    }
+
+    /**
+     * Keystore format to be used for payload encryption. Defaults to "JKS" if not set
+     * @param keyStoreFormat
+     */
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        getConfigurationOrCreate().setKeyStoreFormat(keyStoreFormat);
+    }
+
+    public String getSecurityProvider() {
+        return getConfigurationOrCreate().getSecurityProvider();
+    }
+
+    /**
+     * Security provider to be used for payload encryption. Defaults to "SunX509" if not set.
+     * @param securityProvider
+     */
+    public void setSecurityProvider(String securityProvider) {
+        getConfigurationOrCreate().setSecurityProvider(securityProvider);
+    }
+
+    public String getPassphrase() {
+        return getConfigurationOrCreate().getPassphrase();
+    }
+
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using SSH
+     * @param passphrase
+     */
+    public void setPassphrase(String passphrase) {
+        getConfigurationOrCreate().setPassphrase(passphrase);
+    }
+
+    public ServerInitializerFactory getServerInitializerFactory() {
+        return getConfigurationOrCreate().getServerInitializerFactory();
+    }
+
+    public String getCharsetName() {
+        return getConfigurationOrCreate().getCharsetName();
+    }
+
+    /**
+     * To use a custom ServerInitializerFactory
+     * @param serverInitializerFactory
+     */
+    public void setServerInitializerFactory(ServerInitializerFactory serverInitializerFactory) {
+        getConfigurationOrCreate().setServerInitializerFactory(serverInitializerFactory);
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return getConfigurationOrCreate().getNettyServerBootstrapFactory();
+    }
+
+    public long getRequestTimeout() {
+        return getConfigurationOrCreate().getRequestTimeout();
+    }
+
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     * @param nettyServerBootstrapFactory
+     */
+    public void setNettyServerBootstrapFactory(NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        getConfigurationOrCreate().setNettyServerBootstrapFactory(nettyServerBootstrapFactory);
+    }
+
+    public Map<String, Object> getOptions() {
+        return getConfigurationOrCreate().getOptions();
+    }
+
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote server.
+     * By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds.
+     * The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.
+     * @param requestTimeout
+     */
+    public void setRequestTimeout(long requestTimeout) {
+        getConfigurationOrCreate().setRequestTimeout(requestTimeout);
+    }
+
+    public boolean isSync() {
+        return getConfigurationOrCreate().isSync();
+    }
+
+    /**
+     * Setting to set endpoint as one-way or request-response
+     * @param sync
+     */
+    public void setSync(boolean sync) {
+        getConfigurationOrCreate().setSync(sync);
+    }
+
+    /**
+     * Allows to configure additional netty options using "option." as prefix.
+     * For example "option.child.keepAlive=false" to set the netty option "child.keepAlive=false". See the Netty documentation for possible options that can be used.
+     * @param options
+     */
+    public void setOptions(Map<String, Object> options) {
+        getConfigurationOrCreate().setOptions(options);
+    }
+
+    public boolean isTextline() {
+        return getConfigurationOrCreate().isTextline();
+    }
+
+    public boolean isNativeTransport() {
+        return getConfigurationOrCreate().isNativeTransport();
+    }
+
+    /**
+     * Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec;
+     * if not specified or the value is false, then Object Serialization is assumed over TCP.
+     * @param textline
+     */
+    public void setTextline(boolean textline) {
+        getConfigurationOrCreate().setTextline(textline);
+    }
+
+    public int getDecoderMaxLineLength() {
+        return getConfigurationOrCreate().getDecoderMaxLineLength();
+    }
+
+    /**
+     * Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms.
+     * You need to add the netty JAR for the host operating system you are using. See more details at: http://netty.io/wiki/native-transports.html
+     * @param nativeTransport
+     */
+    public void setNativeTransport(boolean nativeTransport) {
+        getConfigurationOrCreate().setNativeTransport(nativeTransport);
+    }
+
+    /**
+     * The max line length to use for the textline codec.
+     * @param decoderMaxLineLength
+     */
+    public void setDecoderMaxLineLength(int decoderMaxLineLength) {
+        getConfigurationOrCreate().setDecoderMaxLineLength(decoderMaxLineLength);
+    }
+
+    public EventLoopGroup getBossGroup() {
+        return getConfigurationOrCreate().getBossGroup();
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return getConfigurationOrCreate().getDelimiter();
+    }
+
+    /**
+     * Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint
+     * @param bossGroup
+     */
+    public void setBossGroup(EventLoopGroup bossGroup) {
+        getConfigurationOrCreate().setBossGroup(bossGroup);
+    }
+
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and NULL.
+     * @param delimiter
+     */
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        getConfigurationOrCreate().setDelimiter(delimiter);
+    }
+
+    public EventLoopGroup getWorkerGroup() {
+        return getConfigurationOrCreate().getWorkerGroup();
+    }
+
+    public boolean isAutoAppendDelimiter() {
+        return getConfigurationOrCreate().isAutoAppendDelimiter();
+    }
+
+    /**
+     * Whether or not to auto append missing end delimiter when sending using the textline codec.
+     * @param autoAppendDelimiter
+     */
+    public void setAutoAppendDelimiter(boolean autoAppendDelimiter) {
+        getConfigurationOrCreate().setAutoAppendDelimiter(autoAppendDelimiter);
+    }
+
+    /**
+     * To use a explicit EventLoopGroup as the boss thread pool.
+     * For example to share a thread pool with multiple consumers. By default each consumer has their own boss pool with 1 core thread.
+     * @param workerGroup
+     */
+    public void setWorkerGroup(EventLoopGroup workerGroup) {
+        getConfigurationOrCreate().setWorkerGroup(workerGroup);
+    }
+
+    public String getEncoding() {
+        return getConfigurationOrCreate().getEncoding();
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return getConfigurationOrCreate().getChannelGroup();
+    }
+
+    /**
+     * To use a explicit ChannelGroup.
+     * @param channelGroup
+     */
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        getConfigurationOrCreate().setChannelGroup(channelGroup);
+    }
+
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset.
+     * @param encoding
+     */
+    public void setEncoding(String encoding) {
+        getConfigurationOrCreate().setEncoding(encoding);
+    }
+
+    public String getNetworkInterface() {
+        return getConfigurationOrCreate().getNetworkInterface();
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return getConfigurationOrCreate().getDecoders();
+    }
+
+    /**
+     * When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group.
+     * @param networkInterface
+     */
+    public void setNetworkInterface(String networkInterface) {
+        getConfigurationOrCreate().setNetworkInterface(networkInterface);
+    }
+
+    /**
+     * A list of decoders to be used.
+     * You can use a String which have values separated by comma, and have the values be looked up in the Registry.
+     * Just remember to prefix the value with # so Camel knows it should lookup.
+     * @param decoders
+     */
+    public void setDecoders(List<ChannelHandler> decoders) {
+        getConfigurationOrCreate().setDecoders(decoders);
+    }
+
+    public String getEnabledProtocols() {
+        return getConfigurationOrCreate().getEnabledProtocols();
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return getConfigurationOrCreate().getEncoders();
+    }
+
+    /**
+     * Which protocols to enable when using SSL
+     * @param enabledProtocols
+     */
+    public void setEnabledProtocols(String enabledProtocols) {
+        getConfigurationOrCreate().setEnabledProtocols(enabledProtocols);
+    }
+
+    /**
+     * Used only in clientMode in consumer, the consumer will attempt to reconnect on disconnection if this is enabled
+     */
+    public boolean isReconnect() {
+        return getConfigurationOrCreate().isReconnect();
+    }
+
+    /**
+     * A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry.
+     * Just remember to prefix the value with # so Camel knows it should lookup.
+     * @param encoders
+     */
+    public void setEncoders(List<ChannelHandler> encoders) {
+        getConfigurationOrCreate().setEncoders(encoders);
+    }
+
+    public void setReconnect(boolean reconnect) {
+        getConfigurationOrCreate().setReconnect(reconnect);
+    }
+
+    public ChannelHandler getEncoder() {
+        return getConfigurationOrCreate().getEncoder();
+    }
+
+    /**
+     * Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection
+     */
+    public int getReconnectInterval() {
+        return getConfigurationOrCreate().getReconnectInterval();
+    }
+
+    /**
+     * A custom ChannelHandler class that can be used to perform special marshalling of outbound payloads.
+     * @param encoder
+     */
+    public void setEncoder(ChannelHandler encoder) {
+        getConfigurationOrCreate().setEncoder(encoder);
+    }
+
+    public void setReconnectInterval(int reconnectInterval) {
+        getConfigurationOrCreate().setReconnectInterval(reconnectInterval);
+    }
+
+    public ChannelHandler getDecoder() {
+        return getConfigurationOrCreate().getDecoder();
+    }
+
+    /**
+     * A custom ChannelHandler class that can be used to perform special marshalling of inbound payloads.
+     * @param decoder
+     */
+    public void setDecoder(ChannelHandler decoder) {
+        getConfigurationOrCreate().setDecoder(decoder);
+    }
+
+    public boolean isDisconnect() {
+        return getConfigurationOrCreate().isDisconnect();
+    }
+
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.
+     * @param disconnect
+     */
+    public void setDisconnect(boolean disconnect) {
+        getConfigurationOrCreate().setDisconnect(disconnect);
+    }
+
+    public boolean isLazyChannelCreation() {
+        return getConfigurationOrCreate().isLazyChannelCreation();
+    }
+
+    /**
+     * Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.
+     * @param lazyChannelCreation
+     */
+    public void setLazyChannelCreation(boolean lazyChannelCreation) {
+        getConfigurationOrCreate().setLazyChannelCreation(lazyChannelCreation);
+    }
+
+    public boolean isTransferExchange() {
+        return getConfigurationOrCreate().isTransferExchange();
+    }
+
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of just the body.
+     * The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers,
+     * exchange properties, exchange exception.
+     * This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.
+     * @param transferExchange
+     */
+    public void setTransferExchange(boolean transferExchange) {
+        getConfigurationOrCreate().setTransferExchange(transferExchange);
+    }
+
+    public boolean isDisconnectOnNoReply() {
+        return getConfigurationOrCreate().isDisconnectOnNoReply();
+    }
+
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.
+     * @param disconnectOnNoReply
+     */
+    public void setDisconnectOnNoReply(boolean disconnectOnNoReply) {
+        getConfigurationOrCreate().setDisconnectOnNoReply(disconnectOnNoReply);
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return getConfigurationOrCreate().getNoReplyLogLevel();
+    }
+
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.
+     * @param noReplyLogLevel
+     */
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        getConfigurationOrCreate().setNoReplyLogLevel(noReplyLogLevel);
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return getConfigurationOrCreate().getServerExceptionCaughtLogLevel();
+    }
+
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using this logging level.
+     * @param serverExceptionCaughtLogLevel
+     */
+    public void setServerExceptionCaughtLogLevel(LoggingLevel serverExceptionCaughtLogLevel) {
+        getConfigurationOrCreate().setServerExceptionCaughtLogLevel(serverExceptionCaughtLogLevel);
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return getConfigurationOrCreate().getServerClosedChannelExceptionCaughtLogLevel();
+    }
+
+    /**
+     * If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level.
+     * This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.
+     * @param serverClosedChannelExceptionCaughtLogLevel
+     */
+    public void setServerClosedChannelExceptionCaughtLogLevel(LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        getConfigurationOrCreate().setServerClosedChannelExceptionCaughtLogLevel(serverClosedChannelExceptionCaughtLogLevel);
+    }
+
+    public boolean isAllowDefaultCodec() {
+        return getConfigurationOrCreate().isAllowDefaultCodec();
+    }
+
+    /**
+     * The netty component installs a default codec if both, encoder/deocder is null and textline is false.
+     * Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.
+     * @param allowDefaultCodec
+     */
+    public void setAllowDefaultCodec(boolean allowDefaultCodec) {
+        getConfigurationOrCreate().setAllowDefaultCodec(allowDefaultCodec);
+    }
+
+    public ClientInitializerFactory getClientInitializerFactory() {
+        return getConfigurationOrCreate().getClientInitializerFactory();
+    }
+
+    /**
+     * To use a custom ClientInitializerFactory
+     * @param clientInitializerFactory
+     */
+    public void setClientInitializerFactory(ClientInitializerFactory clientInitializerFactory) {
+        getConfigurationOrCreate().setClientInitializerFactory(clientInitializerFactory);
+    }
+
+    public boolean isUsingExecutorService() {
+        return getConfigurationOrCreate().isUsingExecutorService();
+    }
+
+    /**
+     * Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.
+     * @param usingExecutorService
+     */
+    public void setUsingExecutorService(boolean usingExecutorService) {
+        getConfigurationOrCreate().setUsingExecutorService(usingExecutorService);
+    }
+
+    public int getProducerPoolMaxActive() {
+        return getConfigurationOrCreate().getProducerPoolMaxActive();
+    }
+
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit.
+     * @param producerPoolMaxActive
+     */
+    public void setProducerPoolMaxActive(int producerPoolMaxActive) {
+        getConfigurationOrCreate().setProducerPoolMaxActive(producerPoolMaxActive);
+    }
+
+    public int getProducerPoolMinIdle() {
+        return getConfigurationOrCreate().getProducerPoolMinIdle();
+    }
+
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.
+     * @param producerPoolMinIdle
+     */
+    public void setProducerPoolMinIdle(int producerPoolMinIdle) {
+        getConfigurationOrCreate().setProducerPoolMinIdle(producerPoolMinIdle);
+    }
+
+    public int getProducerPoolMaxIdle() {
+        return getConfigurationOrCreate().getProducerPoolMaxIdle();
+    }
+
+    /**
+     * Sets the cap on the number of "idle" instances in the pool.
+     * @param producerPoolMaxIdle
+     */
+    public void setProducerPoolMaxIdle(int producerPoolMaxIdle) {
+        getConfigurationOrCreate().setProducerPoolMaxIdle(producerPoolMaxIdle);
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return getConfigurationOrCreate().getProducerPoolMinEvictableIdle();
+    }
+
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.
+     * @param producerPoolMinEvictableIdle
+     */
+    public void setProducerPoolMinEvictableIdle(long producerPoolMinEvictableIdle) {
+        getConfigurationOrCreate().setProducerPoolMinEvictableIdle(producerPoolMinEvictableIdle);
+    }
+
+    public boolean isProducerPoolEnabled() {
+        return getConfigurationOrCreate().isProducerPoolEnabled();
+    }
+
+    /**
+     * Whether producer pool is enabled or not.
+     * Important: Do not turn this off, as the pooling is needed for handling concurrency and reliable request/reply.
+     * @param producerPoolEnabled
+     */
+    public void setProducerPoolEnabled(boolean producerPoolEnabled) {
+        getConfigurationOrCreate().setProducerPoolEnabled(producerPoolEnabled);
+    }
+
+    public boolean isUdpConnectionlessSending() {
+        return getConfigurationOrCreate().isUdpConnectionlessSending();
+    }
+
+    /**
+     * This option supports connection less udp sending which is a real fire and forget.
+     * A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.
+     * @param udpConnectionlessSending
+     */
+    public void setUdpConnectionlessSending(boolean udpConnectionlessSending) {
+        getConfigurationOrCreate().setUdpConnectionlessSending(udpConnectionlessSending);
+    }
+
+    public boolean isClientMode() {
+        return getConfigurationOrCreate().isClientMode();
+    }
+
+    /**
+     * If the clientMode is true, netty consumer will connect the address as a TCP client.
+     * @param clientMode
+     */
+    public void setClientMode(boolean clientMode) {
+        getConfigurationOrCreate().setClientMode(clientMode);
+    }
+
+    public boolean isUseByteBuf() {
+        return getConfigurationOrCreate().isUseByteBuf();
+    }
+
+    /**
+     * If the useByteBuf is true, netty producer will turn the message body into {@link ByteBuf} before sending it out.
+     * @param useByteBuf
+     */
+    public void setUseByteBuf(boolean useByteBuf) {
+        getConfigurationOrCreate().setUseByteBuf(useByteBuf);
+    }
+
+    public boolean isUdpByteArrayCodec() {
+        return getConfigurationOrCreate().isUdpByteArrayCodec();
+    }
+
+    /**
+     * For UDP only. If enabled the using byte array codec instead of Java serialization protocol.
+     * @param udpByteArrayCodec
+     */
+    public void setUdpByteArrayCodec(boolean udpByteArrayCodec) {
+        getConfigurationOrCreate().setUdpByteArrayCodec(udpByteArrayCodec);
+    }
+
+    public boolean isReuseChannel() {
+        return getConfigurationOrCreate().isReuseChannel();
+    }
+
+    /**
+     * This option allows producers to reuse the same Netty {@link Channel} for the lifecycle of processing the {@link Exchange}.
+     * This is useable if you need to call a server multiple times in a Camel route and want to use the same network connection.
+     * When using this the channel is not returned to the connection pool until the {@link Exchange} is done; or disconnected
+     * if the disconnect option is set to true.
+     * <p/>
+     * The reused {@link Channel} is stored on the {@link Exchange} as an exchange property with the key {@link NettyConstants#NETTY_CHANNEL}
+     * which allows you to obtain the channel during routing and use it as well.
+     * @param reuseChannel
+     */
+    public void setReuseChannel(boolean reuseChannel) {
+        getConfigurationOrCreate().setReuseChannel(reuseChannel);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/springboot/NettyComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/springboot/NettyComponentConfiguration.java b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/springboot/NettyComponentConfiguration.java
index 7bedf0d..0c1b3fc 100644
--- a/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/springboot/NettyComponentConfiguration.java
+++ b/components/camel-netty4/src/main/java/org/apache/camel/component/netty4/springboot/NettyComponentConfiguration.java
@@ -16,8 +16,20 @@
  */
 package org.apache.camel.component.netty4.springboot;
 
+import java.util.List;
+import java.util.Map;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.group.ChannelGroup;
+import io.netty.handler.ssl.SslHandler;
 import io.netty.util.concurrent.EventExecutorGroup;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.component.netty4.ClientInitializerFactory;
 import org.apache.camel.component.netty4.NettyConfiguration;
+import org.apache.camel.component.netty4.NettyServerBootstrapFactory;
+import org.apache.camel.component.netty4.ServerInitializerFactory;
+import org.apache.camel.component.netty4.TextLineDelimiter;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -35,12 +47,362 @@ public class NettyComponentConfiguration {
     private Integer maximumPoolSize;
     /**
      * To use the NettyConfiguration as configuration when creating endpoints.
+     * Properties of the shared configuration can also be set individually.
      */
     private NettyConfiguration configuration;
     /**
      * To use the given EventExecutorGroup
      */
     private EventExecutorGroup executorService;
+    /**
+     * The protocol to use which can be tcp or udp.
+     */
+    private String protocol;
+    /**
+     * The hostname. For the consumer the hostname is localhost or 0.0.0.0 For
+     * the producer the hostname is the remote host to connect to
+     */
+    private String host;
+    /**
+     * The host port number
+     */
+    private Integer port;
+    /**
+     * Setting to choose Multicast over UDP
+     */
+    private Boolean broadcast = false;
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size
+     * is bytes.
+     */
+    private Integer sendBufferSize;
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is
+     * bytes.
+     */
+    private Integer receiveBufferSize;
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation
+     * and this mail thread.
+     */
+    private Integer receiveBufferSizePredictor;
+    /**
+     * When netty works on nio mode it uses default workerCount parameter from
+     * Netty which is cpu_core_threads2. User can use this operation to override
+     * the default workerCount from Netty
+     */
+    private Integer workerCount;
+    /**
+     * When netty works on nio mode it uses default bossCount parameter from
+     * Netty which is 1. User can use this operation to override the default
+     * bossCount from Netty
+     */
+    private Integer bossCount;
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     */
+    private Boolean keepAlive = false;
+    /**
+     * Setting to improve TCP protocol performance
+     */
+    private Boolean tcpNoDelay = false;
+    /**
+     * Setting to facilitate socket multiplexing
+     */
+    private Boolean reuseAddress = false;
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     */
+    private Integer connectTimeout;
+    /**
+     * Allows to configure a backlog for netty consumer (server). Note the
+     * backlog is just a best effort depending on the OS. Setting this option to
+     * a value such as 200 500 or 1000 tells the TCP stack how long the accept
+     * queue can be If this option is not configured then the backlog depends on
+     * OS setting.
+     */
+    private Integer backlog;
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     */
+    private Boolean ssl = false;
+    /**
+     * When enabled and in SSL mode then the Netty consumer will enrich the
+     * Camel Message with headers having information about the client
+     * certificate such as subject name issuer name serial number and the valid
+     * date range.
+     */
+    private Boolean sslClientCertHeaders = false;
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     */
+    private SslHandler sslHandler;
+    /**
+     * To configure security using SSLContextParameters
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     */
+    private Boolean needClientAuth = false;
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String keyStoreResource;
+    /**
+     * Server side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String trustStoreResource;
+    /**
+     * Keystore format to be used for payload encryption. Defaults to JKS if not
+     * set
+     */
+    private String keyStoreFormat;
+    /**
+     * Security provider to be used for payload encryption. Defaults to SunX509
+     * if not set.
+     */
+    private String securityProvider;
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using
+     * SSH
+     */
+    private String passphrase;
+    /**
+     * To use a custom ServerInitializerFactory
+     */
+    private ServerInitializerFactory serverInitializerFactory;
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     */
+    private NettyServerBootstrapFactory nettyServerBootstrapFactory;
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote
+     * server. By default no timeout is in use. The value is in milli seconds so
+     * eg 30000 is 30 seconds. The requestTimeout is using Netty's
+     * ReadTimeoutHandler to trigger the timeout.
+     */
+    private long requestTimeout;
+    /**
+     * Setting to set endpoint as one-way or request-response
+     */
+    private Boolean sync = false;
+    /**
+     * Allows to configure additional netty options using option. as prefix. For
+     * example option.child.keepAlive=false to set the netty option
+     * child.keepAlive=false. See the Netty documentation for possible options
+     * that can be used.
+     */
+    private Map<String, Object> options;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Whether to use native transport instead of NIO. Native transport takes
+     * advantage of the host operating system and is only supported on some
+     * platforms. You need to add the netty JAR for the host operating system
+     * you are using. See more details at:
+     * http://netty.io/wiki/native-transports.html
+     */
+    private Boolean nativeTransport = false;
+    /**
+     * The max line length to use for the textline codec.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * Set the BossGroup which could be used for handling the new connection of
+     * the server side across the NettyEndpoint
+     */
+    private EventLoopGroup bossGroup;
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and
+     * NULL.
+     */
+    private TextLineDelimiter delimiter;
+    /**
+     * Whether or not to auto append missing end delimiter when sending using
+     * the textline codec.
+     */
+    private Boolean autoAppendDelimiter = false;
+    /**
+     * To use a explicit EventLoopGroup as the boss thread pool. For example to
+     * share a thread pool with multiple consumers. By default each consumer has
+     * their own boss pool with 1 core thread.
+     */
+    private EventLoopGroup workerGroup;
+    /**
+     * To use a explicit ChannelGroup.
+     */
+    private ChannelGroup channelGroup;
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not
+     * provided Camel will use the JVM default Charset.
+     */
+    private String encoding;
+    /**
+     * When using UDP then this option can be used to specify a network
+     * interface by its name such as eth0 to join a multicast group.
+     */
+    private String networkInterface;
+    /**
+     * A list of decoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> decoders;
+    /**
+     * Which protocols to enable when using SSL
+     */
+    private String enabledProtocols;
+    /**
+     * A list of encoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> encoders;
+    /**
+     * Used only in clientMode in consumer the consumer will attempt to
+     * reconnect on disconnection if this is enabled
+     */
+    private Boolean reconnect = false;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of outbound payloads.
+     */
+    private ChannelHandler encoder;
+    /**
+     * Used if reconnect and clientMode is enabled. The interval in milli
+     * seconds to attempt reconnection
+     */
+    private Integer reconnectInterval;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of inbound payloads.
+     */
+    private ChannelHandler decoder;
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * Channels can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazyChannelCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using
+     * this logging level.
+     */
+    private LoggingLevel serverExceptionCaughtLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an
+     * java.nio.channels.ClosedChannelException then its logged using this
+     * logging level. This is used to avoid logging the closed channel
+     * exceptions as clients can disconnect abruptly and then cause a flood of
+     * closed exceptions in the Netty server.
+     */
+    private LoggingLevel serverClosedChannelExceptionCaughtLogLevel;
+    /**
+     * The netty component installs a default codec if both encoder/deocder is
+     * null and textline is false. Setting allowDefaultCodec to false prevents
+     * the netty component from installing a default codec as the first element
+     * in the filter chain.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * To use a custom ClientInitializerFactory
+     */
+    private ClientInitializerFactory clientInitializerFactory;
+    /**
+     * Whether to use ordered thread pool to ensure events are processed orderly
+     * on the same channel.
+     */
+    private Boolean usingExecutorService = false;
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients or idle awaiting checkout) at a given time. Use a
+     * negative value for no limit.
+     */
+    private Integer producerPoolMaxActive;
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before
+     * the evictor thread (if active) spawns new objects.
+     */
+    private Integer producerPoolMinIdle;
+    /**
+     * Sets the cap on the number of idle instances in the pool.
+     */
+    private Integer producerPoolMaxIdle;
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle
+     * in the pool before it is eligible for eviction by the idle object
+     * evictor.
+     */
+    private long producerPoolMinEvictableIdle;
+    /**
+     * Whether producer pool is enabled or not. Important: Do not turn this off
+     * as the pooling is needed for handling concurrency and reliable
+     * request/reply.
+     */
+    private Boolean producerPoolEnabled = false;
+    /**
+     * This option supports connection less udp sending which is a real fire and
+     * forget. A connected udp send receive the PortUnreachableException if no
+     * one is listen on the receiving port.
+     */
+    private Boolean udpConnectionlessSending = false;
+    /**
+     * If the clientMode is true netty consumer will connect the address as a
+     * TCP client.
+     */
+    private Boolean clientMode = false;
+    /**
+     * If the useByteBuf is true netty producer will turn the message body into
+     * ByteBuf before sending it out.
+     */
+    private Boolean useByteBuf = false;
+    /**
+     * For UDP only. If enabled the using byte array codec instead of Java
+     * serialization protocol.
+     */
+    private Boolean udpByteArrayCodec = false;
+    /**
+     * This option allows producers to reuse the same Netty Channel for the
+     * lifecycle of processing the Exchange. This is useable if you need to call
+     * a server multiple times in a Camel route and want to use the same network
+     * connection. When using this the channel is not returned to the connection
+     * pool until the Exchange is done; or disconnected if the disconnect option
+     * is set to true. The reused Channel is stored on the Exchange as an
+     * exchange property with the key link NettyConstantsNETTY_CHANNEL which
+     * allows you to obtain the channel during routing and use it as well.
+     */
+    private Boolean reuseChannel = false;
 
     public Integer getMaximumPoolSize() {
         return maximumPoolSize;
@@ -65,4 +427,539 @@ public class NettyComponentConfiguration {
     public void setExecutorService(EventExecutorGroup executorService) {
         this.executorService = executorService;
     }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getBroadcast() {
+        return broadcast;
+    }
+
+    public void setBroadcast(Boolean broadcast) {
+        this.broadcast = broadcast;
+    }
+
+    public Integer getSendBufferSize() {
+        return sendBufferSize;
+    }
+
+    public void setSendBufferSize(Integer sendBufferSize) {
+        this.sendBufferSize = sendBufferSize;
+    }
+
+    public Integer getReceiveBufferSize() {
+        return receiveBufferSize;
+    }
+
+    public void setReceiveBufferSize(Integer receiveBufferSize) {
+        this.receiveBufferSize = receiveBufferSize;
+    }
+
+    public Integer getReceiveBufferSizePredictor() {
+        return receiveBufferSizePredictor;
+    }
+
+    public void setReceiveBufferSizePredictor(Integer receiveBufferSizePredictor) {
+        this.receiveBufferSizePredictor = receiveBufferSizePredictor;
+    }
+
+    public Integer getWorkerCount() {
+        return workerCount;
+    }
+
+    public void setWorkerCount(Integer workerCount) {
+        this.workerCount = workerCount;
+    }
+
+    public Integer getBossCount() {
+        return bossCount;
+    }
+
+    public void setBossCount(Integer bossCount) {
+        this.bossCount = bossCount;
+    }
+
+    public Boolean getKeepAlive() {
+        return keepAlive;
+    }
+
+    public void setKeepAlive(Boolean keepAlive) {
+        this.keepAlive = keepAlive;
+    }
+
+    public Boolean getTcpNoDelay() {
+        return tcpNoDelay;
+    }
+
+    public void setTcpNoDelay(Boolean tcpNoDelay) {
+        this.tcpNoDelay = tcpNoDelay;
+    }
+
+    public Boolean getReuseAddress() {
+        return reuseAddress;
+    }
+
+    public void setReuseAddress(Boolean reuseAddress) {
+        this.reuseAddress = reuseAddress;
+    }
+
+    public Integer getConnectTimeout() {
+        return connectTimeout;
+    }
+
+    public void setConnectTimeout(Integer connectTimeout) {
+        this.connectTimeout = connectTimeout;
+    }
+
+    public Integer getBacklog() {
+        return backlog;
+    }
+
+    public void setBacklog(Integer backlog) {
+        this.backlog = backlog;
+    }
+
+    public Boolean getSsl() {
+        return ssl;
+    }
+
+    public void setSsl(Boolean ssl) {
+        this.ssl = ssl;
+    }
+
+    public Boolean getSslClientCertHeaders() {
+        return sslClientCertHeaders;
+    }
+
+    public void setSslClientCertHeaders(Boolean sslClientCertHeaders) {
+        this.sslClientCertHeaders = sslClientCertHeaders;
+    }
+
+    public SslHandler getSslHandler() {
+        return sslHandler;
+    }
+
+    public void setSslHandler(SslHandler sslHandler) {
+        this.sslHandler = sslHandler;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Boolean getNeedClientAuth() {
+        return needClientAuth;
+    }
+
+    public void setNeedClientAuth(Boolean needClientAuth) {
+        this.needClientAuth = needClientAuth;
+    }
+
+    public String getKeyStoreResource() {
+        return keyStoreResource;
+    }
+
+    public void setKeyStoreResource(String keyStoreResource) {
+        this.keyStoreResource = keyStoreResource;
+    }
+
+    public String getTrustStoreResource() {
+        return trustStoreResource;
+    }
+
+    public void setTrustStoreResource(String trustStoreResource) {
+        this.trustStoreResource = trustStoreResource;
+    }
+
+    public String getKeyStoreFormat() {
+        return keyStoreFormat;
+    }
+
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        this.keyStoreFormat = keyStoreFormat;
+    }
+
+    public String getSecurityProvider() {
+        return securityProvider;
+    }
+
+    public void setSecurityProvider(String securityProvider) {
+        this.securityProvider = securityProvider;
+    }
+
+    public String getPassphrase() {
+        return passphrase;
+    }
+
+    public void setPassphrase(String passphrase) {
+        this.passphrase = passphrase;
+    }
+
+    public ServerInitializerFactory getServerInitializerFactory() {
+        return serverInitializerFactory;
+    }
+
+    public void setServerInitializerFactory(
+            ServerInitializerFactory serverInitializerFactory) {
+        this.serverInitializerFactory = serverInitializerFactory;
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return nettyServerBootstrapFactory;
+    }
+
+    public void setNettyServerBootstrapFactory(
+            NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        this.nettyServerBootstrapFactory = nettyServerBootstrapFactory;
+    }
+
+    public long getRequestTimeout() {
+        return requestTimeout;
+    }
+
+    public void setRequestTimeout(long requestTimeout) {
+        this.requestTimeout = requestTimeout;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Map<String, Object> getOptions() {
+        return options;
+    }
+
+    public void setOptions(Map<String, Object> options) {
+        this.options = options;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public Boolean getNativeTransport() {
+        return nativeTransport;
+    }
+
+    public void setNativeTransport(Boolean nativeTransport) {
+        this.nativeTransport = nativeTransport;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public EventLoopGroup getBossGroup() {
+        return bossGroup;
+    }
+
+    public void setBossGroup(EventLoopGroup bossGroup) {
+        this.bossGroup = bossGroup;
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return delimiter;
+    }
+
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        this.delimiter = delimiter;
+    }
+
+    public Boolean getAutoAppendDelimiter() {
+        return autoAppendDelimiter;
+    }
+
+    public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) {
+        this.autoAppendDelimiter = autoAppendDelimiter;
+    }
+
+    public EventLoopGroup getWorkerGroup() {
+        return workerGroup;
+    }
+
+    public void setWorkerGroup(EventLoopGroup workerGroup) {
+        this.workerGroup = workerGroup;
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return channelGroup;
+    }
+
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        this.channelGroup = channelGroup;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public String getNetworkInterface() {
+        return networkInterface;
+    }
+
+    public void setNetworkInterface(String networkInterface) {
+        this.networkInterface = networkInterface;
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return decoders;
+    }
+
+    public void setDecoders(List<ChannelHandler> decoders) {
+        this.decoders = decoders;
+    }
+
+    public String getEnabledProtocols() {
+        return enabledProtocols;
+    }
+
+    public void setEnabledProtocols(String enabledProtocols) {
+        this.enabledProtocols = enabledProtocols;
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return encoders;
+    }
+
+    public void setEncoders(List<ChannelHandler> encoders) {
+        this.encoders = encoders;
+    }
+
+    public Boolean getReconnect() {
+        return reconnect;
+    }
+
+    public void setReconnect(Boolean reconnect) {
+        this.reconnect = reconnect;
+    }
+
+    public ChannelHandler getEncoder() {
+        return encoder;
+    }
+
+    public void setEncoder(ChannelHandler encoder) {
+        this.encoder = encoder;
+    }
+
+    public Integer getReconnectInterval() {
+        return reconnectInterval;
+    }
+
+    public void setReconnectInterval(Integer reconnectInterval) {
+        this.reconnectInterval = reconnectInterval;
+    }
+
+    public ChannelHandler getDecoder() {
+        return decoder;
+    }
+
+    public void setDecoder(ChannelHandler decoder) {
+        this.decoder = decoder;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getLazyChannelCreation() {
+        return lazyChannelCreation;
+    }
+
+    public void setLazyChannelCreation(Boolean lazyChannelCreation) {
+        this.lazyChannelCreation = lazyChannelCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return serverExceptionCaughtLogLevel;
+    }
+
+    public void setServerExceptionCaughtLogLevel(
+            LoggingLevel serverExceptionCaughtLogLevel) {
+        this.serverExceptionCaughtLogLevel = serverExceptionCaughtLogLevel;
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public void setServerClosedChannelExceptionCaughtLogLevel(
+            LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        this.serverClosedChannelExceptionCaughtLogLevel = serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public ClientInitializerFactory getClientInitializerFactory() {
+        return clientInitializerFactory;
+    }
+
+    public void setClientInitializerFactory(
+            ClientInitializerFactory clientInitializerFactory) {
+        this.clientInitializerFactory = clientInitializerFactory;
+    }
+
+    public Boolean getUsingExecutorService() {
+        return usingExecutorService;
+    }
+
+    public void setUsingExecutorService(Boolean usingExecutorService) {
+        this.usingExecutorService = usingExecutorService;
+    }
+
+    public Integer getProducerPoolMaxActive() {
+        return producerPoolMaxActive;
+    }
+
+    public void setProducerPoolMaxActive(Integer producerPoolMaxActive) {
+        this.producerPoolMaxActive = producerPoolMaxActive;
+    }
+
+    public Integer getProducerPoolMinIdle() {
+        return producerPoolMinIdle;
+    }
+
+    public void setProducerPoolMinIdle(Integer producerPoolMinIdle) {
+        this.producerPoolMinIdle = producerPoolMinIdle;
+    }
+
+    public Integer getProducerPoolMaxIdle() {
+        return producerPoolMaxIdle;
+    }
+
+    public void setProducerPoolMaxIdle(Integer producerPoolMaxIdle) {
+        this.producerPoolMaxIdle = producerPoolMaxIdle;
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return producerPoolMinEvictableIdle;
+    }
+
+    public void setProducerPoolMinEvictableIdle(
+            long producerPoolMinEvictableIdle) {
+        this.producerPoolMinEvictableIdle = producerPoolMinEvictableIdle;
+    }
+
+    public Boolean getProducerPoolEnabled() {
+        return producerPoolEnabled;
+    }
+
+    public void setProducerPoolEnabled(Boolean producerPoolEnabled) {
+        this.producerPoolEnabled = producerPoolEnabled;
+    }
+
+    public Boolean getUdpConnectionlessSending() {
+        return udpConnectionlessSending;
+    }
+
+    public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) {
+        this.udpConnectionlessSending = udpConnectionlessSending;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
+
+    public Boolean getUseByteBuf() {
+        return useByteBuf;
+    }
+
+    public void setUseByteBuf(Boolean useByteBuf) {
+        this.useByteBuf = useByteBuf;
+    }
+
+    public Boolean getUdpByteArrayCodec() {
+        return udpByteArrayCodec;
+    }
+
+    public void setUdpByteArrayCodec(Boolean udpByteArrayCodec) {
+        this.udpByteArrayCodec = udpByteArrayCodec;
+    }
+
+    public Boolean getReuseChannel() {
+        return reuseChannel;
+    }
+
+    public void setReuseChannel(Boolean reuseChannel) {
+        this.reuseChannel = reuseChannel;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2.adoc
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2.adoc b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2.adoc
index a124b7b..b062775 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2.adoc
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2.adoc
@@ -46,8 +46,9 @@ Olingo2 Options
 ^^^^^^^^^^^^^^^
 
 
+
 // component options: START
-The Olingo2 component supports 1 options which are listed below.
+The Olingo2 component supports 11 options which are listed below.
 
 
 
@@ -55,7 +56,17 @@ The Olingo2 component supports 1 options which are listed below.
 [width="100%",cols="2s,1m,8",options="header"]
 |=======================================================================
 | Name | Java Type | Description
-| configuration | Olingo2Configuration | To use the shared configuration
+| configuration | Olingo2Configuration | To use the shared configuration. Properties of the shared configuration can also be set individually.
+| apiName | Olingo2ApiName | What kind of operation to perform
+| methodName | String | What sub operation to use for the selected operation
+| serviceUri | String | Target OData service base URI e.g. http://services.odata.org/OData/OData.svc
+| contentType | String | Content-Type header value can be used to specify JSON or XML message format defaults to application/json;charset=utf-8
+| httpHeaders | Map | Custom HTTP headers to inject into every request this could include OAuth tokens etc.
+| connectTimeout | int | HTTP connection creation timeout in milliseconds defaults to 30000 (30 seconds)
+| socketTimeout | int | HTTP request timeout in milliseconds defaults to 30000 (30 seconds)
+| proxy | HttpHost | HTTP proxy server configuration
+| sslContextParameters | SSLContextParameters | To configure security using SSLContextParameters
+| httpAsyncClientBuilder | HttpAsyncClientBuilder | Custom HTTP async client builder for more complex HTTP client configuration overrides connectionTimeout socketTimeout proxy and sslContext. Note that a socketTimeout MUST be specified in the builder otherwise OData requests could block indefinitely
 |=======================================================================
 {% endraw %}
 // component options: END
@@ -63,6 +74,7 @@ The Olingo2 component supports 1 options which are listed below.
 
 
 
+
 // endpoint options: START
 The Olingo2 component supports 15 endpoint options which are listed below:
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
index dd09fee..0a6a0e8 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
@@ -92,7 +92,7 @@ public class Olingo2Component extends AbstractApiComponent<Olingo2ApiName, Oling
     }
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration can also be set individually.
      */
     @Override
     public void setConfiguration(Olingo2Configuration configuration) {
@@ -175,4 +175,132 @@ public class Olingo2Component extends AbstractApiComponent<Olingo2ApiName, Oling
             apiProxy.close();
         }
     }
+
+    private Olingo2Configuration getConfigurationOrCreate() {
+        if (this.getConfiguration() == null) {
+            this.setConfiguration(new Olingo2Configuration());
+        }
+        return this.getConfiguration();
+    }
+
+    public Olingo2ApiName getApiName() {
+        return getConfigurationOrCreate().getApiName();
+    }
+
+    /**
+     * What kind of operation to perform
+     * @param apiName
+     */
+    public void setApiName(Olingo2ApiName apiName) {
+        getConfigurationOrCreate().setApiName(apiName);
+    }
+
+    public String getMethodName() {
+        return getConfigurationOrCreate().getMethodName();
+    }
+
+    /**
+     * What sub operation to use for the selected operation
+     * @param methodName
+     */
+    public void setMethodName(String methodName) {
+        getConfigurationOrCreate().setMethodName(methodName);
+    }
+
+    public String getServiceUri() {
+        return getConfigurationOrCreate().getServiceUri();
+    }
+
+    /**
+     * Target OData service base URI, e.g. http://services.odata.org/OData/OData.svc
+     * @param serviceUri
+     */
+    public void setServiceUri(String serviceUri) {
+        getConfigurationOrCreate().setServiceUri(serviceUri);
+    }
+
+    public String getContentType() {
+        return getConfigurationOrCreate().getContentType();
+    }
+
+    /**
+     * Content-Type header value can be used to specify JSON or XML message format, defaults to application/json;charset=utf-8
+     * @param contentType
+     */
+    public void setContentType(String contentType) {
+        getConfigurationOrCreate().setContentType(contentType);
+    }
+
+    public Map<String, String> getHttpHeaders() {
+        return getConfigurationOrCreate().getHttpHeaders();
+    }
+
+    /**
+     * Custom HTTP headers to inject into every request, this could include OAuth tokens, etc.
+     * @param httpHeaders
+     */
+    public void setHttpHeaders(Map<String, String> httpHeaders) {
+        getConfigurationOrCreate().setHttpHeaders(httpHeaders);
+    }
+
+    public int getConnectTimeout() {
+        return getConfigurationOrCreate().getConnectTimeout();
+    }
+
+    /**
+     * HTTP connection creation timeout in milliseconds, defaults to 30,000 (30 seconds)
+     * @param connectTimeout
+     */
+    public void setConnectTimeout(int connectTimeout) {
+        getConfigurationOrCreate().setConnectTimeout(connectTimeout);
+    }
+
+    public int getSocketTimeout() {
+        return getConfigurationOrCreate().getSocketTimeout();
+    }
+
+    /**
+     * HTTP request timeout in milliseconds, defaults to 30,000 (30 seconds)
+     * @param socketTimeout
+     */
+    public void setSocketTimeout(int socketTimeout) {
+        getConfigurationOrCreate().setSocketTimeout(socketTimeout);
+    }
+
+    public HttpHost getProxy() {
+        return getConfigurationOrCreate().getProxy();
+    }
+
+    /**
+     * HTTP proxy server configuration
+     * @param proxy
+     */
+    public void setProxy(HttpHost proxy) {
+        getConfigurationOrCreate().setProxy(proxy);
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return getConfigurationOrCreate().getSslContextParameters();
+    }
+
+    /**
+     * To configure security using SSLContextParameters
+     * @param sslContextParameters
+     */
+    public void setSslContextParameters(SSLContextParameters sslContextParameters) {
+        getConfigurationOrCreate().setSslContextParameters(sslContextParameters);
+    }
+
+    public HttpAsyncClientBuilder getHttpAsyncClientBuilder() {
+        return getConfigurationOrCreate().getHttpAsyncClientBuilder();
+    }
+
+    /**
+     * Custom HTTP async client builder for more complex HTTP client configuration, overrides connectionTimeout, socketTimeout, proxy and sslContext.
+     * Note that a socketTimeout MUST be specified in the builder, otherwise OData requests could block indefinitely
+     * @param httpAsyncClientBuilder
+     */
+    public void setHttpAsyncClientBuilder(HttpAsyncClientBuilder httpAsyncClientBuilder) {
+        getConfigurationOrCreate().setHttpAsyncClientBuilder(httpAsyncClientBuilder);
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/bdab2fc6/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/springboot/Olingo2ComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/springboot/Olingo2ComponentConfiguration.java b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/springboot/Olingo2ComponentConfiguration.java
index 037baa4..733892e 100644
--- a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/springboot/Olingo2ComponentConfiguration.java
+++ b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/springboot/Olingo2ComponentConfiguration.java
@@ -16,7 +16,12 @@
  */
 package org.apache.camel.component.olingo2.springboot;
 
+import java.util.Map;
 import org.apache.camel.component.olingo2.Olingo2Configuration;
+import org.apache.camel.component.olingo2.internal.Olingo2ApiName;
+import org.apache.camel.util.jsse.SSLContextParameters;
+import org.apache.http.HttpHost;
+import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -28,9 +33,57 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class Olingo2ComponentConfiguration {
 
     /**
-     * To use the shared configuration
+     * To use the shared configuration. Properties of the shared configuration
+     * can also be set individually.
      */
     private Olingo2Configuration configuration;
+    /**
+     * What kind of operation to perform
+     */
+    private Olingo2ApiName apiName;
+    /**
+     * What sub operation to use for the selected operation
+     */
+    private String methodName;
+    /**
+     * Target OData service base URI e.g.
+     * http://services.odata.org/OData/OData.svc
+     */
+    private String serviceUri;
+    /**
+     * Content-Type header value can be used to specify JSON or XML message
+     * format defaults to application/json;charset=utf-8
+     */
+    private String contentType;
+    /**
+     * Custom HTTP headers to inject into every request this could include OAuth
+     * tokens etc.
+     */
+    private Map<String, String> httpHeaders;
+    /**
+     * HTTP connection creation timeout in milliseconds defaults to 30000 (30
+     * seconds)
+     */
+    private Integer connectTimeout;
+    /**
+     * HTTP request timeout in milliseconds defaults to 30000 (30 seconds)
+     */
+    private Integer socketTimeout;
+    /**
+     * HTTP proxy server configuration
+     */
+    private HttpHost proxy;
+    /**
+     * To configure security using SSLContextParameters
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Custom HTTP async client builder for more complex HTTP client
+     * configuration overrides connectionTimeout socketTimeout proxy and
+     * sslContext. Note that a socketTimeout MUST be specified in the builder
+     * otherwise OData requests could block indefinitely
+     */
+    private HttpAsyncClientBuilder httpAsyncClientBuilder;
 
     public Olingo2Configuration getConfiguration() {
         return configuration;
@@ -39,4 +92,86 @@ public class Olingo2ComponentConfiguration {
     public void setConfiguration(Olingo2Configuration configuration) {
         this.configuration = configuration;
     }
+
+    public Olingo2ApiName getApiName() {
+        return apiName;
+    }
+
+    public void setApiName(Olingo2ApiName apiName) {
+        this.apiName = apiName;
+    }
+
+    public String getMethodName() {
+        return methodName;
+    }
+
+    public void setMethodName(String methodName) {
+        this.methodName = methodName;
+    }
+
+    public String getServiceUri() {
+        return serviceUri;
+    }
+
+    public void setServiceUri(String serviceUri) {
+        this.serviceUri = serviceUri;
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    public Map<String, String> getHttpHeaders() {
+        return httpHeaders;
+    }
+
+    public void setHttpHeaders(Map<String, String> httpHeaders) {
+        this.httpHeaders = httpHeaders;
+    }
+
+    public Integer getConnectTimeout() {
+        return connectTimeout;
+    }
+
+    public void setConnectTimeout(Integer connectTimeout) {
+        this.connectTimeout = connectTimeout;
+    }
+
+    public Integer getSocketTimeout() {
+        return socketTimeout;
+    }
+
+    public void setSocketTimeout(Integer socketTimeout) {
+        this.socketTimeout = socketTimeout;
+    }
+
+    public HttpHost getProxy() {
+        return proxy;
+    }
+
+    public void setProxy(HttpHost proxy) {
+        this.proxy = proxy;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public HttpAsyncClientBuilder getHttpAsyncClientBuilder() {
+        return httpAsyncClientBuilder;
+    }
+
+    public void setHttpAsyncClientBuilder(
+            HttpAsyncClientBuilder httpAsyncClientBuilder) {
+        this.httpAsyncClientBuilder = httpAsyncClientBuilder;
+    }
 }
\ No newline at end of file


[02/11] camel git commit: CAMEL-10197: Source check

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentConfiguration.java b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentConfiguration.java
index e1a21a2..8acc6b7 100644
--- a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentConfiguration.java
+++ b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/springboot/NettyHttpComponentConfiguration.java
@@ -16,11 +16,23 @@
  */
 package org.apache.camel.component.netty4.http.springboot;
 
+import java.util.List;
+import java.util.Map;
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.group.ChannelGroup;
+import io.netty.handler.ssl.SslHandler;
 import io.netty.util.concurrent.EventExecutorGroup;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.component.netty4.ClientInitializerFactory;
 import org.apache.camel.component.netty4.NettyConfiguration;
+import org.apache.camel.component.netty4.NettyServerBootstrapFactory;
+import org.apache.camel.component.netty4.ServerInitializerFactory;
+import org.apache.camel.component.netty4.TextLineDelimiter;
 import org.apache.camel.component.netty4.http.NettyHttpBinding;
 import org.apache.camel.component.netty4.http.NettyHttpSecurityConfiguration;
 import org.apache.camel.spi.HeaderFilterStrategy;
+import org.apache.camel.util.jsse.SSLContextParameters;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -54,12 +66,362 @@ public class NettyHttpComponentConfiguration {
     private Integer maximumPoolSize;
     /**
      * To use the NettyConfiguration as configuration when creating endpoints.
+     * Properties of the shared configuration can also be set individually.
      */
     private NettyConfiguration configuration;
     /**
      * To use the given EventExecutorGroup
      */
     private EventExecutorGroup executorService;
+    /**
+     * The protocol to use which can be tcp or udp.
+     */
+    private String protocol;
+    /**
+     * The hostname. For the consumer the hostname is localhost or 0.0.0.0 For
+     * the producer the hostname is the remote host to connect to
+     */
+    private String host;
+    /**
+     * The host port number
+     */
+    private Integer port;
+    /**
+     * Setting to choose Multicast over UDP
+     */
+    private Boolean broadcast = false;
+    /**
+     * The TCP/UDP buffer sizes to be used during outbound communication. Size
+     * is bytes.
+     */
+    private Integer sendBufferSize;
+    /**
+     * The TCP/UDP buffer sizes to be used during inbound communication. Size is
+     * bytes.
+     */
+    private Integer receiveBufferSize;
+    /**
+     * Configures the buffer size predictor. See details at Jetty documentation
+     * and this mail thread.
+     */
+    private Integer receiveBufferSizePredictor;
+    /**
+     * When netty works on nio mode it uses default workerCount parameter from
+     * Netty which is cpu_core_threads2. User can use this operation to override
+     * the default workerCount from Netty
+     */
+    private Integer workerCount;
+    /**
+     * When netty works on nio mode it uses default bossCount parameter from
+     * Netty which is 1. User can use this operation to override the default
+     * bossCount from Netty
+     */
+    private Integer bossCount;
+    /**
+     * Setting to ensure socket is not closed due to inactivity
+     */
+    private Boolean keepAlive = false;
+    /**
+     * Setting to improve TCP protocol performance
+     */
+    private Boolean tcpNoDelay = false;
+    /**
+     * Setting to facilitate socket multiplexing
+     */
+    private Boolean reuseAddress = false;
+    /**
+     * Time to wait for a socket connection to be available. Value is in millis.
+     */
+    private Integer connectTimeout;
+    /**
+     * Allows to configure a backlog for netty consumer (server). Note the
+     * backlog is just a best effort depending on the OS. Setting this option to
+     * a value such as 200 500 or 1000 tells the TCP stack how long the accept
+     * queue can be If this option is not configured then the backlog depends on
+     * OS setting.
+     */
+    private Integer backlog;
+    /**
+     * Setting to specify whether SSL encryption is applied to this endpoint
+     */
+    private Boolean ssl = false;
+    /**
+     * When enabled and in SSL mode then the Netty consumer will enrich the
+     * Camel Message with headers having information about the client
+     * certificate such as subject name issuer name serial number and the valid
+     * date range.
+     */
+    private Boolean sslClientCertHeaders = false;
+    /**
+     * Reference to a class that could be used to return an SSL Handler
+     */
+    private SslHandler sslHandler;
+    /**
+     * To configure security using SSLContextParameters
+     */
+    private SSLContextParameters sslContextParameters;
+    /**
+     * Configures whether the server needs client authentication when using SSL.
+     */
+    private Boolean needClientAuth = false;
+    /**
+     * Client side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String keyStoreResource;
+    /**
+     * Server side certificate keystore to be used for encryption. Is loaded by
+     * default from classpath but you can prefix with classpath: file: or http:
+     * to load the resource from different systems.
+     */
+    private String trustStoreResource;
+    /**
+     * Keystore format to be used for payload encryption. Defaults to JKS if not
+     * set
+     */
+    private String keyStoreFormat;
+    /**
+     * Security provider to be used for payload encryption. Defaults to SunX509
+     * if not set.
+     */
+    private String securityProvider;
+    /**
+     * Password setting to use in order to encrypt/decrypt payloads sent using
+     * SSH
+     */
+    private String passphrase;
+    /**
+     * To use a custom ServerInitializerFactory
+     */
+    private ServerInitializerFactory serverInitializerFactory;
+    /**
+     * To use a custom NettyServerBootstrapFactory
+     */
+    private NettyServerBootstrapFactory nettyServerBootstrapFactory;
+    /**
+     * Allows to use a timeout for the Netty producer when calling a remote
+     * server. By default no timeout is in use. The value is in milli seconds so
+     * eg 30000 is 30 seconds. The requestTimeout is using Netty's
+     * ReadTimeoutHandler to trigger the timeout.
+     */
+    private long requestTimeout;
+    /**
+     * Setting to set endpoint as one-way or request-response
+     */
+    private Boolean sync = false;
+    /**
+     * Allows to configure additional netty options using option. as prefix. For
+     * example option.child.keepAlive=false to set the netty option
+     * child.keepAlive=false. See the Netty documentation for possible options
+     * that can be used.
+     */
+    private Map<String, Object> options;
+    /**
+     * Only used for TCP. If no codec is specified you can use this flag to
+     * indicate a text line based codec; if not specified or the value is false
+     * then Object Serialization is assumed over TCP.
+     */
+    private Boolean textline = false;
+    /**
+     * Whether to use native transport instead of NIO. Native transport takes
+     * advantage of the host operating system and is only supported on some
+     * platforms. You need to add the netty JAR for the host operating system
+     * you are using. See more details at:
+     * http://netty.io/wiki/native-transports.html
+     */
+    private Boolean nativeTransport = false;
+    /**
+     * The max line length to use for the textline codec.
+     */
+    private Integer decoderMaxLineLength;
+    /**
+     * Set the BossGroup which could be used for handling the new connection of
+     * the server side across the NettyEndpoint
+     */
+    private EventLoopGroup bossGroup;
+    /**
+     * The delimiter to use for the textline codec. Possible values are LINE and
+     * NULL.
+     */
+    private TextLineDelimiter delimiter;
+    /**
+     * Whether or not to auto append missing end delimiter when sending using
+     * the textline codec.
+     */
+    private Boolean autoAppendDelimiter = false;
+    /**
+     * To use a explicit EventLoopGroup as the boss thread pool. For example to
+     * share a thread pool with multiple consumers. By default each consumer has
+     * their own boss pool with 1 core thread.
+     */
+    private EventLoopGroup workerGroup;
+    /**
+     * To use a explicit ChannelGroup.
+     */
+    private ChannelGroup channelGroup;
+    /**
+     * The encoding (a charset name) to use for the textline codec. If not
+     * provided Camel will use the JVM default Charset.
+     */
+    private String encoding;
+    /**
+     * When using UDP then this option can be used to specify a network
+     * interface by its name such as eth0 to join a multicast group.
+     */
+    private String networkInterface;
+    /**
+     * A list of decoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> decoders;
+    /**
+     * Which protocols to enable when using SSL
+     */
+    private String enabledProtocols;
+    /**
+     * A list of encoders to be used. You can use a String which have values
+     * separated by comma and have the values be looked up in the Registry. Just
+     * remember to prefix the value with so Camel knows it should lookup.
+     */
+    private List<ChannelHandler> encoders;
+    /**
+     * Used only in clientMode in consumer the consumer will attempt to
+     * reconnect on disconnection if this is enabled
+     */
+    private Boolean reconnect = false;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of outbound payloads.
+     */
+    private ChannelHandler encoder;
+    /**
+     * Used if reconnect and clientMode is enabled. The interval in milli
+     * seconds to attempt reconnection
+     */
+    private Integer reconnectInterval;
+    /**
+     * A custom ChannelHandler class that can be used to perform special
+     * marshalling of inbound payloads.
+     */
+    private ChannelHandler decoder;
+    /**
+     * Whether or not to disconnect(close) from Netty Channel right after use.
+     * Can be used for both consumer and producer.
+     */
+    private Boolean disconnect = false;
+    /**
+     * Channels can be lazily created to avoid exceptions if the remote server
+     * is not up and running when the Camel producer is started.
+     */
+    private Boolean lazyChannelCreation = false;
+    /**
+     * Only used for TCP. You can transfer the exchange over the wire instead of
+     * just the body. The following fields are transferred: In body Out body
+     * fault body In headers Out headers fault headers exchange properties
+     * exchange exception. This requires that the objects are serializable.
+     * Camel will exclude any non-serializable objects and log it at WARN level.
+     */
+    private Boolean transferExchange = false;
+    /**
+     * If sync is enabled then this option dictates NettyConsumer if it should
+     * disconnect where there is no reply to send back.
+     */
+    private Boolean disconnectOnNoReply = false;
+    /**
+     * If sync is enabled this option dictates NettyConsumer which logging level
+     * to use when logging a there is no reply to send back.
+     */
+    private LoggingLevel noReplyLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an exception then its logged using
+     * this logging level.
+     */
+    private LoggingLevel serverExceptionCaughtLogLevel;
+    /**
+     * If the server (NettyConsumer) catches an
+     * java.nio.channels.ClosedChannelException then its logged using this
+     * logging level. This is used to avoid logging the closed channel
+     * exceptions as clients can disconnect abruptly and then cause a flood of
+     * closed exceptions in the Netty server.
+     */
+    private LoggingLevel serverClosedChannelExceptionCaughtLogLevel;
+    /**
+     * The netty component installs a default codec if both encoder/deocder is
+     * null and textline is false. Setting allowDefaultCodec to false prevents
+     * the netty component from installing a default codec as the first element
+     * in the filter chain.
+     */
+    private Boolean allowDefaultCodec = false;
+    /**
+     * To use a custom ClientInitializerFactory
+     */
+    private ClientInitializerFactory clientInitializerFactory;
+    /**
+     * Whether to use ordered thread pool to ensure events are processed orderly
+     * on the same channel.
+     */
+    private Boolean usingExecutorService = false;
+    /**
+     * Sets the cap on the number of objects that can be allocated by the pool
+     * (checked out to clients or idle awaiting checkout) at a given time. Use a
+     * negative value for no limit.
+     */
+    private Integer producerPoolMaxActive;
+    /**
+     * Sets the minimum number of instances allowed in the producer pool before
+     * the evictor thread (if active) spawns new objects.
+     */
+    private Integer producerPoolMinIdle;
+    /**
+     * Sets the cap on the number of idle instances in the pool.
+     */
+    private Integer producerPoolMaxIdle;
+    /**
+     * Sets the minimum amount of time (value in millis) an object may sit idle
+     * in the pool before it is eligible for eviction by the idle object
+     * evictor.
+     */
+    private long producerPoolMinEvictableIdle;
+    /**
+     * Whether producer pool is enabled or not. Important: Do not turn this off
+     * as the pooling is needed for handling concurrency and reliable
+     * request/reply.
+     */
+    private Boolean producerPoolEnabled = false;
+    /**
+     * This option supports connection less udp sending which is a real fire and
+     * forget. A connected udp send receive the PortUnreachableException if no
+     * one is listen on the receiving port.
+     */
+    private Boolean udpConnectionlessSending = false;
+    /**
+     * If the clientMode is true netty consumer will connect the address as a
+     * TCP client.
+     */
+    private Boolean clientMode = false;
+    /**
+     * If the useByteBuf is true netty producer will turn the message body into
+     * ByteBuf before sending it out.
+     */
+    private Boolean useByteBuf = false;
+    /**
+     * For UDP only. If enabled the using byte array codec instead of Java
+     * serialization protocol.
+     */
+    private Boolean udpByteArrayCodec = false;
+    /**
+     * This option allows producers to reuse the same Netty Channel for the
+     * lifecycle of processing the Exchange. This is useable if you need to call
+     * a server multiple times in a Camel route and want to use the same network
+     * connection. When using this the channel is not returned to the connection
+     * pool until the Exchange is done; or disconnected if the disconnect option
+     * is set to true. The reused Channel is stored on the Exchange as an
+     * exchange property with the key link NettyConstantsNETTY_CHANNEL which
+     * allows you to obtain the channel during routing and use it as well.
+     */
+    private Boolean reuseChannel = false;
 
     public NettyHttpBinding getNettyHttpBinding() {
         return nettyHttpBinding;
@@ -110,4 +472,539 @@ public class NettyHttpComponentConfiguration {
     public void setExecutorService(EventExecutorGroup executorService) {
         this.executorService = executorService;
     }
+
+    public String getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(String protocol) {
+        this.protocol = protocol;
+    }
+
+    public String getHost() {
+        return host;
+    }
+
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Boolean getBroadcast() {
+        return broadcast;
+    }
+
+    public void setBroadcast(Boolean broadcast) {
+        this.broadcast = broadcast;
+    }
+
+    public Integer getSendBufferSize() {
+        return sendBufferSize;
+    }
+
+    public void setSendBufferSize(Integer sendBufferSize) {
+        this.sendBufferSize = sendBufferSize;
+    }
+
+    public Integer getReceiveBufferSize() {
+        return receiveBufferSize;
+    }
+
+    public void setReceiveBufferSize(Integer receiveBufferSize) {
+        this.receiveBufferSize = receiveBufferSize;
+    }
+
+    public Integer getReceiveBufferSizePredictor() {
+        return receiveBufferSizePredictor;
+    }
+
+    public void setReceiveBufferSizePredictor(Integer receiveBufferSizePredictor) {
+        this.receiveBufferSizePredictor = receiveBufferSizePredictor;
+    }
+
+    public Integer getWorkerCount() {
+        return workerCount;
+    }
+
+    public void setWorkerCount(Integer workerCount) {
+        this.workerCount = workerCount;
+    }
+
+    public Integer getBossCount() {
+        return bossCount;
+    }
+
+    public void setBossCount(Integer bossCount) {
+        this.bossCount = bossCount;
+    }
+
+    public Boolean getKeepAlive() {
+        return keepAlive;
+    }
+
+    public void setKeepAlive(Boolean keepAlive) {
+        this.keepAlive = keepAlive;
+    }
+
+    public Boolean getTcpNoDelay() {
+        return tcpNoDelay;
+    }
+
+    public void setTcpNoDelay(Boolean tcpNoDelay) {
+        this.tcpNoDelay = tcpNoDelay;
+    }
+
+    public Boolean getReuseAddress() {
+        return reuseAddress;
+    }
+
+    public void setReuseAddress(Boolean reuseAddress) {
+        this.reuseAddress = reuseAddress;
+    }
+
+    public Integer getConnectTimeout() {
+        return connectTimeout;
+    }
+
+    public void setConnectTimeout(Integer connectTimeout) {
+        this.connectTimeout = connectTimeout;
+    }
+
+    public Integer getBacklog() {
+        return backlog;
+    }
+
+    public void setBacklog(Integer backlog) {
+        this.backlog = backlog;
+    }
+
+    public Boolean getSsl() {
+        return ssl;
+    }
+
+    public void setSsl(Boolean ssl) {
+        this.ssl = ssl;
+    }
+
+    public Boolean getSslClientCertHeaders() {
+        return sslClientCertHeaders;
+    }
+
+    public void setSslClientCertHeaders(Boolean sslClientCertHeaders) {
+        this.sslClientCertHeaders = sslClientCertHeaders;
+    }
+
+    public SslHandler getSslHandler() {
+        return sslHandler;
+    }
+
+    public void setSslHandler(SslHandler sslHandler) {
+        this.sslHandler = sslHandler;
+    }
+
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(
+            SSLContextParameters sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
+
+    public Boolean getNeedClientAuth() {
+        return needClientAuth;
+    }
+
+    public void setNeedClientAuth(Boolean needClientAuth) {
+        this.needClientAuth = needClientAuth;
+    }
+
+    public String getKeyStoreResource() {
+        return keyStoreResource;
+    }
+
+    public void setKeyStoreResource(String keyStoreResource) {
+        this.keyStoreResource = keyStoreResource;
+    }
+
+    public String getTrustStoreResource() {
+        return trustStoreResource;
+    }
+
+    public void setTrustStoreResource(String trustStoreResource) {
+        this.trustStoreResource = trustStoreResource;
+    }
+
+    public String getKeyStoreFormat() {
+        return keyStoreFormat;
+    }
+
+    public void setKeyStoreFormat(String keyStoreFormat) {
+        this.keyStoreFormat = keyStoreFormat;
+    }
+
+    public String getSecurityProvider() {
+        return securityProvider;
+    }
+
+    public void setSecurityProvider(String securityProvider) {
+        this.securityProvider = securityProvider;
+    }
+
+    public String getPassphrase() {
+        return passphrase;
+    }
+
+    public void setPassphrase(String passphrase) {
+        this.passphrase = passphrase;
+    }
+
+    public ServerInitializerFactory getServerInitializerFactory() {
+        return serverInitializerFactory;
+    }
+
+    public void setServerInitializerFactory(
+            ServerInitializerFactory serverInitializerFactory) {
+        this.serverInitializerFactory = serverInitializerFactory;
+    }
+
+    public NettyServerBootstrapFactory getNettyServerBootstrapFactory() {
+        return nettyServerBootstrapFactory;
+    }
+
+    public void setNettyServerBootstrapFactory(
+            NettyServerBootstrapFactory nettyServerBootstrapFactory) {
+        this.nettyServerBootstrapFactory = nettyServerBootstrapFactory;
+    }
+
+    public long getRequestTimeout() {
+        return requestTimeout;
+    }
+
+    public void setRequestTimeout(long requestTimeout) {
+        this.requestTimeout = requestTimeout;
+    }
+
+    public Boolean getSync() {
+        return sync;
+    }
+
+    public void setSync(Boolean sync) {
+        this.sync = sync;
+    }
+
+    public Map<String, Object> getOptions() {
+        return options;
+    }
+
+    public void setOptions(Map<String, Object> options) {
+        this.options = options;
+    }
+
+    public Boolean getTextline() {
+        return textline;
+    }
+
+    public void setTextline(Boolean textline) {
+        this.textline = textline;
+    }
+
+    public Boolean getNativeTransport() {
+        return nativeTransport;
+    }
+
+    public void setNativeTransport(Boolean nativeTransport) {
+        this.nativeTransport = nativeTransport;
+    }
+
+    public Integer getDecoderMaxLineLength() {
+        return decoderMaxLineLength;
+    }
+
+    public void setDecoderMaxLineLength(Integer decoderMaxLineLength) {
+        this.decoderMaxLineLength = decoderMaxLineLength;
+    }
+
+    public EventLoopGroup getBossGroup() {
+        return bossGroup;
+    }
+
+    public void setBossGroup(EventLoopGroup bossGroup) {
+        this.bossGroup = bossGroup;
+    }
+
+    public TextLineDelimiter getDelimiter() {
+        return delimiter;
+    }
+
+    public void setDelimiter(TextLineDelimiter delimiter) {
+        this.delimiter = delimiter;
+    }
+
+    public Boolean getAutoAppendDelimiter() {
+        return autoAppendDelimiter;
+    }
+
+    public void setAutoAppendDelimiter(Boolean autoAppendDelimiter) {
+        this.autoAppendDelimiter = autoAppendDelimiter;
+    }
+
+    public EventLoopGroup getWorkerGroup() {
+        return workerGroup;
+    }
+
+    public void setWorkerGroup(EventLoopGroup workerGroup) {
+        this.workerGroup = workerGroup;
+    }
+
+    public ChannelGroup getChannelGroup() {
+        return channelGroup;
+    }
+
+    public void setChannelGroup(ChannelGroup channelGroup) {
+        this.channelGroup = channelGroup;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+
+    public String getNetworkInterface() {
+        return networkInterface;
+    }
+
+    public void setNetworkInterface(String networkInterface) {
+        this.networkInterface = networkInterface;
+    }
+
+    public List<ChannelHandler> getDecoders() {
+        return decoders;
+    }
+
+    public void setDecoders(List<ChannelHandler> decoders) {
+        this.decoders = decoders;
+    }
+
+    public String getEnabledProtocols() {
+        return enabledProtocols;
+    }
+
+    public void setEnabledProtocols(String enabledProtocols) {
+        this.enabledProtocols = enabledProtocols;
+    }
+
+    public List<ChannelHandler> getEncoders() {
+        return encoders;
+    }
+
+    public void setEncoders(List<ChannelHandler> encoders) {
+        this.encoders = encoders;
+    }
+
+    public Boolean getReconnect() {
+        return reconnect;
+    }
+
+    public void setReconnect(Boolean reconnect) {
+        this.reconnect = reconnect;
+    }
+
+    public ChannelHandler getEncoder() {
+        return encoder;
+    }
+
+    public void setEncoder(ChannelHandler encoder) {
+        this.encoder = encoder;
+    }
+
+    public Integer getReconnectInterval() {
+        return reconnectInterval;
+    }
+
+    public void setReconnectInterval(Integer reconnectInterval) {
+        this.reconnectInterval = reconnectInterval;
+    }
+
+    public ChannelHandler getDecoder() {
+        return decoder;
+    }
+
+    public void setDecoder(ChannelHandler decoder) {
+        this.decoder = decoder;
+    }
+
+    public Boolean getDisconnect() {
+        return disconnect;
+    }
+
+    public void setDisconnect(Boolean disconnect) {
+        this.disconnect = disconnect;
+    }
+
+    public Boolean getLazyChannelCreation() {
+        return lazyChannelCreation;
+    }
+
+    public void setLazyChannelCreation(Boolean lazyChannelCreation) {
+        this.lazyChannelCreation = lazyChannelCreation;
+    }
+
+    public Boolean getTransferExchange() {
+        return transferExchange;
+    }
+
+    public void setTransferExchange(Boolean transferExchange) {
+        this.transferExchange = transferExchange;
+    }
+
+    public Boolean getDisconnectOnNoReply() {
+        return disconnectOnNoReply;
+    }
+
+    public void setDisconnectOnNoReply(Boolean disconnectOnNoReply) {
+        this.disconnectOnNoReply = disconnectOnNoReply;
+    }
+
+    public LoggingLevel getNoReplyLogLevel() {
+        return noReplyLogLevel;
+    }
+
+    public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) {
+        this.noReplyLogLevel = noReplyLogLevel;
+    }
+
+    public LoggingLevel getServerExceptionCaughtLogLevel() {
+        return serverExceptionCaughtLogLevel;
+    }
+
+    public void setServerExceptionCaughtLogLevel(
+            LoggingLevel serverExceptionCaughtLogLevel) {
+        this.serverExceptionCaughtLogLevel = serverExceptionCaughtLogLevel;
+    }
+
+    public LoggingLevel getServerClosedChannelExceptionCaughtLogLevel() {
+        return serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public void setServerClosedChannelExceptionCaughtLogLevel(
+            LoggingLevel serverClosedChannelExceptionCaughtLogLevel) {
+        this.serverClosedChannelExceptionCaughtLogLevel = serverClosedChannelExceptionCaughtLogLevel;
+    }
+
+    public Boolean getAllowDefaultCodec() {
+        return allowDefaultCodec;
+    }
+
+    public void setAllowDefaultCodec(Boolean allowDefaultCodec) {
+        this.allowDefaultCodec = allowDefaultCodec;
+    }
+
+    public ClientInitializerFactory getClientInitializerFactory() {
+        return clientInitializerFactory;
+    }
+
+    public void setClientInitializerFactory(
+            ClientInitializerFactory clientInitializerFactory) {
+        this.clientInitializerFactory = clientInitializerFactory;
+    }
+
+    public Boolean getUsingExecutorService() {
+        return usingExecutorService;
+    }
+
+    public void setUsingExecutorService(Boolean usingExecutorService) {
+        this.usingExecutorService = usingExecutorService;
+    }
+
+    public Integer getProducerPoolMaxActive() {
+        return producerPoolMaxActive;
+    }
+
+    public void setProducerPoolMaxActive(Integer producerPoolMaxActive) {
+        this.producerPoolMaxActive = producerPoolMaxActive;
+    }
+
+    public Integer getProducerPoolMinIdle() {
+        return producerPoolMinIdle;
+    }
+
+    public void setProducerPoolMinIdle(Integer producerPoolMinIdle) {
+        this.producerPoolMinIdle = producerPoolMinIdle;
+    }
+
+    public Integer getProducerPoolMaxIdle() {
+        return producerPoolMaxIdle;
+    }
+
+    public void setProducerPoolMaxIdle(Integer producerPoolMaxIdle) {
+        this.producerPoolMaxIdle = producerPoolMaxIdle;
+    }
+
+    public long getProducerPoolMinEvictableIdle() {
+        return producerPoolMinEvictableIdle;
+    }
+
+    public void setProducerPoolMinEvictableIdle(
+            long producerPoolMinEvictableIdle) {
+        this.producerPoolMinEvictableIdle = producerPoolMinEvictableIdle;
+    }
+
+    public Boolean getProducerPoolEnabled() {
+        return producerPoolEnabled;
+    }
+
+    public void setProducerPoolEnabled(Boolean producerPoolEnabled) {
+        this.producerPoolEnabled = producerPoolEnabled;
+    }
+
+    public Boolean getUdpConnectionlessSending() {
+        return udpConnectionlessSending;
+    }
+
+    public void setUdpConnectionlessSending(Boolean udpConnectionlessSending) {
+        this.udpConnectionlessSending = udpConnectionlessSending;
+    }
+
+    public Boolean getClientMode() {
+        return clientMode;
+    }
+
+    public void setClientMode(Boolean clientMode) {
+        this.clientMode = clientMode;
+    }
+
+    public Boolean getUseByteBuf() {
+        return useByteBuf;
+    }
+
+    public void setUseByteBuf(Boolean useByteBuf) {
+        this.useByteBuf = useByteBuf;
+    }
+
+    public Boolean getUdpByteArrayCodec() {
+        return udpByteArrayCodec;
+    }
+
+    public void setUdpByteArrayCodec(Boolean udpByteArrayCodec) {
+        this.udpByteArrayCodec = udpByteArrayCodec;
+    }
+
+    public Boolean getReuseChannel() {
+        return reuseChannel;
+    }
+
+    public void setReuseChannel(Boolean reuseChannel) {
+        this.reuseChannel = reuseChannel;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
index f8a90ea..a0bd90b 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/DefaultUndertowHttpBinding.java
@@ -81,14 +81,14 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
     }
 
     public Boolean isTransferException() {
-		return transferException;
-	}
+        return transferException;
+    }
 
-	public void setTransferException(Boolean transferException) {
-		this.transferException = transferException;
-	}
+    public void setTransferException(Boolean transferException) {
+        this.transferException = transferException;
+    }
 
-	@Override
+    @Override
     public Message toCamelMessage(HttpServerExchange httpExchange, Exchange exchange) throws Exception {
         Message result = new DefaultMessage();
 
@@ -160,7 +160,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
                 // store a special header that this request was authenticated using HTTP Basic
                 if (value != null && value.trim().startsWith("Basic")) {
                     if (headerFilterStrategy != null
-                        && !headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
+                            && !headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
                         UndertowHelper.appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic");
                     }
                 }
@@ -172,7 +172,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
                 Object value = it.next();
                 LOG.trace("HTTP-header: {}", value);
                 if (headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
+                        && !headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
                     UndertowHelper.appendHeader(headersMap, name.toString(), value);
                 }
             }
@@ -191,7 +191,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
                     Object value = it.next();
                     LOG.trace("URI-Parameter: {}", value);
                     if (headerFilterStrategy != null
-                        && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) {
+                            && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) {
                         UndertowHelper.appendHeader(headersMap, name, value);
                     }
                 }
@@ -229,7 +229,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
                 // store a special header that this request was authenticated using HTTP Basic
                 if (value != null && value.trim().startsWith("Basic")) {
                     if (headerFilterStrategy != null
-                        && !headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
+                            && !headerFilterStrategy.applyFilterToExternalHeaders(Exchange.AUTHENTICATION, "Basic", exchange)) {
                         UndertowHelper.appendHeader(headersMap, Exchange.AUTHENTICATION, "Basic");
                     }
                 }
@@ -241,7 +241,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
                 Object value = it.next();
                 LOG.trace("HTTP-header: {}", value);
                 if (headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
+                        && !headerFilterStrategy.applyFilterToExternalHeaders(name.toString(), value, exchange)) {
                     UndertowHelper.appendHeader(headersMap, name.toString(), value);
                 }
             }
@@ -268,7 +268,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
             while (it.hasNext()) {
                 String headerValue = tc.convertTo(String.class, it.next());
                 if (headerValue != null && headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) {
+                        && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) {
                     LOG.trace("HTTP-Header: {}={}", key, headerValue);
                     httpExchange.getResponseHeaders().add(new HttpString(key), headerValue);
                 }
@@ -342,7 +342,7 @@ public class DefaultUndertowHttpBinding implements UndertowHttpBinding {
             while (it.hasNext()) {
                 String headerValue = tc.convertTo(String.class, it.next());
                 if (headerValue != null && headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) {
+                        && !headerFilterStrategy.applyFilterToCamelHeaders(key, headerValue, message.getExchange())) {
                     LOG.trace("HTTP-Header: {}={}", key, headerValue);
                     clientRequest.getRequestHeaders().add(new HttpString(key), headerValue);
                 }

http://git-wip-us.apache.org/repos/asf/camel/blob/519765f8/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
index 912856f..deeb6f3 100644
--- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
+++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java
@@ -32,6 +32,7 @@ import io.undertow.predicate.Predicate;
 import io.undertow.predicate.Predicates;
 import io.undertow.server.handlers.PathHandler;
 import io.undertow.server.handlers.PredicateHandler;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
@@ -94,14 +95,14 @@ public class UndertowComponent extends UriEndpointComponent implements RestConsu
 
         // then re-create the http uri with the remaining parameters which the endpoint did not use
         URI httpUri = URISupport.createRemainingURI(
-            new URI(uriHttpUriAddress.getScheme(),
-                uriHttpUriAddress.getUserInfo(),
-                uriHttpUriAddress.getHost(),
-                uriHttpUriAddress.getPort(),
-                uriHttpUriAddress.getPath(),
-                uriHttpUriAddress.getQuery(),
-                uriHttpUriAddress.getFragment()),
-            parameters);
+                new URI(uriHttpUriAddress.getScheme(),
+                        uriHttpUriAddress.getUserInfo(),
+                        uriHttpUriAddress.getHost(),
+                        uriHttpUriAddress.getPort(),
+                        uriHttpUriAddress.getPath(),
+                        uriHttpUriAddress.getQuery(),
+                        uriHttpUriAddress.getFragment()),
+                parameters);
         endpoint.setHttpURI(httpUri);
 
         return endpoint;