FAQ
Add option to use Java 1.8 Optional<?> for POJO fields

Also upgrades to Jackson 2.x to allow injecting a custom
`ObjectMapper`, which in turn allows registering the `Jdk8Module`
when using Java 1.8, which handles (de)serializing of Optional<?>
in a reasonable manner.

Signed-off-by: Sune Keller <absukl@almbrand.dk>


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

Branch: refs/heads/master
Commit: 8bb8c5968ef7ab3eba55f2678b68d810ea7c01f2
Parents: 3c58e21
Author: Sune Keller <absukl@almbrand.dk>
Authored: Tue Jun 14 16:32:01 2016 +0200
Committer: Claus Ibsen <davsclaus@apache.org>
Committed: Thu Jun 16 07:55:44 2016 +0200

----------------------------------------------------------------------
  .../camel-salesforce-component/pom.xml | 9 +-
  .../src/main/docs/salesforce.adoc | 7 +-
  .../salesforce/SalesforceConsumer.java | 15 ++-
  .../salesforce/SalesforceEndpointConfig.java | 17 +++
  .../api/MultiSelectPicklistDeserializer.java | 45 ++++----
  .../api/MultiSelectPicklistSerializer.java | 18 +--
  .../StringMultiSelectPicklistDeserializer.java | 32 +++---
  .../StringMultiSelectPicklistSerializer.java | 19 +--
  .../salesforce/api/dto/AbstractDTOBase.java | 6 +-
  .../salesforce/api/dto/AbstractSObjectBase.java | 3 +-
  .../salesforce/api/dto/RecentItem.java | 3 +-
  .../salesforce/api/dto/RestResources.java | 2 +-
  .../salesforce/api/dto/SearchResult.java | 3 +-
  .../analytics/reports/DateGranularityEnum.java | 4 +-
  .../api/dto/analytics/reports/FormatEnum.java | 4 +-
  .../api/dto/analytics/reports/Report.java | 8 +-
  .../api/dto/analytics/reports/SummaryValue.java | 3 +-
  .../salesforce/internal/SalesforceSession.java | 2 +-
  .../client/DefaultAnalyticsApiClient.java | 4 +-
  .../internal/client/DefaultRestClient.java | 4 +-
  .../salesforce/internal/dto/LoginError.java | 2 +-
  .../salesforce/internal/dto/LoginToken.java | 4 +-
  .../internal/dto/NotifyForFieldsEnum.java | 4 +-
  .../internal/dto/NotifyForOperationsEnum.java | 4 +-
  .../salesforce/internal/dto/PushTopic.java | 2 +-
  .../internal/processor/JsonRestProcessor.java | 19 +--
  .../internal/streaming/PushTopicHelper.java | 2 +-
  .../api/MultiSelectPicklistJsonTest.java | 2 +-
  .../salesforce/dto/generated/Account.java | 2 +-
  .../salesforce/dto/generated/Document.java | 2 +-
  .../salesforce/dto/generated/Line_Item__c.java | 2 +-
  .../salesforce/dto/generated/MSPTest.java | 19 +--
  .../dto/generated/Merchandise__c.java | 2 +-
  .../salesforce/internal/LoginTokenTest.java | 2 +-
  .../apache/camel/maven/CamelSalesforceMojo.java | 46 +++++++-
  .../src/main/resources/sobject-picklist.vm | 4 +-
  .../src/main/resources/sobject-pojo-optional.vm | 115 +++++++++++++++++++
  .../src/main/resources/sobject-pojo.vm | 9 +-
  .../resources/sobject-query-records-optional.vm | 45 ++++++++
  39 files changed, 377 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/pom.xml b/components/camel-salesforce/camel-salesforce-component/pom.xml
index ac12d73..780c9cf 100644
--- a/components/camel-salesforce/camel-salesforce-component/pom.xml
+++ b/components/camel-salesforce/camel-salesforce-component/pom.xml
@@ -68,9 +68,12 @@
        <version>${jetty9-version}</version>
      </dependency>
      <dependency>
- <groupId>org.codehaus.jackson</groupId>
- <artifactId>jackson-mapper-asl</artifactId>
- <version>${jackson-version}</version>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
      </dependency>
      <dependency>
        <groupId>com.thoughtworks.xstream</groupId>

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/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 1548a4f..614b537 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
@@ -230,8 +230,10 @@ The Salesforce component supports 16 options which are listed below.



+
+
  // endpoint options: START
-The Salesforce component supports 36 endpoint options which are listed below:
+The Salesforce component supports 37 endpoint options which are listed below:

  {% raw %}
  [width="100%",cols="2s,1,1m,1m,5",options="header"]
@@ -256,6 +258,7 @@ The Salesforce component supports 36 endpoint options which are listed below:
notifyForOperations | common | | NotifyForOperationsEnum | Notify for operations options are ALL CREATE EXTENDED UPDATE (API version 29.0)
notifyForOperationUndelete | common | | Boolean | Notify for un-delete operation defaults to false (API version = 29.0)
notifyForOperationUpdate | common | | Boolean | Notify for update operation defaults to false (API version = 29.0)
+| objectMapper | common | | ObjectMapper | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects.
reportId | common | | String | Salesforce1 Analytics report Id
reportMetadata | common | | ReportMetadata | Salesforce1 Analytics report metadata for filtering
resultId | common | | String | Bulk API Result ID
@@ -278,6 +281,8 @@ The Salesforce component supports 36 endpoint options which are listed below:
  // endpoint options: END


+
+
  For obvious security reasons it is recommended that the clientId,
  clientSecret, userName and password fields be not set in the pom.xml.
  The plugin should be configured for the rest of the properties, and can

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
index e6434a5..dc7471c 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceConsumer.java
@@ -25,17 +25,17 @@ import org.apache.camel.AsyncCallback;
  import org.apache.camel.Exchange;
  import org.apache.camel.Processor;
  import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.component.salesforce.internal.PayloadFormat;
  import org.apache.camel.component.salesforce.internal.client.DefaultRestClient;
  import org.apache.camel.component.salesforce.internal.client.RestClient;
  import org.apache.camel.component.salesforce.internal.streaming.PushTopicHelper;
  import org.apache.camel.component.salesforce.internal.streaming.SubscriptionHelper;
  import org.apache.camel.impl.DefaultConsumer;
  import org.apache.camel.util.ServiceHelper;
-import org.codehaus.jackson.map.ObjectMapper;
  import org.cometd.bayeux.Message;
  import org.cometd.bayeux.client.ClientSessionChannel;

+import com.fasterxml.jackson.databind.ObjectMapper;
+
  /**
   * The Salesforce consumer.
   */
@@ -51,6 +51,7 @@ public class SalesforceConsumer extends DefaultConsumer {

      private final SalesforceEndpoint endpoint;
      private final SubscriptionHelper subscriptionHelper;
+ private final ObjectMapper objectMapper;

      private final String topicName;
      private final Class<?> sObjectClass;
@@ -60,6 +61,12 @@ public class SalesforceConsumer extends DefaultConsumer {
      public SalesforceConsumer(SalesforceEndpoint endpoint, Processor processor, SubscriptionHelper helper) {
          super(endpoint, processor);
          this.endpoint = endpoint;
+ ObjectMapper configuredObjectMapper = endpoint.getConfiguration().getObjectMapper();
+ if (configuredObjectMapper != null) {
+ this.objectMapper = configuredObjectMapper;
+ } else {
+ this.objectMapper = OBJECT_MAPPER;
+ }

          // check minimum supported API version
          if (Double.valueOf(endpoint.getConfiguration().getApiVersion()) < MINIMUM_VERSION) {
@@ -158,7 +165,7 @@ public class SalesforceConsumer extends DefaultConsumer {
          final Map<String, Object> sObject = (Map<String, Object>) data.get(SOBJECT_PROPERTY);
          try {

- final String sObjectString = OBJECT_MAPPER.writeValueAsString(sObject);
+ final String sObjectString = objectMapper.writeValueAsString(sObject);
              log.debug("Received SObject: {}", sObjectString);

              if (sObjectClass == null) {
@@ -166,7 +173,7 @@ public class SalesforceConsumer extends DefaultConsumer {
                  in.setBody(sObject);
              } else {
                  // create the expected SObject
- in.setBody(OBJECT_MAPPER.readValue(
+ in.setBody(objectMapper.readValue(
                          new StringReader(sObjectString), sObjectClass));
              }
          } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
index 2bb6306..1622b21 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java
@@ -29,6 +29,8 @@ import org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnu
  import org.apache.camel.spi.UriParam;
  import org.apache.camel.spi.UriParams;

+import com.fasterxml.jackson.databind.ObjectMapper;
+
  /**
   * Salesforce Endpoint configuration.
   */
@@ -145,6 +147,10 @@ public class SalesforceEndpointConfig implements Cloneable {
      @UriParam
      private SalesforceHttpClient httpClient;

+ // To allow custom ObjectMapper (for registering extra datatype modules)
+ @UriParam
+ private ObjectMapper objectMapper;
+
      public SalesforceEndpointConfig copy() {
          try {
              final SalesforceEndpointConfig copy = (SalesforceEndpointConfig) super.clone();
@@ -485,6 +491,17 @@ public class SalesforceEndpointConfig implements Cloneable {
          return httpClient;
      }

+ public ObjectMapper getObjectMapper() {
+ return objectMapper;
+ }
+
+ /**
+ * Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects.
+ */
+ public void setObjectMapper(ObjectMapper objectMapper) {
+ this.objectMapper = objectMapper;
+ }
+
      public Map<String, Object> toValueMap() {

          final Map<String, Object> valueMap = new HashMap<String, Object>();

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java
index 406f478..2d70b0d 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java
@@ -20,38 +20,41 @@ import java.io.IOException;
  import java.lang.reflect.Array;
  import java.lang.reflect.Method;

-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.JsonParser;
-import org.codehaus.jackson.map.BeanProperty;
-import org.codehaus.jackson.map.ContextualDeserializer;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.DeserializationContext;
-import org.codehaus.jackson.map.JsonDeserializer;
-import org.codehaus.jackson.map.JsonMappingException;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.BeanProperty;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

  /**
   * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists.
   */
  public class MultiSelectPicklistDeserializer
- extends JsonDeserializer<Object> implements ContextualDeserializer<Object> {
+ extends StdDeserializer<Object> implements ContextualDeserializer {
+
+ private static final long serialVersionUID = -4568286926393043366L;

      private static final String FACTORY_METHOD = "fromValue";

- private final Class<? extends Enum> enumClass;
+ private final Class<? extends Enum<?>> enumClass;
      private final Method factoryMethod;

- @SuppressWarnings("unused")
      public MultiSelectPicklistDeserializer() {
- enumClass = null;
- factoryMethod = null;
+ super(Object.class);
+ this.factoryMethod = null;
+ this.enumClass = null;
      }

- public MultiSelectPicklistDeserializer(Class<? extends Enum> enumClass) throws JsonMappingException {
+ public MultiSelectPicklistDeserializer(JsonParser jp, Class<? extends Enum<?>> enumClass) throws JsonMappingException {
+ super(enumClass);
          this.enumClass = enumClass;
          try {
              this.factoryMethod = enumClass.getMethod(FACTORY_METHOD, String.class);
          } catch (NoSuchMethodException e) {
- throw new JsonMappingException("Invalid pick-list enum class " + enumClass.getName(), e);
+ throw new JsonMappingException(jp, "Invalid pick-list enum class " + enumClass.getName(), e);
          }
      }

@@ -60,7 +63,7 @@ public class MultiSelectPicklistDeserializer

          // validate enum class
          if (enumClass == null) {
- throw new JsonMappingException("Unable to parse unknown pick-list type");
+ throw new JsonMappingException(jp, "Unable to parse unknown pick-list type");
          }

          final String listValue = jp.getText();
@@ -77,18 +80,18 @@ public class MultiSelectPicklistDeserializer

              return resultArray;
          } catch (Exception e) {
- throw new JsonParseException("Exception reading multi-select pick list value", jp.getCurrentLocation(), e);
+ throw new JsonParseException(jp, "Exception reading multi-select pick list value", jp.getCurrentLocation());
          }
      }

- @Override
      @SuppressWarnings("unchecked")
- public JsonDeserializer<Object> createContextual(DeserializationConfig config, BeanProperty property) throws JsonMappingException {
+ @Override
+ public JsonDeserializer<?> createContextual(DeserializationContext context, BeanProperty property) throws JsonMappingException {
          final Class<?> rawClass = property.getType().getRawClass();
          final Class<?> componentType = rawClass.getComponentType();
          if (componentType == null || !componentType.isEnum()) {
- throw new JsonMappingException("Pick list Enum array expected for " + rawClass);
+ throw new JsonMappingException(context.getParser(), "Pick list Enum array expected for " + rawClass);
          }
- return new MultiSelectPicklistDeserializer((Class<? extends Enum>) componentType);
+ return new MultiSelectPicklistDeserializer(context.getParser(), (Class<? extends Enum<?>>) componentType);
      }
  }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java
index affbd1b..836942a 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java
@@ -20,17 +20,21 @@ import java.io.IOException;
  import java.lang.reflect.Array;
  import java.lang.reflect.Method;

-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.JsonGenerator;
-import org.codehaus.jackson.map.JsonSerializer;
-import org.codehaus.jackson.map.SerializerProvider;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;

  /**
   * Jackson Serializer for generating ';' separated strings for MultiSelect pick-lists.
   */
-public class MultiSelectPicklistSerializer extends JsonSerializer<Object> {
+public class MultiSelectPicklistSerializer extends StdSerializer<Object> {

- private static final String FACTORY_METHOD = "fromValue";
+ private static final long serialVersionUID = 3064638196900557354L;
+
+ protected MultiSelectPicklistSerializer() {
+ super(Object.class);
+ }

      @Override
      public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
@@ -58,7 +62,7 @@ public class MultiSelectPicklistSerializer extends JsonSerializer<Object> {
          } catch (Exception e) {
              throw new JsonGenerationException(
                      String.format("Exception writing pick list value %s of type %s: %s",
- value, value.getClass().getName(), e.getMessage()), e);
+ value, value.getClass().getName(), e.getMessage()), jgen);
          }
      }
  }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java
index 5fe86ae..3cd2b49 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java
@@ -19,20 +19,26 @@ package org.apache.camel.component.salesforce.api;
  import java.io.IOException;
  import java.lang.reflect.Array;

-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.JsonParser;
-import org.codehaus.jackson.map.BeanProperty;
-import org.codehaus.jackson.map.ContextualDeserializer;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.DeserializationContext;
-import org.codehaus.jackson.map.JsonDeserializer;
-import org.codehaus.jackson.map.JsonMappingException;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.BeanProperty;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;

  /**
   * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists.
   */
  public class StringMultiSelectPicklistDeserializer
- extends JsonDeserializer<Object> implements ContextualDeserializer<Object> {
+ extends StdDeserializer<Object> implements ContextualDeserializer {
+
+ private static final long serialVersionUID = 7380774744798254325L;
+
+ protected StringMultiSelectPicklistDeserializer(Class<?> vc) {
+ super(vc);
+ }

      @Override
      public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
@@ -51,17 +57,17 @@ public class StringMultiSelectPicklistDeserializer

              return resultArray;
          } catch (Exception e) {
- throw new JsonParseException("Exception reading multi-select pick list value", jp.getCurrentLocation(), e);
+ throw new JsonParseException(jp, "Exception reading multi-select pick list value", jp.getCurrentLocation(), e);
          }
      }

      @Override
- public JsonDeserializer<Object> createContextual(DeserializationConfig config, BeanProperty property) throws JsonMappingException {
+ public JsonDeserializer<?> createContextual(DeserializationContext context, BeanProperty property) throws JsonMappingException {
          final Class<?> rawClass = property.getType().getRawClass();
          final Class<?> componentType = rawClass.getComponentType();
          if (componentType == null || componentType != String.class) {
- throw new JsonMappingException("Pick list String array expected for " + rawClass);
+ throw new JsonMappingException(context.getParser(), "Pick list String array expected for " + rawClass);
          }
- return new StringMultiSelectPicklistDeserializer();
+ return new StringMultiSelectPicklistDeserializer(rawClass);
      }
  }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java
index a3b15e4..6fcf9e0 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java
@@ -17,17 +17,22 @@
  package org.apache.camel.component.salesforce.api;

  import java.io.IOException;
-import java.lang.reflect.Array;

-import org.codehaus.jackson.JsonGenerationException;
-import org.codehaus.jackson.JsonGenerator;
-import org.codehaus.jackson.map.JsonSerializer;
-import org.codehaus.jackson.map.SerializerProvider;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;

  /**
   * Jackson Serializer for generating ';' separated strings for MultiSelect pick-lists.
   */
-public class StringMultiSelectPicklistSerializer extends JsonSerializer<Object> {
+public class StringMultiSelectPicklistSerializer extends StdSerializer<Object> {
+
+ private static final long serialVersionUID = 1406195556960561677L;
+
+ protected StringMultiSelectPicklistSerializer(Class<Object> t) {
+ super(t);
+ }

      @Override
      public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
@@ -50,7 +55,7 @@ public class StringMultiSelectPicklistSerializer extends JsonSerializer<Object>
          } catch (Exception e) {
              throw new JsonGenerationException(
                      String.format("Exception writing pick list value %s of type %s: %s",
- value, value.getClass().getName(), e.getMessage()), e);
+ value, value.getClass().getName(), e.getMessage()), jgen);
          }
      }
  }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java
index 9c0954a..cd173b8 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java
@@ -19,11 +19,11 @@ package org.apache.camel.component.salesforce.api.dto;
  import java.io.IOException;
  import java.io.StringWriter;

-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;

  // disable null values in json output
-@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
+@JsonInclude(JsonInclude.Include.NON_NULL)
  public abstract class AbstractDTOBase {

      private static final ObjectMapper MAPPER = new ObjectMapper();

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
index 7337a52..6d46d32 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractSObjectBase.java
@@ -16,8 +16,9 @@
   */
  package org.apache.camel.component.salesforce.api.dto;

-import org.codehaus.jackson.annotate.JsonProperty;
  import org.joda.time.DateTime;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
  //CHECKSTYLE:OFF
  public class AbstractSObjectBase extends AbstractDTOBase {


http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RecentItem.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RecentItem.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RecentItem.java
index dc69dcf..320a004 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RecentItem.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RecentItem.java
@@ -16,7 +16,8 @@
   */
  package org.apache.camel.component.salesforce.api.dto;

-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
  //CHECKSTYLE:OFF
  public class RecentItem extends AbstractDTOBase {


http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
index 46d6944..f795528 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/RestResources.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.salesforce.api.dto;

  import com.thoughtworks.xstream.annotations.XStreamAlias;

-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;

  /**
   * DTO for Salesforce Resources.

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
index eb75c6a..8091fea 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/SearchResult.java
@@ -17,7 +17,8 @@
  package org.apache.camel.component.salesforce.api.dto;

  import com.thoughtworks.xstream.annotations.XStreamAlias;
-import org.codehaus.jackson.annotate.JsonProperty;
+
+import com.fasterxml.jackson.annotation.JsonProperty;

  /**
   * DTO for Salesforce SOSL Search result record.

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
index 56e8702..0f99f25 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/DateGranularityEnum.java
@@ -16,8 +16,8 @@
   */
  package org.apache.camel.component.salesforce.api.dto.analytics.reports;

-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;

  /**
   * Report results groupings date granularity.

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
index 939acd9..202ba7d 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/FormatEnum.java
@@ -16,8 +16,8 @@
   */
  package org.apache.camel.component.salesforce.api.dto.analytics.reports;

-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;

  /**
   * Salesforce Enumeration DTO for picklist Format

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
index 452480a..656b2db 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/Report.java
@@ -16,12 +16,12 @@
   */
  package org.apache.camel.component.salesforce.api.dto.analytics.reports;

-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
-
  import org.apache.camel.component.salesforce.api.PicklistEnumConverter;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamConverter;

  /**
   * Salesforce DTO for SObject Report

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/SummaryValue.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/SummaryValue.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/SummaryValue.java
index 34127c7..833c203 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/SummaryValue.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/analytics/reports/SummaryValue.java
@@ -17,7 +17,8 @@
  package org.apache.camel.component.salesforce.api.dto.analytics.reports;

  import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase;
-import org.codehaus.jackson.annotate.JsonAnySetter;
+
+import com.fasterxml.jackson.annotation.JsonAnySetter;

  /**
   * Report results summary value DTO for data cells and aggregates.

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
index 0fbe8ec..af95f6b 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java
@@ -34,7 +34,7 @@ import org.apache.camel.component.salesforce.api.dto.RestError;
  import org.apache.camel.component.salesforce.internal.dto.LoginError;
  import org.apache.camel.component.salesforce.internal.dto.LoginToken;
  import org.apache.camel.util.ObjectHelper;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
  import org.eclipse.jetty.client.HttpConversation;
  import org.eclipse.jetty.client.api.ContentResponse;
  import org.eclipse.jetty.client.api.Request;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
index 29c7c70..7b1976e 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java
@@ -32,8 +32,8 @@ import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportIns
  import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata;
  import org.apache.camel.component.salesforce.api.dto.analytics.reports.SyncReportResults;
  import org.apache.camel.component.salesforce.internal.SalesforceSession;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
  import org.eclipse.jetty.client.api.Request;
  import org.eclipse.jetty.client.api.Response;
  import org.eclipse.jetty.client.util.BytesContentProvider;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
index ed5388c..989be56 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java
@@ -36,8 +36,8 @@ import org.apache.camel.component.salesforce.internal.dto.RestChoices;
  import org.apache.camel.component.salesforce.internal.dto.RestErrors;
  import org.apache.camel.util.ObjectHelper;
  import org.apache.camel.util.URISupport;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
  import org.eclipse.jetty.client.api.Request;
  import org.eclipse.jetty.client.api.Response;
  import org.eclipse.jetty.client.util.InputStreamContentProvider;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginError.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginError.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginError.java
index 50055a0..ee89917 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginError.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginError.java
@@ -16,7 +16,7 @@
   */
  package org.apache.camel.component.salesforce.internal.dto;

-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;

  /**
   * DTO for Salesforce login error

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginToken.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginToken.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginToken.java
index 7f7e2c6..bdf4b1c 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginToken.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/LoginToken.java
@@ -16,8 +16,8 @@
   */
  package org.apache.camel.component.salesforce.internal.dto;

-import org.codehaus.jackson.annotate.JsonIgnoreProperties;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;

  /**
   * DTO for Salesforce login

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForFieldsEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForFieldsEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForFieldsEnum.java
index 9096091..8e032ec 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForFieldsEnum.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForFieldsEnum.java
@@ -16,8 +16,8 @@
   */
  package org.apache.camel.component.salesforce.internal.dto;

-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;

  /**
   * Salesforce Enumeration DTO for picklist NotifyForFields

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForOperationsEnum.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForOperationsEnum.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForOperationsEnum.java
index b5eda3b..e78e013 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForOperationsEnum.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/NotifyForOperationsEnum.java
@@ -16,8 +16,8 @@
   */
  package org.apache.camel.component.salesforce.internal.dto;

-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;

  /**
   * Salesforce Enumeration DTO for picklist NotifyForOperations

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/PushTopic.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/PushTopic.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/PushTopic.java
index 4274dc1..05bb476 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/PushTopic.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/dto/PushTopic.java
@@ -21,7 +21,7 @@ import com.thoughtworks.xstream.annotations.XStreamConverter;

  import org.apache.camel.component.salesforce.api.PicklistEnumConverter;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;

  //CHECKSTYLE:OFF
  /**

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
index 16dee3f..15e214e 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
@@ -35,11 +35,12 @@ import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo;
  import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
  import org.apache.camel.component.salesforce.api.dto.SearchResult;
  import org.apache.camel.component.salesforce.api.dto.Version;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-import org.codehaus.jackson.type.TypeReference;
  import org.eclipse.jetty.util.StringUtil;

+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+
  public class JsonRestProcessor extends AbstractRestProcessor {

      private static final String RESPONSE_TYPE = JsonRestProcessor.class.getName() + ".responseType";
@@ -50,9 +51,13 @@ public class JsonRestProcessor extends AbstractRestProcessor {
      public JsonRestProcessor(SalesforceEndpoint endpoint) throws SalesforceException {
          super(endpoint);

- this.objectMapper = new ObjectMapper();
- // enable date time support including Joda DateTime
- this.objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ if (endpoint.getConfiguration().getObjectMapper() != null) {
+ this.objectMapper = endpoint.getConfiguration().getObjectMapper();
+ } else {
+ this.objectMapper = new ObjectMapper();
+ // enable date time support including Joda DateTime
+ this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+ }
      }

      @Override
@@ -127,7 +132,7 @@ public class JsonRestProcessor extends AbstractRestProcessor {
                              + (in.getBody() == null ? null : in.getBody().getClass());
                          throw new SalesforceException(msg, null);
                      } else {
- request = new ByteArrayInputStream(body.getBytes(StringUtil.__UTF8));
+ request = new ByteArrayInputStream(body.getBytes(StringUtil.__UTF8_CHARSET));
                      }
                  }
              }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java
index 7423064..b770292 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java
@@ -28,7 +28,7 @@ import org.apache.camel.component.salesforce.internal.client.RestClient;
  import org.apache.camel.component.salesforce.internal.client.SyncResponseCallback;
  import org.apache.camel.component.salesforce.internal.dto.PushTopic;
  import org.apache.camel.component.salesforce.internal.dto.QueryRecordsPushTopic;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
  import org.eclipse.jetty.http.HttpStatus;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java
index 250c628..36bdd7e 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java
@@ -17,7 +17,7 @@
  package org.apache.camel.component.salesforce.api;

  import org.apache.camel.component.salesforce.dto.generated.MSPTest;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
  import org.junit.Test;

  import static org.junit.Assert.assertArrayEquals;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Account.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Account.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Account.java
index e73da4b..c7e779c 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Account.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Account.java
@@ -24,7 +24,7 @@ package org.apache.camel.component.salesforce.dto.generated;
  import com.thoughtworks.xstream.annotations.XStreamAlias;

  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;

  //CHECKSTYLE:OFF
  /**

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java
index 67e4b30..29dfd35 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.salesforce.dto.generated;

  import com.thoughtworks.xstream.annotations.XStreamAlias;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;

  //CHECKSTYLE:OFF
  /**

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java
index ce35cd8..a382e31 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.salesforce.dto.generated;

  import com.thoughtworks.xstream.annotations.XStreamAlias;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;
  //CHECKSTYLE:OFF
  @XStreamAlias("Line_Item__c")
  public class Line_Item__c extends AbstractSObjectBase {

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSPTest.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSPTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSPTest.java
index a825391..780282d 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSPTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSPTest.java
@@ -16,18 +16,20 @@
   */
  package org.apache.camel.component.salesforce.dto.generated;

-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamConverter;
-
  import org.apache.camel.component.salesforce.api.MultiSelectPicklistConverter;
  import org.apache.camel.component.salesforce.api.MultiSelectPicklistDeserializer;
  import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.annotate.JsonValue;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamConverter;

  /**
   * Sample POJO for MSP tests.
@@ -41,6 +43,7 @@ public class MSPTest extends AbstractSObjectBase {

      @JsonProperty("MspField")
      @JsonSerialize(using = MultiSelectPicklistSerializer.class)
+ @JsonInclude(value = Include.ALWAYS)
      public MSPEnum[] getMspField() {
          return MspField;
      }

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Merchandise__c.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Merchandise__c.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Merchandise__c.java
index 1fd3b9f..8f898fa 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Merchandise__c.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Merchandise__c.java
@@ -18,7 +18,7 @@ package org.apache.camel.component.salesforce.dto.generated;

  import com.thoughtworks.xstream.annotations.XStreamAlias;
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;
  //CHECKSTYLE:OFF
  @XStreamAlias("Merchandise__c")
  public class Merchandise__c extends AbstractSObjectBase {

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java
index 5d08d49..36759eb 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java
@@ -17,7 +17,7 @@
  package org.apache.camel.component.salesforce.internal;

  import org.apache.camel.component.salesforce.internal.dto.LoginToken;
-import org.codehaus.jackson.map.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
  import org.junit.Test;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java
index 5d3d40e..a79645c 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/CamelSalesforceMojo.java
@@ -67,7 +67,6 @@ import org.apache.velocity.app.VelocityEngine;
  import org.apache.velocity.runtime.RuntimeConstants;
  import org.apache.velocity.runtime.log.Log4JLogChute;
  import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
-import org.codehaus.jackson.map.ObjectMapper;
  import org.eclipse.jetty.client.HttpProxy;
  import org.eclipse.jetty.client.Origin;
  import org.eclipse.jetty.client.ProxyConfiguration;
@@ -77,6 +76,8 @@ import org.eclipse.jetty.client.util.BasicAuthentication;
  import org.eclipse.jetty.client.util.DigestAuthentication;
  import org.eclipse.jetty.util.ssl.SslContextFactory;

+import com.fasterxml.jackson.databind.ObjectMapper;
+
  /**
   * Goal to generate DTOs for Salesforce SObjects
   */
@@ -90,7 +91,9 @@ public class CamelSalesforceMojo extends AbstractMojo {
      private static final String PACKAGE_NAME_PATTERN = "^[a-z]+(\\.[a-z][a-z0-9]*)*$";

      private static final String SOBJECT_POJO_VM = "/sobject-pojo.vm";
+ private static final String SOBJECT_POJO_OPTIONAL_VM = "/sobject-pojo-optional.vm";
      private static final String SOBJECT_QUERY_RECORDS_VM = "/sobject-query-records.vm";
+ private static final String SOBJECT_QUERY_RECORDS_OPTIONAL_VM = "/sobject-query-records-optional.vm";
      private static final String SOBJECT_PICKLIST_VM = "/sobject-picklist.vm";

      // used for velocity logging, to avoid creating velocity.log
@@ -247,6 +250,9 @@ public class CamelSalesforceMojo extends AbstractMojo {
      @Parameter(property = "camelSalesforce.packageName", defaultValue = "org.apache.camel.salesforce.dto")
      protected String packageName;

+ @Parameter(property = "camelSalesforce.useOptionals", defaultValue = "false")
+ protected boolean useOptionals;
+
      @Parameter(property = "camelSalesforce.useStringsForPicklists", defaultValue = "false")
      protected Boolean useStringsForPicklists;

@@ -269,7 +275,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
          engine.init();

          // make sure we can load both templates
- if (!engine.resourceExists(SOBJECT_POJO_VM) || !engine.resourceExists(SOBJECT_QUERY_RECORDS_VM)) {
+ if (!engine.resourceExists(SOBJECT_POJO_VM) || !engine.resourceExists(SOBJECT_QUERY_RECORDS_VM) || !engine.resourceExists(SOBJECT_POJO_OPTIONAL_VM) || !engine.resourceExists(SOBJECT_QUERY_RECORDS_OPTIONAL_VM)) {
              throw new MojoExecutionException("Velocity templates not found");
          }

@@ -323,7 +329,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
                      objectNames.add(sObject.getName());
                  }
              } catch (Exception e) {
- String msg = "Error getting global Objects " + e.getMessage();
+ String msg = "Error getting global Objects: " + e.getMessage();
                  throw new MojoExecutionException(msg, e);
              }

@@ -557,7 +563,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
          String fileName = description.getName() + JAVA_EXT;
          BufferedWriter writer = null;
          try {
- final File pojoFile = new File(pkgDir, fileName);
+ File pojoFile = new File(pkgDir, fileName);
              writer = new BufferedWriter(new FileWriter(pojoFile));

              VelocityContext context = new VelocityContext();
@@ -567,11 +573,21 @@ public class CamelSalesforceMojo extends AbstractMojo {
              context.put("generatedDate", generatedDate);
              context.put("useStringsForPicklists", useStringsForPicklists);

- Template pojoTemplate = engine.getTemplate(SOBJECT_POJO_VM);
+ Template pojoTemplate;
+ pojoTemplate = engine.getTemplate(SOBJECT_POJO_VM);
              pojoTemplate.merge(context, writer);
              // close pojoFile
              writer.close();

+ if (useOptionals) {
+ fileName = description.getName() + "Optional" + JAVA_EXT;
+ pojoTemplate = engine.getTemplate(SOBJECT_POJO_OPTIONAL_VM);
+ pojoFile = new File(pkgDir, fileName);
+ writer = new BufferedWriter(new FileWriter(pojoFile));
+ pojoTemplate.merge(context, writer);
+ // close pojoFile
+ writer.close();
+ }
              // write required Enumerations for any picklists
              for (SObjectField field : description.getFields()) {
                  if (utility.isPicklist(field) || utility.isMultiSelectPicklist(field)) {
@@ -611,6 +627,24 @@ public class CamelSalesforceMojo extends AbstractMojo {
              // close QueryRecords file
              writer.close();

+ if (useOptionals) {
+ // write the QueryRecords Optional class
+ fileName = "QueryRecords" + description.getName() + "Optional" + JAVA_EXT;
+ queryFile = new File(pkgDir, fileName);
+ writer = new BufferedWriter(new FileWriter(queryFile));
+
+ context = new VelocityContext();
+ context.put("packageName", packageName);
+ context.put("desc", description);
+ context.put("generatedDate", generatedDate);
+
+ queryTemplate = engine.getTemplate(SOBJECT_QUERY_RECORDS_OPTIONAL_VM);
+ queryTemplate.merge(context, writer);
+
+ // close QueryRecords file
+ writer.close();
+ }
+
          } catch (Exception e) {
              String msg = "Error creating " + fileName + ": " + e.getMessage();
              throw new MojoExecutionException(msg, e);
@@ -691,6 +725,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
          private static final String BASE64BINARY = "base64Binary";
          private static final String MULTIPICKLIST = "multipicklist";
          private static final String PICKLIST = "picklist";
+
          private Boolean useStringsForPicklists;

          public GeneratorUtility(Boolean useStringsForPicklists) {
@@ -780,7 +815,6 @@ public class CamelSalesforceMojo extends AbstractMojo {
          }

          public boolean isPicklist(SObjectField field) {
-// return field.getPicklistValues() != null && !field.getPicklistValues().isEmpty();
              return PICKLIST.equals(field.getType());
          }


http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-picklist.vm
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-picklist.vm b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-picklist.vm
index 50da67a..5212d81 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-picklist.vm
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-picklist.vm
@@ -21,8 +21,8 @@
   */
  package $packageName;

-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;

  /**
   * Salesforce Enumeration DTO for picklist $field.Name

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo-optional.vm
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo-optional.vm b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo-optional.vm
new file mode 100644
index 0000000..4842307
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo-optional.vm
@@ -0,0 +1,115 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+## sobject-pojo.vm
+/*
+ * Salesforce DTO generated by camel-salesforce-maven-plugin
+ * Generated on: $generatedDate
+ */
+package $packageName;
+
+import java.util.Optional;
+
+## add imports for XStreamConverter and PicklistEnumConverter if needed
+#set ( $hasPicklists = $utility.hasPicklists($desc) )
+#set ( $hasMultiSelectPicklists = $utility.hasMultiSelectPicklists($desc) )
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+#if ( ($hasPicklists && !$useStringsForPicklists) || $hasMultiSelectPicklists )
+import com.thoughtworks.xstream.annotations.XStreamConverter;
+#end
+#if ( $hasPicklists && !$useStringsForPicklists )
+import org.apache.camel.component.salesforce.api.PicklistEnumConverter;
+#end
+#if ( $hasMultiSelectPicklists )
+#if ( $useStringsForPicklists )
+import org.apache.camel.component.salesforce.api.StringMultiSelectPicklistConverter;
+import org.apache.camel.component.salesforce.api.StringMultiSelectPicklistDeserializer;
+import org.apache.camel.component.salesforce.api.StringMultiSelectPicklistSerializer;
+#else
+import org.apache.camel.component.salesforce.api.MultiSelectPicklistConverter;
+import org.apache.camel.component.salesforce.api.MultiSelectPicklistDeserializer;
+import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer;
+#end
+#end
+import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
+import com.fasterxml.jackson.annotation.JsonProperty;
+#if ( $hasMultiSelectPicklists )
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+#end
+
+/**
+ * Salesforce DTO for SObject $desc.Name
+ */
+@XStreamAlias("${desc.Name}Optional")
+public class ${desc.Name}Optional extends AbstractSObjectBase {
+
+#foreach ( $field in $desc.Fields )
+#if ( $utility.notBaseField($field.Name) )
+#set ( $fieldName = $field.Name )
+#set ( $fieldType = $utility.getFieldType($desc, $field) )
+#set ( $isMultiSelectPicklist = $utility.isMultiSelectPicklist($field) )
+ // $fieldName
+#if ( $utility.isBlobField($field) )
+#set ( $propertyName = $fieldName + "Url" )
+#else
+#set ( $propertyName = $fieldName )
+#end
+## add a converter annotation if needed
+#if ( !$useStringsForPicklists && !$isMultiSelectPicklist && $utility.isPicklist($field) )
+ @XStreamConverter(PicklistEnumConverter.class)
+#elseif ( $isMultiSelectPicklist )
+#if ( $useStringsForPicklists )
+ @XStreamConverter(StringMultiSelectPicklistConverter.class)
+#else
+ @XStreamConverter(MultiSelectPicklistConverter.class)
+#end
+#else
+## add an alias for blob field url if needed
+#if ( $propertyName != $fieldName )
+ // blob field url, use getBlobField to get the content
+ @XStreamAlias("$fieldName")
+#end
+#end
+ private Optional<$fieldType> $propertyName;
+
+ @JsonProperty("$fieldName")
+#if ( $isMultiSelectPicklist )
+#if ( $useStringsForPicklists )
+ @JsonSerialize(using = StringMultiSelectPicklistSerializer.class)
+#else
+ @JsonSerialize(using = MultiSelectPicklistSerializer.class)
+#end
+#end
+ public Optional<$fieldType> get$propertyName() {
+ return this.$propertyName;
+ }
+
+ @JsonProperty("$fieldName")
+#if ( $isMultiSelectPicklist )
+#if ( $useStringsForPicklists )
+ @JsonDeserialize(using = StringMultiSelectPicklistDeserializer.class)
+#else
+ @JsonDeserialize(using = MultiSelectPicklistDeserializer.class)
+#end
+#end
+ public void set$propertyName(Optional<$fieldType> $propertyName) {
+ this.$propertyName = $propertyName;
+ }
+
+#end
+#end
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo.vm
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo.vm b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo.vm
index 6e1c47a..5711fb3 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo.vm
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-pojo.vm
@@ -43,10 +43,12 @@ import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer;
  #end
  #end
  import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonProperty;
  #if ( $hasMultiSelectPicklists )
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
  #end

  /**
@@ -91,6 +93,7 @@ public class $desc.Name extends AbstractSObjectBase {
  #else
      @JsonSerialize(using = MultiSelectPicklistSerializer.class)
  #end
+ @JsonInclude(value = Include.ALWAYS)
  #end
      public $fieldType get$propertyName() {
          return this.$propertyName;

http://git-wip-us.apache.org/repos/asf/camel/blob/8bb8c596/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-query-records-optional.vm
----------------------------------------------------------------------
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-query-records-optional.vm b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-query-records-optional.vm
new file mode 100644
index 0000000..56a6f25
--- /dev/null
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/resources/sobject-query-records-optional.vm
@@ -0,0 +1,45 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+## sobject-query-records.vm
+/*
+ * Salesforce Query DTO generated by camel-salesforce-maven-plugin
+ * Generated on: $generatedDate
+ */
+package $packageName;
+
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase;
+
+import java.util.List;
+
+/**
+ * Salesforce QueryRecords DTO for type $desc.Name
+ */
+#set( $descName = "${desc.Name}Optional" )
+public class QueryRecords$descName extends AbstractQueryRecordsBase {
+
+ @XStreamImplicit
+ private List<$descName> records;
+
+ public List<$descName> getRecords() {
+ return records;
+ }
+
+ public void setRecords(List<$descName> records) {
+ this.records = records;
+ }
+}

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 4 of 5 | next ›
Discussion Overview
groupcommits @
categoriescamel
postedJun 16, '16 at 6:34a
activeJun 16, '16 at 6:34a
posts5
users1
websitecamel.apache.org

1 user in discussion

Davsclaus: 5 posts

People

Translate

site design / logo © 2017 Grokbase