You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2015/03/20 22:30:41 UTC
[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 <dh...@yahoo.com>
Authored: Mon Feb 23 12:42:21 2015 -0800
Committer: Dhiraj Bokde <dh...@yahoo.com>
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<String> objectNames = new HashSet<String>();
+ final Set<String> objectNames = new TreeSet<String>();
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<SObjectDescription> descriptions = new HashSet<SObjectDescription>();
- 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<String, String>();
for (String[] entry : typeMap) {
@@ -556,9 +561,27 @@ public class CamelSalesforceMojo extends AbstractMojo {
return false;
}
- public PickListValue getLastEntry(SObjectField field) {
- final List<PickListValue> values = field.getPicklistValues();
- return values.get(values.size() - 1);
+ public List<PickListValue> getUniqueValues(SObjectField field) {
+ if (field.getPicklistValues().isEmpty()) {
+ return field.getPicklistValues();
+ }
+ final List<PickListValue> result = new ArrayList<PickListValue>();
+ final Set<String> literals = new HashSet<String>();
+ 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<PickListValue>() {
+ @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;