Repository: camel
Updated Branches:
  refs/heads/camel-2.17.x d8726e793 -> 80809179f
  refs/heads/master 6b3a55aee -> a40035502


Add option to use String fields for picklists instead of enums

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


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

Branch: refs/heads/master
Commit: a40035502f2387ed163af7114a9a36f17b9eb51b
Parents: 6b3a55a
Author: Sune Keller <abs...@almbrand.dk>
Authored: Mon Feb 15 14:49:21 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Jun 14 09:29:36 2016 +0200

----------------------------------------------------------------------
 .../apache/camel/maven/CamelSalesforceMojo.java | 27 ++++++++++++++++----
 .../src/main/resources/sobject-pojo.vm          | 10 +++++---
 2 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a4003550/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 2787ff9..c58e56a 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
@@ -247,6 +247,9 @@ public class CamelSalesforceMojo extends AbstractMojo {
     @Parameter(property = "camelSalesforce.packageName", defaultValue = 
"org.apache.camel.salesforce.dto")
     protected String packageName;
 
+    @Parameter(property = "camelSalesforce.useStringsForPicklists", 
defaultValue = "false")
+    protected Boolean useStringsForPicklists;
+
     private VelocityEngine engine;
     private long responseTimeout;
 
@@ -372,7 +375,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
 
             getLog().info("Generating Java Classes...");
             // generate POJOs for every object description
-            final GeneratorUtility utility = new GeneratorUtility();
+            final GeneratorUtility utility = new 
GeneratorUtility(useStringsForPicklists);
             // should we provide a flag to control timestamp generation?
             final String generatedDate = new Date().toString();
             for (SObjectDescription description : descriptions) {
@@ -562,6 +565,7 @@ public class CamelSalesforceMojo extends AbstractMojo {
             context.put("utility", utility);
             context.put("desc", description);
             context.put("generatedDate", generatedDate);
+            context.put("useStringsForPicklists", useStringsForPicklists);
 
             Template pojoTemplate = engine.getTemplate(SOBJECT_POJO_VM);
             pojoTemplate.merge(context, writer);
@@ -687,6 +691,11 @@ 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) {
+            this.useStringsForPicklists = useStringsForPicklists;
+        }
 
         public boolean isBlobField(SObjectField field) {
             final String soapType = field.getSoapType();
@@ -700,11 +709,19 @@ public class CamelSalesforceMojo extends AbstractMojo {
         public String getFieldType(SObjectDescription description, 
SObjectField field) throws MojoExecutionException {
             // check if this is a picklist
             if (isPicklist(field)) {
-                // use a pick list enum, which will be created after 
generating the SObject class
-                return description.getName() + "_" + 
enumTypeName(field.getName());
+                if (useStringsForPicklists) {
+                    return String.class.getName();
+                } else {
+                    // use a pick list enum, which will be created after 
generating the SObject class
+                    return description.getName() + "_" + 
enumTypeName(field.getName());
+                }
             } else if (isMultiSelectPicklist(field)) {
-                // use a pick list enum array, enum will be created after 
generating the SObject class
-                return description.getName() + "_" + 
enumTypeName(field.getName()) + "[]";
+                if (useStringsForPicklists) {
+                    return description.getName() + "_" + 
enumTypeName(field.getName()) + "[]";
+                } else {
+                    // use a pick list enum array, enum will be created after 
generating the SObject class
+                    return enumTypeName(field.getName()) + "[]";
+                }
             } else {
                 // map field to Java type
                 final String soapType = field.getSoapType();

http://git-wip-us.apache.org/repos/asf/camel/blob/a4003550/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 0e3cfa1..438d7f5 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
@@ -21,10 +21,13 @@
  */
 package $packageName;
 
+#if ( !$useStringsForPicklists )
 ## add imports for XStreamConverter and PicklistEnumConverter if needed
 #set ( $hasPicklists = $utility.hasPicklists($desc) )
 #set ( $hasMultiSelectPicklists = $utility.hasMultiSelectPicklists($desc) )
+#end
 import com.thoughtworks.xstream.annotations.XStreamAlias;
+#if ( !$useStringsForPicklists )
 #if ( $hasPicklists || $hasMultiSelectPicklists )
 import com.thoughtworks.xstream.annotations.XStreamConverter;
 #end
@@ -36,9 +39,10 @@ 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 org.codehaus.jackson.annotate.JsonProperty;
-#if ( $hasMultiSelectPicklists )
+#if ( !$useStringsForPicklists && $hasMultiSelectPicklists )
 import org.codehaus.jackson.map.annotate.JsonDeserialize;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
 #end
@@ -61,9 +65,9 @@ public class $desc.Name extends AbstractSObjectBase {
 #set ( $propertyName = $fieldName )
 #end
 ## add a converter annotation if needed
-#if ( !$isMultiSelectPicklist && $utility.isPicklist($field) )
+#if ( !$useStringsForPicklists && !$isMultiSelectPicklist && 
$utility.isPicklist($field) )
     @XStreamConverter(PicklistEnumConverter.class)
-#elseif ( $isMultiSelectPicklist )
+#elseif ( !$useStringsForPicklists && $isMultiSelectPicklist )
     @XStreamConverter(MultiSelectPicklistConverter.class)
 #else
 ## add an alias for blob field url if needed

Reply via email to