Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 62B1B173AE for ; Fri, 20 Mar 2015 21:30:38 +0000 (UTC) Received: (qmail 36378 invoked by uid 500); 20 Mar 2015 21:30:33 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 36259 invoked by uid 500); 20 Mar 2015 21:30:33 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 36177 invoked by uid 99); 20 Mar 2015 21:30:33 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Mar 2015 21:30:33 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D240DE17F5; Fri, 20 Mar 2015 21:30:32 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dhirajsb@apache.org To: commits@camel.apache.org Date: Fri, 20 Mar 2015 21:30:41 -0000 Message-Id: <3a943935a8af4f358d1d239f7fac08b3@git.apache.org> In-Reply-To: <932ba6327eda404d970684e76b714421@git.apache.org> References: <932ba6327eda404d970684e76b714421@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [10/17] camel git commit: CAMEL-8395: handles empty Salesforce picklists, also maps urn:address to String CAMEL-8395: handles empty Salesforce picklists, also maps urn:address to String Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2dc15fa0 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2dc15fa0 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2dc15fa0 Branch: refs/heads/camel-2.12.x Commit: 2dc15fa04c4f2ca84a8cdebd69f9f2a2403f62d5 Parents: 1291695 Author: Dhiraj Bokde Authored: Mon Feb 23 12:42:21 2015 -0800 Committer: Dhiraj Bokde Committed: Fri Mar 20 14:24:45 2015 -0700 ---------------------------------------------------------------------- .../apache/camel/maven/CamelSalesforceMojo.java | 63 +++++++++++++------- .../src/main/resources/sobject-picklist.vm | 18 +++--- 2 files changed, 52 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2dc15fa0/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 dab9c70..d517f24 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 @@ -21,6 +21,9 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -28,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; @@ -212,7 +216,7 @@ public class CamelSalesforceMojo extends AbstractMojo { final ObjectMapper mapper = new ObjectMapper(); // call getGlobalObjects to get all SObjects - final Set objectNames = new HashSet(); + final Set objectNames = new TreeSet(); final SyncResponseCallback callback = new SyncResponseCallback(); try { getLog().info("Getting Salesforce Objects..."); @@ -307,23 +311,23 @@ public class CamelSalesforceMojo extends AbstractMojo { // for every accepted name, get SObject description final Set descriptions = new HashSet(); - try { - getLog().info("Retrieving Object descriptions..."); - for (String name : objectNames) { - callback.reset(); - restClient.getDescription(name, callback); - if (!callback.await(TIMEOUT, TimeUnit.MILLISECONDS)) { - throw new MojoExecutionException("Timeout waiting for getDescription for sObject " + name); - } - final SalesforceException ex = callback.getException(); - if (ex != null) { - throw ex; - } - descriptions.add(mapper.readValue(callback.getResponse(), SObjectDescription.class)); + getLog().info("Retrieving Object descriptions..."); + for (String name : objectNames) { + try { + callback.reset(); + restClient.getDescription(name, callback); + if (!callback.await(TIMEOUT, TimeUnit.MILLISECONDS)) { + throw new MojoExecutionException("Timeout waiting for getDescription for sObject " + name); + } + final SalesforceException ex = callback.getException(); + if (ex != null) { + throw ex; + } + descriptions.add(mapper.readValue(callback.getResponse(), SObjectDescription.class)); + } catch (Exception e) { + String msg = "Error getting SObject description for '" + name + "': " + e.getMessage(); + throw new MojoExecutionException(msg, e); } - } catch (Exception e) { - String msg = "Error getting SObject description " + e.getMessage(); - throw new MojoExecutionException(msg, e); } // create package directory @@ -494,6 +498,7 @@ public class CamelSalesforceMojo extends AbstractMojo { {"duration", "javax.xml.datatype.Duration"}, {"NOTATION", "javax.xml.namespace.QName"} */ + {"address", "String"} }; LOOKUP_MAP = new HashMap(); for (String[] entry : typeMap) { @@ -556,9 +561,27 @@ public class CamelSalesforceMojo extends AbstractMojo { return false; } - public PickListValue getLastEntry(SObjectField field) { - final List values = field.getPicklistValues(); - return values.get(values.size() - 1); + public List getUniqueValues(SObjectField field) { + if (field.getPicklistValues().isEmpty()) { + return field.getPicklistValues(); + } + final List result = new ArrayList(); + final Set literals = new HashSet(); + for (PickListValue listValue : field.getPicklistValues()) { + final String value = listValue.getValue(); + if (!literals.contains(value)) { + literals.add(value); + result.add(listValue); + } + } + literals.clear(); + Collections.sort(result, new Comparator() { + @Override + public int compare(PickListValue o1, PickListValue o2) { + return o1.getValue().compareTo(o2.getValue()); + } + }); + return result; } public boolean isPicklist(SObjectField field) { http://git-wip-us.apache.org/repos/asf/camel/blob/2dc15fa0/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 8e23fdb..bb3a22f 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 @@ -29,18 +29,18 @@ import org.codehaus.jackson.annotate.JsonValue; * Salesforce Enumeration DTO for picklist $field.Name */ public enum $enumName { -## find the last entry -#set ( $lastEntry = $utility.getLastEntry($field) ) +#set ( $values = $utility.getUniqueValues($field) ) -#foreach ( $entry in $field.PicklistValues) -#set ( $value = $entry.Value ) -#if ( $entry == $lastEntry ) -#set ( $delim = ";" ) +## handle empty picklists +#if ( $values.isEmpty() ) + ; // empty picklist! #else -#set ( $delim = ",") -#end +#foreach ( $entry in $values) +#set ( $value = $entry.Value ) // $value - $utility.getEnumConstant($value)("$value")$delim + $utility.getEnumConstant($value)("$value")#if ( $foreach.hasNext ),#else;#end + +#end #end final String value;