camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From davscl...@apache.org
Subject [10/11] camel git commit: CAMEL-10197: Added plain get/set to components for spring-boot configuration
Date Tue, 02 Aug 2016 06:43:38 GMT
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:
 


Mime
View raw message