You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2019/02/19 09:48:36 UTC

[camel] branch master updated: CAMEL-12963: camel-salesforce-maven-plugin gene...

This is an automated email from the ASF dual-hosted git repository.

zregvart 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 1eb6a7a  CAMEL-12963: camel-salesforce-maven-plugin gene...
1eb6a7a is described below

commit 1eb6a7ad79ffa47ce6f108a5bb302acc2a0ac243
Author: Przemyslaw <pr...@capgemini.com>
AuthorDate: Sun Feb 17 13:46:53 2019 +0100

    CAMEL-12963: camel-salesforce-maven-plugin gene...
    
    ...rates code that does not compile
    
    This fixes issue with non-compilable code of created DTOs related to
    Lookup and External Ids fields.
    
    Also adds sorting of fields so that different field order caused by
    differences in introspection don't end up generating different source
    files.
    
    Based on contribution by Przemyslaw Lenik <pr...@capgemini.com>
---
 .../internal/client/DefaultCompositeApiClient.java |   2 -
 .../camel-salesforce-maven-plugin/pom.xml          |   5 +
 .../java/org/apache/camel/maven/GenerateMojo.java  |  40 +++---
 .../org/apache/camel/maven/ObjectDescriptions.java |   4 +
 .../src/main/resources/sobject-pojo.vm             |  27 ++--
 .../camel/maven/CamelSalesforceMojoOutputTest.java |  17 +--
 .../src/test/resources/generated/Asset.java        |  66 +++++-----
 .../resources/generated/Asset_LocalDateTime.java   |  66 +++++-----
 .../src/test/resources/generated/Case.java         |  64 +++++-----
 .../src/test/resources/generated/Case.java-Java9   | 138 ---------------------
 .../generated/ComplexCalculatedFormula.java        |  64 +++++-----
 .../generated/ComplexCalculatedFormula.java-Java9  | 103 ---------------
 .../resources/generated/With_Reference__c.java     | 108 ++++++++--------
 13 files changed, 239 insertions(+), 465 deletions(-)

diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
index 3bed532..a5caf33 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java
@@ -58,8 +58,6 @@ import org.eclipse.jetty.http.HttpHeader;
 import org.eclipse.jetty.http.HttpMethod;
 import org.eclipse.jetty.http.HttpStatus;
 import org.eclipse.jetty.util.StringUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class DefaultCompositeApiClient extends AbstractClientBase implements CompositeApiClient {
 
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
index de94a0b..c7fe0df 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
@@ -131,6 +131,11 @@
       <artifactId>commons-lang3</artifactId>
       <version>${commons-lang3-version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+      <version>${commons-text-version}</version>
+    </dependency>
 
     <!-- logging -->
     <dependency>
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 69158d6..a55fbff 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
@@ -26,15 +26,19 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 import java.util.Stack;
+import java.util.TreeMap;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase;
@@ -44,8 +48,8 @@ import org.apache.camel.component.salesforce.api.dto.SObjectField;
 import org.apache.camel.component.salesforce.internal.client.RestClient;
 import org.apache.camel.support.IntrospectionSupport;
 import org.apache.camel.util.StringHelper;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.StringEscapeUtils;
 import org.apache.log4j.Logger;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
@@ -112,7 +116,7 @@ public class GenerateMojo extends AbstractSalesforceMojo {
                 // the SObject class
                 return description.getName() + "_" + enumTypeName(field.getName());
             } else if (isMultiSelectPicklist(field)) {
-                if (useStringsForPicklists) {
+                if (Boolean.TRUE.equals(useStringsForPicklists)) {
                     return String.class.getName() + "[]";
                 }
 
@@ -156,6 +160,10 @@ public class GenerateMojo extends AbstractSalesforceMojo {
             return result;
         }
 
+        public boolean hasExternalIds(final String name) {
+            return descriptions.hasExternalIds(name);
+        }
+
         public boolean hasMultiSelectPicklists(final SObjectDescription desc) {
             for (final SObjectField field : desc.getFields()) {
                 if (isMultiSelectPicklist(field)) {
@@ -228,11 +236,17 @@ public class GenerateMojo extends AbstractSalesforceMojo {
         }
 
         public Set<Map.Entry<String, Object>> propertiesOf(final Object object) {
-            final Map<String, Object> properties = new HashMap<>();
+            final Map<String, Object> properties = new TreeMap<>();
             IntrospectionSupport.getProperties(object, properties, null, false);
 
+            final Function<Map.Entry<String, Object>, String> keyMapper = e -> StringUtils.capitalize(e.getKey());
+            final Function<Map.Entry<String, Object>, Object> valueMapper = Map.Entry::getValue;
+            final BinaryOperator<Object> mergeFunction = (u, v) -> {
+                throw new IllegalStateException(String.format("Duplicate key %s", u));
+            };
+            final Supplier<Map<String, Object>> mapSupplier = LinkedHashMap::new;
             return properties.entrySet().stream()
-                .collect(Collectors.toMap(e -> StringUtils.capitalize(e.getKey()), Map.Entry::getValue)).entrySet();
+                .collect(Collectors.toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)).entrySet();
         }
 
         public void push(final String additional) {
@@ -338,7 +352,8 @@ public class GenerateMojo extends AbstractSalesforceMojo {
     @Parameter(property = "camelSalesforce.useStringsForPicklists", defaultValue = "false")
     private Boolean useStringsForPicklists;
 
-    void processDescription(final File pkgDir, final SObjectDescription description, final GeneratorUtility utility) throws IOException {
+    void processDescription(final File pkgDir, final SObjectDescription description, final GeneratorUtility utility)
+        throws IOException {
 
         // generate a source file for SObject
         final VelocityContext context = new VelocityContext();
@@ -376,14 +391,13 @@ public class GenerateMojo extends AbstractSalesforceMojo {
 
             for (final String reference : field.getReferenceTo()) {
                 final List<SObjectField> externalIds = descriptions.externalIdsOf(reference);
+                final String lookupClassName = reference + "_Lookup";
 
-                for (final SObjectField externalId : externalIds) {
-                    final String lookupClassName = reference + "_Lookup";
-
-                    if (generatedLookupObjects.contains(lookupClassName)) {
-                        continue;
-                    }
+                if (generatedLookupObjects.contains(lookupClassName)) {
+                    continue;
+                }
 
+                for (final SObjectField externalId : externalIds) {
                     generatedLookupObjects.add(lookupClassName);
                     final String lookupClassFileName = lookupClassName + JAVA_EXT;
                     final File lookupClassFile = new File(pkgDir, lookupClassFileName);
@@ -474,8 +488,6 @@ public class GenerateMojo extends AbstractSalesforceMojo {
         getLog().info("Generating Java Classes...");
         // generate POJOs for every object description
         final GeneratorUtility utility = new GeneratorUtility();
-        // should we provide a flag to control timestamp generation?
-        final String generatedDate = new Date().toString();
         for (final SObjectDescription description : descriptions.fetched()) {
             if (Defaults.IGNORED_OBJECTS.contains(description.getName())) {
                 continue;
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/ObjectDescriptions.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/ObjectDescriptions.java
index 8c918b1..eb6bbeb 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/ObjectDescriptions.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/main/java/org/apache/camel/maven/ObjectDescriptions.java
@@ -70,6 +70,10 @@ final class ObjectDescriptions {
         return descriptionOf(name).getFields().stream().filter(SObjectField::isExternalId).collect(Collectors.toList());
     }
 
+    boolean hasExternalIds(final String name) {
+        return descriptionOf(name).getFields().stream().anyMatch(SObjectField::isExternalId);
+    }
+
     Iterable<SObjectDescription> fetched() {
         return descriptions.values();
     }
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 7aed228..adf4644 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
@@ -129,22 +129,29 @@ public class $desc.Name extends AbstractDescribedSObjectBase {
 
 #if ( $utility.isLookup($field) )## IS LOOKUP
 #foreach ( $reference in $field.getReferenceTo() )## REFERENCE LOOP
-#foreach ( $externalIds in $utility.externalIdsOf($reference) )## EXTERNAL ID LOOP
-#set( $relationshipAsFieldName = $field.getRelationshipName() )
+#if ( $utility.hasExternalIds($reference) )## HAS EXTERNAL IDS
+#set( $fieldName = $field.getName() )
+#if ( $fieldName.endsWith("Id") )## PROPERTY IS ID
+#set( $jsonPropertyName = $fieldName.substring(0, $fieldName.length() - 2) )
+#elseif ( $fieldName.endsWith("__pc") )
+#set ( $jsonPropertyName = $fieldName.replace("__pc", "__pr") )
+#else
+#set( $jsonPropertyName = $fieldName.replace("__c", "__r") )
+#end## PROPERTY IS ID
 #set( $lookupObjectType = $reference )
-    private ${lookupObjectType}_Lookup $relationshipAsFieldName;
+    private ${lookupObjectType}_Lookup ${fieldName}_Lookup;
 
-    @JsonProperty("$relationshipAsFieldName")
-    public ${lookupObjectType}_Lookup get$relationshipAsFieldName() {
-        return this.$relationshipAsFieldName;
+    @JsonProperty("$jsonPropertyName")
+    public ${lookupObjectType}_Lookup get${fieldName}_Lookup() {
+        return this.${fieldName}_Lookup;
     }
 
-    @JsonProperty("$relationshipAsFieldName")
-    public void set$relationshipAsFieldName(${lookupObjectType}_Lookup $relationshipAsFieldName) {
-        this.$relationshipAsFieldName = $relationshipAsFieldName;
+    @JsonProperty("$jsonPropertyName")
+    public void set$fieldName(${lookupObjectType}_Lookup ${fieldName}_Lookup) {
+        this.${fieldName}_Lookup = ${fieldName}_Lookup;
     }
+#end## HAS EXTERNAL IDS
 #end## END REFERENCE LOOP
-#end## END EXTERNAL ID LOOP
 #end## END IS LOOKUP
 #end
 #end
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 45098ed..e500ea0 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
@@ -33,7 +33,6 @@ import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
 import org.apache.camel.component.salesforce.api.utils.JsonUtils;
 import org.apache.camel.component.salesforce.internal.client.RestClient;
 import org.apache.camel.component.salesforce.internal.client.RestClient.ResponseCallback;
-import org.apache.camel.test.junit4.TestSupport;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.junit.Assert;
@@ -88,7 +87,7 @@ public class CamelSalesforceMojoOutputTest {
         mojo.processDescription(pkgDir, description, utility);
 
         for (final String source : sources) {
-            String expected = fileNameAdapter.apply(source);
+            final String expected = fileNameAdapter.apply(source);
 
             final File generatedFile = new File(pkgDir, source);
             final String generatedContent = FileUtils.readFileToString(generatedFile, StandardCharsets.UTF_8);
@@ -97,7 +96,7 @@ public class CamelSalesforceMojoOutputTest {
                 CamelSalesforceMojoOutputTest.class.getResource("/generated/" + expected), StandardCharsets.UTF_8);
 
             Assert.assertEquals("Generated source file in " + source
-                + " must be equal to the one present in test/resources/" + expected, generatedContent, expectedContent);
+                + " must be equal to the one present in test/resources/" + expected, expectedContent, generatedContent);
         }
     }
 
@@ -135,16 +134,6 @@ public class CamelSalesforceMojoOutputTest {
         }
     }
 
-    static String java9CompatibilityAdapter(final String source) {
-        if (TestSupport.getJavaMajorVersion() >= 9
-            && (source.equals("Case.java") || source.equals("ComplexCalculatedFormula.java"))) {
-            // Content is the same, the ordering is a bit different.
-            return source + "-Java9";
-        }
-
-        return source;
-    }
-
     static RestClient mockRestClient() {
         final RestClient client = mock(RestClient.class);
         doAnswer(provideResource("/global_sobjects.json")).when(client).getGlobalObjects(anyMap(),
@@ -195,7 +184,7 @@ public class CamelSalesforceMojoOutputTest {
 
     static Object[] testCase(final String json, final Consumer<GenerateMojo> mojoConfigurator, final String... sources)
         throws IOException {
-        return testCase(json, mojoConfigurator, CamelSalesforceMojoOutputTest::java9CompatibilityAdapter, sources);
+        return testCase(json, mojoConfigurator, Function.identity(), sources);
     }
 
     static Object[] testCase(final String json, final String... sources) throws IOException {
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java
index 0bfdfc3..ac91e66 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java
@@ -79,40 +79,14 @@ public class Asset extends AbstractDescribedSObjectBase {
         final SObjectDescription description = new SObjectDescription();
 
 
-        description.setMergeable(false);
+        description.setActivateable(false);
+        description.setCompactLayoutable(true);
         description.setCreateable(true);
-        description.setQueryable(true);
-        description.setLabel("Asset");
-        description.setReplicateable(true);
-        description.setName("Asset");
-        description.setLayoutable(true);
+        description.setCustom(false);
+        description.setCustomSetting(false);
+        description.setDeletable(true);
         description.setDeprecatedAndHidden(false);
-        description.setMruEnabled(true);
-        description.setSearchable(true);
         description.setFeedEnabled(false);
-        description.setRetrieveable(true);
-        description.setCustomSetting(false);
-        description.setKeyPrefix("02i");
-        description.setUndeletable(true);
-        description.setSearchLayoutable("true");
-        description.setTriggerable(true);
-        description.setCustom(false);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/Asset/describe");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/Asset/describe/layouts");
-        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/Asset");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/Asset/quickActions");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
-        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/Asset/defaultValues?recordTypeId&fields");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/Asset/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v42.0/sobjects/Asset/listviews");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/Asset/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/Asset/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/02i/e");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setCompactLayoutable(true);
 
         final List<SObjectField> fields1 = new ArrayList<>();
         description.setFields(fields1);
@@ -126,10 +100,36 @@ public class Asset extends AbstractDescribedSObjectBase {
         final SObjectField sObjectField4 = createField("time", "time", "time", "xsd:time", 0, false, true, false, false, true, false, false);
         fields1.add(sObjectField4);
 
-        description.setActivateable(false);
+        description.setKeyPrefix("02i");
+        description.setLabel("Asset");
         description.setLabelPlural("Assets");
+        description.setLayoutable(true);
+        description.setMergeable(false);
+        description.setMruEnabled(true);
+        description.setName("Asset");
+        description.setQueryable(true);
+        description.setReplicateable(true);
+        description.setRetrieveable(true);
+        description.setSearchLayoutable("true");
+        description.setSearchable(true);
+        description.setTriggerable(true);
+        description.setUndeletable(true);
         description.setUpdateable(true);
-        description.setDeletable(true);
+
+        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
+        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/Asset/describe/approvalLayouts");
+        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/Asset/describe/compactLayouts");
+        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/Asset/defaultValues?recordTypeId&fields");
+        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/Asset/describe");
+        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/Asset/describe/layouts");
+        sObjectDescriptionUrls1.setListviews("/services/data/v42.0/sobjects/Asset/listviews");
+        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/Asset/quickActions");
+        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/Asset/{ID}");
+        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/Asset");
+        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
+        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
+        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/02i/e");
+        description.setUrls(sObjectDescriptionUrls1);
 
         return description;
     }
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java
index 4a9c546..d9f03f6 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java
@@ -79,40 +79,14 @@ public class Asset extends AbstractDescribedSObjectBase {
         final SObjectDescription description = new SObjectDescription();
 
 
-        description.setMergeable(false);
+        description.setActivateable(false);
+        description.setCompactLayoutable(true);
         description.setCreateable(true);
-        description.setQueryable(true);
-        description.setLabel("Asset");
-        description.setReplicateable(true);
-        description.setName("Asset");
-        description.setLayoutable(true);
+        description.setCustom(false);
+        description.setCustomSetting(false);
+        description.setDeletable(true);
         description.setDeprecatedAndHidden(false);
-        description.setMruEnabled(true);
-        description.setSearchable(true);
         description.setFeedEnabled(false);
-        description.setRetrieveable(true);
-        description.setCustomSetting(false);
-        description.setKeyPrefix("02i");
-        description.setUndeletable(true);
-        description.setSearchLayoutable("true");
-        description.setTriggerable(true);
-        description.setCustom(false);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/Asset/describe");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/Asset/describe/layouts");
-        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/Asset");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/Asset/quickActions");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
-        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/Asset/defaultValues?recordTypeId&fields");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/Asset/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v42.0/sobjects/Asset/listviews");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/Asset/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/Asset/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/02i/e");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setCompactLayoutable(true);
 
         final List<SObjectField> fields1 = new ArrayList<>();
         description.setFields(fields1);
@@ -126,10 +100,36 @@ public class Asset extends AbstractDescribedSObjectBase {
         final SObjectField sObjectField4 = createField("time", "time", "time", "xsd:time", 0, false, true, false, false, true, false, false);
         fields1.add(sObjectField4);
 
-        description.setActivateable(false);
+        description.setKeyPrefix("02i");
+        description.setLabel("Asset");
         description.setLabelPlural("Assets");
+        description.setLayoutable(true);
+        description.setMergeable(false);
+        description.setMruEnabled(true);
+        description.setName("Asset");
+        description.setQueryable(true);
+        description.setReplicateable(true);
+        description.setRetrieveable(true);
+        description.setSearchLayoutable("true");
+        description.setSearchable(true);
+        description.setTriggerable(true);
+        description.setUndeletable(true);
         description.setUpdateable(true);
-        description.setDeletable(true);
+
+        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
+        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/Asset/describe/approvalLayouts");
+        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/Asset/describe/compactLayouts");
+        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/Asset/defaultValues?recordTypeId&fields");
+        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/Asset/describe");
+        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/Asset/describe/layouts");
+        sObjectDescriptionUrls1.setListviews("/services/data/v42.0/sobjects/Asset/listviews");
+        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/Asset/quickActions");
+        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/Asset/{ID}");
+        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/Asset");
+        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
+        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
+        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/02i/e");
+        description.setUrls(sObjectDescriptionUrls1);
 
         return description;
     }
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 57e9287..1f852c0 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
@@ -84,35 +84,14 @@ public class Case extends AbstractDescribedSObjectBase {
         final SObjectDescription description = new SObjectDescription();
 
 
-        description.setMergeable(false);
-        description.setUndeletable(true);
+        description.setActivateable(false);
+        description.setCompactLayoutable(true);
         description.setCreateable(true);
-        description.setSearchLayoutable("true");
-        description.setQueryable(true);
-        description.setLabel("Caso");
-        description.setTriggerable(true);
-        description.setReplicateable(true);
         description.setCustom(false);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
-        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
-        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
-        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setName("Case");
-        description.setLayoutable(true);
-        description.setCompactLayoutable(true);
+        description.setCustomSetting(false);
+        description.setDeletable(true);
         description.setDeprecatedAndHidden(false);
+        description.setFeedEnabled(true);
 
         final List<SObjectField> fields1 = new ArrayList<>();
         description.setFields(fields1);
@@ -124,14 +103,35 @@ public class Case extends AbstractDescribedSObjectBase {
         final SObjectField sObjectField3 = createField("PickListQuotationMark", "QuotationMark", "picklist", "xsd:string", 255, false, true, false, false, true, false, false);
         fields1.add(sObjectField3);
 
-        description.setActivateable(false);
+        description.setKeyPrefix("500");
+        description.setLabel("Caso");
         description.setLabelPlural("Casos");
-        description.setDeletable(true);
-        description.setFeedEnabled(true);
-        description.setSearchable(true);
-        description.setCustomSetting(false);
+        description.setLayoutable(true);
+        description.setMergeable(false);
+        description.setName("Case");
+        description.setQueryable(true);
+        description.setReplicateable(true);
         description.setRetrieveable(true);
-        description.setKeyPrefix("500");
+        description.setSearchLayoutable("true");
+        description.setSearchable(true);
+        description.setTriggerable(true);
+        description.setUndeletable(true);
+
+        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
+        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
+        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
+        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
+        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
+        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
+        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
+        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
+        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
+        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
+        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
+        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
+        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
+        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
+        description.setUrls(sObjectDescriptionUrls1);
 
         return description;
     }
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java-Java9 b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java-Java9
deleted file mode 100644
index f0f4bf6..0000000
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java-Java9
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Salesforce DTO generated by camel-salesforce-maven-plugin
- */
-package $packageName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Generated;
-
-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.AbstractDescribedSObjectBase;
-import org.apache.camel.component.salesforce.api.dto.ChildRelationShip;
-import org.apache.camel.component.salesforce.api.dto.InfoUrls;
-import org.apache.camel.component.salesforce.api.dto.NamedLayoutInfo;
-import org.apache.camel.component.salesforce.api.dto.RecordTypeInfo;
-import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
-import org.apache.camel.component.salesforce.api.dto.SObjectDescriptionUrls;
-import org.apache.camel.component.salesforce.api.dto.SObjectField;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Salesforce DTO for SObject Case
- */
-@Generated("org.apache.camel.maven.CamelSalesforceMojo")
-@XStreamAlias("Case")
-public class Case extends AbstractDescribedSObjectBase {
-
-    private static final SObjectDescription DESCRIPTION = createSObjectDescription();
-
-    // PickListAccentMark
-    @XStreamConverter(PicklistEnumConverter.class)
-    private Case_PickListAccentMarkEnum PickListAccentMark;
-
-    @JsonProperty("PickListAccentMark")
-    public Case_PickListAccentMarkEnum getPickListAccentMark() {
-        return this.PickListAccentMark;
-    }
-
-    @JsonProperty("PickListAccentMark")
-    public void setPickListAccentMark(Case_PickListAccentMarkEnum PickListAccentMark) {
-        this.PickListAccentMark = PickListAccentMark;
-    }
-
-    // PickListSlash
-    @XStreamConverter(PicklistEnumConverter.class)
-    private Case_PickListSlashEnum PickListSlash;
-
-    @JsonProperty("PickListSlash")
-    public Case_PickListSlashEnum getPickListSlash() {
-        return this.PickListSlash;
-    }
-
-    @JsonProperty("PickListSlash")
-    public void setPickListSlash(Case_PickListSlashEnum PickListSlash) {
-        this.PickListSlash = PickListSlash;
-    }
-
-    // PickListQuotationMark
-    @XStreamConverter(PicklistEnumConverter.class)
-    private Case_PickListQuotationMarkEnum PickListQuotationMark;
-
-    @JsonProperty("PickListQuotationMark")
-    public Case_PickListQuotationMarkEnum getPickListQuotationMark() {
-        return this.PickListQuotationMark;
-    }
-
-    @JsonProperty("PickListQuotationMark")
-    public void setPickListQuotationMark(Case_PickListQuotationMarkEnum PickListQuotationMark) {
-        this.PickListQuotationMark = PickListQuotationMark;
-    }
-
-
-    @Override
-    public final SObjectDescription description() {
-        return DESCRIPTION;
-    }
-
-    private static SObjectDescription createSObjectDescription() {
-        final SObjectDescription description = new SObjectDescription();
-
-
-        description.setMergeable(false);
-        description.setUndeletable(true);
-        description.setSearchLayoutable("true");
-        description.setCreateable(true);
-        description.setQueryable(true);
-        description.setLabel("Caso");
-        description.setCustom(false);
-        description.setReplicateable(true);
-        description.setTriggerable(true);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
-        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
-        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
-        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
-        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setName("Case");
-        description.setLayoutable(true);
-        description.setDeprecatedAndHidden(false);
-        description.setCompactLayoutable(true);
-
-        final List<SObjectField> fields1 = new ArrayList<>();
-        description.setFields(fields1);
-
-        final SObjectField sObjectField1 = createField("PickListAccentMark", "Accent Mark", "picklist", "xsd:string", 40, false, true, false, false, false, false, false);
-        fields1.add(sObjectField1);
-        final SObjectField sObjectField2 = createField("PickListSlash", "Slash", "picklist", "xsd:string", 255, false, true, false, false, true, false, false);
-        fields1.add(sObjectField2);
-        final SObjectField sObjectField3 = createField("PickListQuotationMark", "QuotationMark", "picklist", "xsd:string", 255, false, true, false, false, true, false, false);
-        fields1.add(sObjectField3);
-
-        description.setActivateable(false);
-        description.setLabelPlural("Casos");
-        description.setDeletable(true);
-        description.setSearchable(true);
-        description.setFeedEnabled(true);
-        description.setRetrieveable(true);
-        description.setCustomSetting(false);
-        description.setKeyPrefix("500");
-
-        return description;
-    }
-}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java
index fade972..be2d97b 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java
@@ -53,35 +53,14 @@ public class ComplexCalculatedFormula extends AbstractDescribedSObjectBase {
         final SObjectDescription description = new SObjectDescription();
 
 
-        description.setMergeable(false);
-        description.setUndeletable(true);
+        description.setActivateable(false);
+        description.setCompactLayoutable(true);
         description.setCreateable(true);
-        description.setSearchLayoutable("true");
-        description.setQueryable(true);
-        description.setLabel("Complex Calculated Formula");
-        description.setTriggerable(true);
-        description.setReplicateable(true);
         description.setCustom(false);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
-        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
-        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
-        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setName("ComplexCalculatedFormula");
-        description.setLayoutable(true);
-        description.setCompactLayoutable(true);
+        description.setCustomSetting(false);
+        description.setDeletable(true);
         description.setDeprecatedAndHidden(false);
+        description.setFeedEnabled(true);
 
         final List<SObjectField> fields1 = new ArrayList<>();
         description.setFields(fields1);
@@ -89,14 +68,35 @@ public class ComplexCalculatedFormula extends AbstractDescribedSObjectBase {
         final SObjectField sObjectField1 = createField("ComplexCalculatedFormula", "A complex calculated formula", "string", "xsd:string", 1300, false, true, false, false, true, false, false);
         fields1.add(sObjectField1);
 
-        description.setActivateable(false);
+        description.setKeyPrefix("500");
+        description.setLabel("Complex Calculated Formula");
         description.setLabelPlural("ComplexCalculatedFormulas");
-        description.setDeletable(true);
-        description.setFeedEnabled(true);
-        description.setSearchable(true);
-        description.setCustomSetting(false);
+        description.setLayoutable(true);
+        description.setMergeable(false);
+        description.setName("ComplexCalculatedFormula");
+        description.setQueryable(true);
+        description.setReplicateable(true);
         description.setRetrieveable(true);
-        description.setKeyPrefix("500");
+        description.setSearchLayoutable("true");
+        description.setSearchable(true);
+        description.setTriggerable(true);
+        description.setUndeletable(true);
+
+        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
+        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
+        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
+        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
+        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
+        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
+        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
+        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
+        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
+        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
+        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
+        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
+        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
+        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
+        description.setUrls(sObjectDescriptionUrls1);
 
         return description;
     }
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java-Java9 b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java-Java9
deleted file mode 100644
index 6866395..0000000
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java-Java9
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Salesforce DTO generated by camel-salesforce-maven-plugin
- */
-package $packageName;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Generated;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase;
-import org.apache.camel.component.salesforce.api.dto.ChildRelationShip;
-import org.apache.camel.component.salesforce.api.dto.InfoUrls;
-import org.apache.camel.component.salesforce.api.dto.NamedLayoutInfo;
-import org.apache.camel.component.salesforce.api.dto.RecordTypeInfo;
-import org.apache.camel.component.salesforce.api.dto.SObjectDescription;
-import org.apache.camel.component.salesforce.api.dto.SObjectDescriptionUrls;
-import org.apache.camel.component.salesforce.api.dto.SObjectField;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Salesforce DTO for SObject ComplexCalculatedFormula
- */
-@Generated("org.apache.camel.maven.CamelSalesforceMojo")
-@XStreamAlias("ComplexCalculatedFormula")
-public class ComplexCalculatedFormula extends AbstractDescribedSObjectBase {
-
-    private static final SObjectDescription DESCRIPTION = createSObjectDescription();
-
-    // ComplexCalculatedFormula
-    private String ComplexCalculatedFormula;
-
-    @JsonProperty("ComplexCalculatedFormula")
-    public String getComplexCalculatedFormula() {
-        return this.ComplexCalculatedFormula;
-    }
-
-    @JsonProperty("ComplexCalculatedFormula")
-    public void setComplexCalculatedFormula(String ComplexCalculatedFormula) {
-        this.ComplexCalculatedFormula = ComplexCalculatedFormula;
-    }
-
-
-    @Override
-    public final SObjectDescription description() {
-        return DESCRIPTION;
-    }
-
-    private static SObjectDescription createSObjectDescription() {
-        final SObjectDescription description = new SObjectDescription();
-
-
-        description.setMergeable(false);
-        description.setUndeletable(true);
-        description.setSearchLayoutable("true");
-        description.setCreateable(true);
-        description.setQueryable(true);
-        description.setLabel("Complex Calculated Formula");
-        description.setCustom(false);
-        description.setReplicateable(true);
-        description.setTriggerable(true);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v34.0/sobjects/Case/describe");
-        sObjectDescriptionUrls1.setCaseArticleSuggestions("/services/data/v34.0/sobjects/Case/suggestedArticles");
-        sObjectDescriptionUrls1.setCaseRowArticleSuggestions("/services/data/v34.0/sobjects/Case/{ID}/suggestedArticles");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v34.0/sobjects/Case/{ID}");
-        sObjectDescriptionUrls1.setListviews("/services/data/v34.0/sobjects/Case/listviews");
-        sObjectDescriptionUrls1.setUiNewRecord("https://salesforce-host/500/e");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v34.0/sobjects/Case/describe/layouts");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v34.0/sobjects/Case/quickActions");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://salesforce-host/{ID}/e");
-        sObjectDescriptionUrls1.setSobject("/services/data/v34.0/sobjects/Case");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v34.0/sobjects/Case/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v34.0/sobjects/Case/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://salesforce-host/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setName("ComplexCalculatedFormula");
-        description.setLayoutable(true);
-        description.setDeprecatedAndHidden(false);
-        description.setCompactLayoutable(true);
-
-        final List<SObjectField> fields1 = new ArrayList<>();
-        description.setFields(fields1);
-
-        final SObjectField sObjectField1 = createField("ComplexCalculatedFormula", "A complex calculated formula", "string", "xsd:string", 1300, false, true, false, false, true, false, false);
-        fields1.add(sObjectField1);
-
-        description.setActivateable(false);
-        description.setLabelPlural("ComplexCalculatedFormulas");
-        description.setDeletable(true);
-        description.setSearchable(true);
-        description.setFeedEnabled(true);
-        description.setRetrieveable(true);
-        description.setCustomSetting(false);
-        description.setKeyPrefix("500");
-
-        return description;
-    }
-}
diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java
index 5d8f269..0ac5100 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java
@@ -69,16 +69,16 @@ public class With_Reference__c extends AbstractDescribedSObjectBase {
         this.External__c = External__c;
     }
 
-    private With_External_Id__c_Lookup External__r;
+    private With_External_Id__c_Lookup External__c_Lookup;
 
     @JsonProperty("External__r")
-    public With_External_Id__c_Lookup getExternal__r() {
-        return this.External__r;
+    public With_External_Id__c_Lookup getExternal__c_Lookup() {
+        return this.External__c_Lookup;
     }
 
     @JsonProperty("External__r")
-    public void setExternal__r(With_External_Id__c_Lookup External__r) {
-        this.External__r = External__r;
+    public void setExternal__c(With_External_Id__c_Lookup External__c_Lookup) {
+        this.External__c_Lookup = External__c_Lookup;
     }
 
     @Override
@@ -90,56 +90,14 @@ public class With_Reference__c extends AbstractDescribedSObjectBase {
         final SObjectDescription description = new SObjectDescription();
 
 
-        description.setMergeable(false);
+        description.setActivateable(false);
+        description.setCompactLayoutable(true);
         description.setCreateable(true);
-        description.setQueryable(true);
-        description.setLabel("With Reference");
-        description.setReplicateable(true);
-
-        final List<RecordTypeInfo> recordTypeInfos1 = new ArrayList<>();
-        description.setRecordTypeInfos(recordTypeInfos1);
-
-        final RecordTypeInfo recordTypeInfo1 = new RecordTypeInfo();
-        recordTypeInfos1.add(recordTypeInfo1);
-
-        recordTypeInfo1.setDefaultRecordTypeMapping(true);
-        recordTypeInfo1.setRecordTypeId("012000000000000AAA");
-        recordTypeInfo1.setAvailable(true);
-
-        final InfoUrls infoUrls1 = new InfoUrls();
-        infoUrls1.setLayout("/services/data/v42.0/sobjects/With_Reference__c/describe/layouts/012000000000000AAA");
-        recordTypeInfo1.setUrls(infoUrls1);
-        recordTypeInfo1.setName("Master");
-
-
-        description.setName("With_Reference__c");
-        description.setLayoutable(true);
+        description.setCustom(true);
+        description.setCustomSetting(false);
+        description.setDeletable(true);
         description.setDeprecatedAndHidden(false);
-        description.setMruEnabled(false);
-        description.setSearchable(false);
         description.setFeedEnabled(false);
-        description.setRetrieveable(true);
-        description.setCustomSetting(false);
-        description.setKeyPrefix("a04");
-        description.setUndeletable(true);
-        description.setSearchLayoutable("false");
-        description.setTriggerable(true);
-        description.setCustom(true);
-
-        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
-        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/With_Reference__c/describe");
-        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/layouts");
-        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/With_Reference__c");
-        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/With_Reference__c/quickActions");
-        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
-        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/With_Reference__c/defaultValues?recordTypeId&fields");
-        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/With_Reference__c/{ID}");
-        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/compactLayouts");
-        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/approvalLayouts");
-        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/a04/e");
-        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
-        description.setUrls(sObjectDescriptionUrls1);
-        description.setCompactLayoutable(true);
 
         final List<SObjectField> fields1 = new ArrayList<>();
         description.setFields(fields1);
@@ -169,10 +127,52 @@ public class With_Reference__c extends AbstractDescribedSObjectBase {
         final SObjectField sObjectField12 = createField("External__c", "With External Id", "reference", "tns:ID", 18, false, true, false, false, true, false, false);
         fields1.add(sObjectField12);
 
-        description.setActivateable(false);
+        description.setKeyPrefix("a04");
+        description.setLabel("With Reference");
         description.setLabelPlural("With References");
+        description.setLayoutable(true);
+        description.setMergeable(false);
+        description.setMruEnabled(false);
+        description.setName("With_Reference__c");
+        description.setQueryable(true);
+
+        final List<RecordTypeInfo> recordTypeInfos1 = new ArrayList<>();
+        description.setRecordTypeInfos(recordTypeInfos1);
+
+        final RecordTypeInfo recordTypeInfo1 = new RecordTypeInfo();
+        recordTypeInfos1.add(recordTypeInfo1);
+
+        recordTypeInfo1.setAvailable(true);
+        recordTypeInfo1.setDefaultRecordTypeMapping(true);
+        recordTypeInfo1.setName("Master");
+        recordTypeInfo1.setRecordTypeId("012000000000000AAA");
+
+        final InfoUrls infoUrls1 = new InfoUrls();
+        infoUrls1.setLayout("/services/data/v42.0/sobjects/With_Reference__c/describe/layouts/012000000000000AAA");
+        recordTypeInfo1.setUrls(infoUrls1);
+
+
+        description.setReplicateable(true);
+        description.setRetrieveable(true);
+        description.setSearchLayoutable("false");
+        description.setSearchable(false);
+        description.setTriggerable(true);
+        description.setUndeletable(true);
         description.setUpdateable(true);
-        description.setDeletable(true);
+
+        final SObjectDescriptionUrls sObjectDescriptionUrls1 = new SObjectDescriptionUrls();
+        sObjectDescriptionUrls1.setApprovalLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/approvalLayouts");
+        sObjectDescriptionUrls1.setCompactLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/compactLayouts");
+        sObjectDescriptionUrls1.setDefaultValues("/services/data/v42.0/sobjects/With_Reference__c/defaultValues?recordTypeId&fields");
+        sObjectDescriptionUrls1.setDescribe("/services/data/v42.0/sobjects/With_Reference__c/describe");
+        sObjectDescriptionUrls1.setLayouts("/services/data/v42.0/sobjects/With_Reference__c/describe/layouts");
+        sObjectDescriptionUrls1.setQuickActions("/services/data/v42.0/sobjects/With_Reference__c/quickActions");
+        sObjectDescriptionUrls1.setRowTemplate("/services/data/v42.0/sobjects/With_Reference__c/{ID}");
+        sObjectDescriptionUrls1.setSobject("/services/data/v42.0/sobjects/With_Reference__c");
+        sObjectDescriptionUrls1.setUiDetailTemplate("https://eu11.salesforce.com/{ID}");
+        sObjectDescriptionUrls1.setUiEditTemplate("https://eu11.salesforce.com/{ID}/e");
+        sObjectDescriptionUrls1.setUiNewRecord("https://eu11.salesforce.com/a04/e");
+        description.setUrls(sObjectDescriptionUrls1);
 
         return description;
     }