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 12:27:06 UTC

[camel] branch camel-2.22.x 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 camel-2.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-2.22.x by this push:
     new df443f4  CAMEL-12963: camel-salesforce-maven-plugin gene...
df443f4 is described below

commit df443f40d83ef7d7a22bd6a670faa0e7be922def
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>
---
 .../camel-salesforce-maven-plugin/pom.xml          |   5 +
 .../java/org/apache/camel/maven/GenerateMojo.java  |  34 +++--
 .../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   | 139 ---------------------
 .../generated/ComplexCalculatedFormula.java        |  64 +++++-----
 .../generated/ComplexCalculatedFormula.java-Java9  | 104 ---------------
 .../resources/generated/With_Reference__c.java     | 108 ++++++++--------
 12 files changed, 237 insertions(+), 461 deletions(-)

diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
index 11ecdd8..89787e8 100644
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
+++ b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml
@@ -130,6 +130,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 412fe64..039ce08 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
@@ -29,12 +29,17 @@ 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 +49,8 @@ import org.apache.camel.component.salesforce.api.dto.SObjectField;
 import org.apache.camel.component.salesforce.internal.client.RestClient;
 import org.apache.camel.util.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 +117,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 +161,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 +237,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) {
@@ -378,14 +393,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);
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 3818a9b..eac8843 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
@@ -130,22 +130,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 55d350f..45db4c6 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;
@@ -89,7 +88,7 @@ public class CamelSalesforceMojoOutputTest {
         mojo.processDescription(pkgDir, description, utility, FIXED_DATE);
 
         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);
@@ -98,7 +97,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);
         }
     }
 
@@ -136,16 +135,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(),
@@ -196,7 +185,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 de25141..b1445bf 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
@@ -80,40 +80,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);
@@ -127,10 +101,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 1d9d17a..258d0ab 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
@@ -80,40 +80,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);
@@ -127,10 +101,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 e7f4e12..6ce4e84 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
@@ -85,35 +85,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);
@@ -125,14 +104,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 5915eaa..0000000
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java-Java9
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Salesforce DTO generated by camel-salesforce-maven-plugin
- * Generated on: Thu Mar 09 16:15:49 ART 2017
- */
-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 fd6da8a..8f1f747 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
@@ -54,35 +54,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);
@@ -90,14 +69,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 025c5b2..0000000
--- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java-Java9
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Salesforce DTO generated by camel-salesforce-maven-plugin
- * Generated on: Thu Mar 09 16:15:49 ART 2017
- */
-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 c5a9dc5..fc8b2ee 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
@@ -70,16 +70,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
@@ -91,56 +91,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);
@@ -170,10 +128,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;
     }