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:33 UTC

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

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