You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/11/30 10:08:17 UTC
[camel] branch master updated: CAMEL-15856: camel-salesforce custom
enum values (#4701)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 2a0abf8 CAMEL-15856: camel-salesforce custom enum values (#4701)
2a0abf8 is described below
commit 2a0abf84740b430a0b7c31c140cdfbb88693f59d
Author: Jeremy Ross <je...@jeremyross.org>
AuthorDate: Mon Nov 30 04:08:02 2020 -0600
CAMEL-15856: camel-salesforce custom enum values (#4701)
Ability to override picklist enum value generation.
---
.../camel-salesforce-maven-plugin/README.md | 14 +++++-
.../java/org/apache/camel/maven/GenerateMojo.java | 23 +++++++---
.../src/main/resources/sobject-picklist.vm | 4 +-
.../maven/CamelSalesforceMojoIntegrationTest.java | 1 -
.../camel/maven/CamelSalesforceMojoOutputTest.java | 5 ++-
.../src/test/resources/case.json | 51 ++++++++++++++++++++++
.../src/test/resources/generated/Case.java | 15 +++++++
.../generated/Case_PickListAccentMarkEnum.java | 2 -
.../generated/Case_PickListQuotationMarkEnum.java | 2 -
.../generated/Case_PickListSlashEnum.java | 2 -
...um.java => Case_PickListValueOverrideEnum.java} | 16 +++----
11 files changed, 108 insertions(+), 27 deletions(-)
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/README.md b/components/camel-salesforce/camel-salesforce-maven-plugin/README.md
index b3b4c35..c1a9d76 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/README.md
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/README.md
@@ -20,9 +20,19 @@ The plugin configuration has the following properties.
* packageName - Java package name for generated DTOs, defaults to org.apache.camel.salesforce.dto.
* customTypes - override default types in generated DTOs
* useStringsForPicklists - Use strings instead of enumerations for picklists. Default is false.
-* childRelationshipNameSuffix - Suffix for child relationship property name. Necessary if an SObject
+* childRelationshipNameSuffix - Suffix for child relationship property name. Necessary if an SObject
has a lookup field with the same name as its Child Relationship Name. If setting to something other
-than default, "List" is a sensible value.
+than default, "List" is a sensible value.
+* enumerationOverrideProperties - Override picklist enum value generation via a java.util.Properties instance.
+Property name format: `SObject.FieldName.PicklistValue`. Property value is the desired enum value. E.g.:
+ ```
+ <enumerationOverrideProperties>
+ <property>
+ <name>Student__c.FinalGrade__c.A-</name>
+ <value>AMinus</value>
+ </property>
+ </enumerationOverrideProperties>
+ ```
Additonal properties to provide proxy information, if behind a firewall.
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
index 60f1483..648c6c8 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/GenerateMojo.java
@@ -85,16 +85,21 @@ public class GenerateMojo extends AbstractSalesforceMojo {
return descriptions.externalIdsOf(name);
}
- public String getEnumConstant(final String value) {
+ public String getEnumConstant(
+ final String objectName, final String fieldName,
+ final String picklistValue) {
+ final String key = String.join(".", objectName, fieldName, picklistValue);
+ if (enumerationOverrideProperties.containsKey(key)) {
+ return enumerationOverrideProperties.get(key).toString();
+ }
- // TODO add support for supplementary characters
final StringBuilder result = new StringBuilder();
boolean changed = false;
- if (!Character.isJavaIdentifierStart(value.charAt(0))) {
+ if (!Character.isJavaIdentifierStart(picklistValue.charAt(0))) {
result.append("_");
changed = true;
}
- for (final char c : value.toCharArray()) {
+ for (final char c : picklistValue.toCharArray()) {
if (Character.isJavaIdentifierPart(c)) {
result.append(c);
} else {
@@ -104,7 +109,7 @@ public class GenerateMojo extends AbstractSalesforceMojo {
}
}
- return changed ? result.toString().toUpperCase() : value.toUpperCase();
+ return changed ? result.toString().toUpperCase() : picklistValue.toUpperCase();
}
public String getFieldType(final SObjectDescription description, final SObjectField field) {
@@ -355,6 +360,13 @@ public class GenerateMojo extends AbstractSalesforceMojo {
String childRelationshipNameSuffix;
/**
+ * Override picklist enum value generation via a java.util.Properties instance. Property name format:
+ * `SObject.FieldName.PicklistValue`. Property value is the desired enum value.
+ */
+ @Parameter(property = "camelSalesforce.enumerationOverrideProperties")
+ Properties enumerationOverrideProperties = new Properties();
+
+ /**
* Names of specific picklist/multipicklist fields, which should be converted to Enum (default case) if property
* {@link this#useStringsForPicklists} is set to true. Format: SObjectApiName.FieldApiName (e.g. Account.DataSource)
*/
@@ -455,6 +467,7 @@ public class GenerateMojo extends AbstractSalesforceMojo {
final String enumFileName = enumName + JAVA_EXT;
final File enumFile = new File(pkgDir, enumFileName);
+ context.put("sObjectName", description.getName());
context.put("field", field);
context.put("enumName", enumName);
final Template enumTemplate = engine.getTemplate(SOBJECT_PICKLIST_VM, UTF_8);
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 29d542e..9ef6458 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
@@ -39,11 +39,10 @@ public enum $enumName {
#foreach ( $entry in $values)
#set ( $value = $entry.Value )
// $value
- $utility.getEnumConstant($value)("$esc.escapeJava($value)")#if ( $foreach.hasNext ),#else;#end
+ $utility.getEnumConstant($sObjectName, $field.name, $value)("$esc.escapeJava($value)")#if ( $foreach.hasNext ),#else;#end
#end
#end
-
final String value;
private $enumName(String value) {
@@ -65,5 +64,4 @@ public enum $enumName {
}
throw new IllegalArgumentException(value);
}
-
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoIntegrationTest.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoIntegrationTest.java
index bf73206..5a5bd6e 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoIntegrationTest.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoIntegrationTest.java
@@ -80,5 +80,4 @@ public class CamelSalesforceMojoIntegrationTest {
return mojo;
}
-
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java
index e084a6c..53d6669 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java
@@ -78,6 +78,8 @@ public class CamelSalesforceMojoOutputTest {
mojo.descriptions = new ObjectDescriptions(client, 0, null, null, null, null, mojo.getLog());
+ mojo.enumerationOverrideProperties.put("Case.PickListValueOverride.A+", "APlus");
+
Set<String> sObjectNames = StreamSupport.stream(mojo.descriptions.fetched().spliterator(), false)
.map(SObjectDescription::getName).collect(Collectors.toSet());
@@ -102,7 +104,8 @@ public class CamelSalesforceMojoOutputTest {
return Arrays.asList(testCase(TEST_CASE_FILE, "Case.java"),
testCase(TEST_CASE_FILE, "Case_PickListAccentMarkEnum.java"),
testCase(TEST_CASE_FILE, "Case_PickListQuotationMarkEnum.java"),
- testCase(TEST_CASE_FILE, "Case_PickListSlashEnum.java"), //
+ testCase(TEST_CASE_FILE, "Case_PickListSlashEnum.java"),
+ testCase(TEST_CASE_FILE, "Case_PickListValueOverrideEnum.java"),
testCase(TEST_CASE_FILE, "QueryRecordsCase.java"),
testCase(TEST_CALCULATED_FORMULA_FILE, "ComplexCalculatedFormula.java"),
testCase(TEST_CALCULATED_FORMULA_FILE, "QueryRecordsComplexCalculatedFormula.java"),
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/case.json b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/case.json
index 938744f..5e74348 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/case.json
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/case.json
@@ -190,6 +190,57 @@
"highScaleNumber": false,
"queryByDistance": false,
"encrypted": false
+ },
+ {
+ "length": 255,
+ "name": "PickListValueOverride",
+ "type": "picklist",
+ "label": "ValueOverride",
+ "updateable": true,
+ "calculated": false,
+ "caseSensitive": false,
+ "unique": false,
+ "nillable": true,
+ "precision": 0,
+ "scale": 0,
+ "byteLength": 765,
+ "nameField": false,
+ "sortable": true,
+ "filterable": true,
+ "writeRequiresMasterRead": false,
+ "externalId": false,
+ "idLookup": false,
+ "inlineHelpText": "",
+ "createable": true,
+ "soapType": "xsd:string",
+ "autoNumber": false,
+ "restrictedPicklist": false,
+ "namePointing": false,
+ "custom": true,
+ "defaultedOnCreate": false,
+ "deprecatedAndHidden": false,
+ "htmlFormatted": false,
+ "picklistValues": [
+ {
+ "value": "A+",
+ "label": "A+",
+ "active": true,
+ "defaultValue": false
+ }
+ ],
+ "dependentPicklist": false,
+ "referenceTo": [
+
+ ],
+ "cascadeDelete": false,
+ "restrictedDelete": false,
+ "digits": "0",
+ "groupable": true,
+ "permissionable": true,
+ "displayLocationInDecimal": false,
+ "highScaleNumber": false,
+ "queryByDistance": false,
+ "encrypted": false
}
]
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java
index dd6f7a9..07470f3 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java
@@ -76,6 +76,19 @@ public class Case extends AbstractDescribedSObjectBase {
this.PickListQuotationMark = PickListQuotationMark;
}
+ @XStreamConverter(PicklistEnumConverter.class)
+ private Case_PickListValueOverrideEnum PickListValueOverride;
+
+ @JsonProperty("PickListValueOverride")
+ public Case_PickListValueOverrideEnum getPickListValueOverride() {
+ return this.PickListValueOverride;
+ }
+
+ @JsonProperty("PickListValueOverride")
+ public void setPickListValueOverride(Case_PickListValueOverrideEnum PickListValueOverride) {
+ this.PickListValueOverride = PickListValueOverride;
+ }
+
@Override
public final SObjectDescription description() {
@@ -104,6 +117,8 @@ public class Case extends AbstractDescribedSObjectBase {
fields1.add(sObjectField2);
final SObjectField sObjectField3 = createField("PickListQuotationMark", "QuotationMark", "picklist", "xsd:string", 255, false, true, false, false, true, false, false);
fields1.add(sObjectField3);
+ final SObjectField sObjectField4 = createField("PickListValueOverride", "ValueOverride", "picklist", "xsd:string", 255, false, true, false, false, true, false, false);
+ fields1.add(sObjectField4);
description.setKeyPrefix("500");
description.setLabel("Caso");
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListAccentMarkEnum.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListAccentMarkEnum.java
index d134d8e..3d1f033 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListAccentMarkEnum.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListAccentMarkEnum.java
@@ -17,7 +17,6 @@ public enum Case_PickListAccentMarkEnum {
// Audiencia de Conciliación
AUDIENCIA_DE_CONCILIACIÓN("Audiencia de Conciliaci\u00F3n");
-
final String value;
private Case_PickListAccentMarkEnum(String value) {
@@ -38,5 +37,4 @@ public enum Case_PickListAccentMarkEnum {
}
throw new IllegalArgumentException(value);
}
-
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java
index 0b1f0f7..06be2be 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java
@@ -17,7 +17,6 @@ public enum Case_PickListQuotationMarkEnum {
// No apretar "miralo"
NO_APRETAR__MIRALO_("No apretar \"miralo\"");
-
final String value;
private Case_PickListQuotationMarkEnum(String value) {
@@ -38,5 +37,4 @@ public enum Case_PickListQuotationMarkEnum {
}
throw new IllegalArgumentException(value);
}
-
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListSlashEnum.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListSlashEnum.java
index a6c77bb..bf0e09b 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListSlashEnum.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListSlashEnum.java
@@ -17,7 +17,6 @@ public enum Case_PickListSlashEnum {
// Acciones relacionadas con cotizaciones y/o avisos de entrega
ACCIONES_RELACIONADAS_CON_COTIZACIONES_Y_O_AVISOS_DE_ENTREGA("Acciones relacionadas con cotizaciones y/o avisos de entrega");
-
final String value;
private Case_PickListSlashEnum(String value) {
@@ -38,5 +37,4 @@ public enum Case_PickListSlashEnum {
}
throw new IllegalArgumentException(value);
}
-
}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListValueOverrideEnum.java
similarity index 60%
copy from components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java
copy to components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListValueOverrideEnum.java
index 0b1f0f7..a034ee6 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListQuotationMarkEnum.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case_PickListValueOverrideEnum.java
@@ -9,18 +9,17 @@ import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
/**
- * Salesforce Enumeration DTO for picklist PickListQuotationMark
+ * Salesforce Enumeration DTO for picklist PickListValueOverride
*/
@Generated("org.apache.camel.maven.CamelSalesforceMojo")
-public enum Case_PickListQuotationMarkEnum {
-
- // No apretar "miralo"
- NO_APRETAR__MIRALO_("No apretar \"miralo\"");
+public enum Case_PickListValueOverrideEnum {
+ // A+
+ APlus("A+");
final String value;
- private Case_PickListQuotationMarkEnum(String value) {
+ private Case_PickListValueOverrideEnum(String value) {
this.value = value;
}
@@ -30,13 +29,12 @@ public enum Case_PickListQuotationMarkEnum {
}
@JsonCreator
- public static Case_PickListQuotationMarkEnum fromValue(String value) {
- for (Case_PickListQuotationMarkEnum e : Case_PickListQuotationMarkEnum.values()) {
+ public static Case_PickListValueOverrideEnum fromValue(String value) {
+ for (Case_PickListValueOverrideEnum e : Case_PickListValueOverrideEnum.values()) {
if (e.value.equals(value)) {
return e;
}
}
throw new IllegalArgumentException(value);
}
-
}