You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by je...@apache.org on 2021/10/29 02:19:29 UTC

[camel] branch main updated: CAMEL-17145: camel-salesforce: Upsert return type

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

jeremyross pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new cbedd26  CAMEL-17145: camel-salesforce: Upsert return type
cbedd26 is described below

commit cbedd261336d576c558dcc2c4f4e358b27c9cb8f
Author: Jeremy Ross <je...@gmail.com>
AuthorDate: Thu Oct 28 21:16:33 2021 -0500

    CAMEL-17145: camel-salesforce: Upsert return type
    
    Composite SObject Collection upsert operation should
    return UpsertSObjectResult instead of SaveSObjectResult.
---
 .../salesforce/api/dto/UpsertSObjectResult.java    | 31 +-----------
 .../CompositeSObjectCollectionsApiClient.java      | 16 ++++--
 ...efaultCompositeSObjectCollectionsApiClient.java | 57 ++++++++++++++++++----
 .../CompositeSObjectCollectionsProcessor.java      | 14 +++---
 .../CompositeApiCollectionsIntegrationTest.java    |  3 +-
 5 files changed, 69 insertions(+), 52 deletions(-)

diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/UpsertSObjectResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/UpsertSObjectResult.java
index 237ced9..3f0ca6d 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/UpsertSObjectResult.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/UpsertSObjectResult.java
@@ -16,39 +16,10 @@
  */
 package org.apache.camel.component.salesforce.api.dto;
 
-import java.util.List;
+public class UpsertSObjectResult extends SaveSObjectResult {
 
-public class UpsertSObjectResult extends AbstractDTOBase {
-
-    private String id;
-    private List<RestError> errors;
-    private Boolean success;
     private Boolean created;
 
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public List<RestError> getErrors() {
-        return errors;
-    }
-
-    public void setErrors(List<RestError> errors) {
-        this.errors = errors;
-    }
-
-    public Boolean getSuccess() {
-        return success;
-    }
-
-    public void setSuccess(Boolean success) {
-        this.success = success;
-    }
-
     public Boolean getCreated() {
         return created;
     }
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/CompositeSObjectCollectionsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/CompositeSObjectCollectionsApiClient.java
index e3e9934..9292ffb 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/CompositeSObjectCollectionsApiClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/CompositeSObjectCollectionsApiClient.java
@@ -23,6 +23,7 @@ import java.util.Optional;
 import org.apache.camel.component.salesforce.api.SalesforceException;
 import org.apache.camel.component.salesforce.api.dto.DeleteSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.SaveSObjectResult;
+import org.apache.camel.component.salesforce.api.dto.UpsertSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.composite.SObjectCollection;
 import org.apache.camel.component.salesforce.internal.dto.composite.RetrieveSObjectCollectionsDto;
 
@@ -39,10 +40,19 @@ public interface CompositeSObjectCollectionsApiClient {
             Class<T> returnType)
             throws SalesforceException;
 
-    void submitCompositeCollections(
+    void createCompositeCollections(
             SObjectCollection collection, Map<String, List<String>> headers,
-            ResponseCallback<List<SaveSObjectResult>> callback, String sObjectName, String externalIdFieldName,
-            String method)
+            ResponseCallback<List<SaveSObjectResult>> callback)
+            throws SalesforceException;
+
+    void updateCompositeCollections(
+            SObjectCollection collection, Map<String, List<String>> headers,
+            ResponseCallback<List<SaveSObjectResult>> callback)
+            throws SalesforceException;
+
+    void upsertCompositeCollections(
+            SObjectCollection collection, Map<String, List<String>> headers,
+            ResponseCallback<List<UpsertSObjectResult>> callback, String sObjectName, String externalIdFieldName)
             throws SalesforceException;
 
     void submitDeleteCompositeCollections(
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java
index d2007da..75c575a 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java
@@ -35,6 +35,7 @@ import org.apache.camel.component.salesforce.api.SalesforceException;
 import org.apache.camel.component.salesforce.api.dto.DeleteSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.RestError;
 import org.apache.camel.component.salesforce.api.dto.SaveSObjectResult;
+import org.apache.camel.component.salesforce.api.dto.UpsertSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.composite.SObjectCollection;
 import org.apache.camel.component.salesforce.api.utils.JsonUtils;
 import org.apache.camel.component.salesforce.internal.PayloadFormat;
@@ -94,19 +95,27 @@ public class DefaultCompositeSObjectCollectionsApiClient extends AbstractClientB
     }
 
     @Override
-    public void submitCompositeCollections(
-            final SObjectCollection collection, final Map<String, List<String>> headers,
-            final ResponseCallback<List<SaveSObjectResult>> callback, final String sObjectName,
-            final String externalIdFieldName, final String method)
+    public void createCompositeCollections(
+            SObjectCollection collection, Map<String, List<String>> headers,
+            ResponseCallback<List<SaveSObjectResult>> callback)
+            throws SalesforceException {
+        createUpdateCompositeCollections(collection, headers, callback, "POST");
+    }
+
+    @Override
+    public void updateCompositeCollections(
+            SObjectCollection collection, Map<String, List<String>> headers,
+            ResponseCallback<List<SaveSObjectResult>> callback)
+            throws SalesforceException {
+        createUpdateCompositeCollections(collection, headers, callback, "PATCH");
+    }
+
+    private void createUpdateCompositeCollections(
+            SObjectCollection collection, Map<String, List<String>> headers,
+            ResponseCallback<List<SaveSObjectResult>> callback, String method)
             throws SalesforceException {
 
         String url = versionUrl() + "composite/sobjects";
-        if (sObjectName != null) {
-            url = url + "/" + sObjectName;
-            if (externalIdFieldName != null) {
-                url = url + "/" + externalIdFieldName;
-            }
-        }
         Request request = createRequest(method, url, headers);
 
         final ContentProvider content = serialize(collection);
@@ -123,6 +132,34 @@ public class DefaultCompositeSObjectCollectionsApiClient extends AbstractClientB
     }
 
     @Override
+    public void upsertCompositeCollections(
+            final SObjectCollection collection, final Map<String, List<String>> headers,
+            final ResponseCallback<List<UpsertSObjectResult>> callback, final String sObjectName,
+            final String externalIdFieldName)
+            throws SalesforceException {
+
+        String url = versionUrl() + "composite/sobjects";
+        url = url + "/" + sObjectName;
+        if (externalIdFieldName != null) {
+            url = url + "/" + externalIdFieldName;
+        }
+
+        Request request = createRequest("PATCH", url, headers);
+
+        final ContentProvider content = serialize(collection);
+        request.content(content);
+
+        doHttpRequest(request, new ClientResponseCallback() {
+            @Override
+            public void onResponse(InputStream response, Map<String, String> headers, SalesforceException ex) {
+                callback.onResponse(
+                        tryToReadListResponse(UpsertSObjectResult.class, response),
+                        headers, ex);
+            }
+        });
+    }
+
+    @Override
     public void submitDeleteCompositeCollections(
             List<String> ids, Boolean allOrNone, final Map<String, List<String>> headers,
             final ResponseCallback<List<DeleteSObjectResult>> callback) {
diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeSObjectCollectionsProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeSObjectCollectionsProcessor.java
index 050b70d..276007a 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeSObjectCollectionsProcessor.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/CompositeSObjectCollectionsProcessor.java
@@ -111,20 +111,18 @@ public class CompositeSObjectCollectionsProcessor extends AbstractSalesforceProc
     private boolean processCreateSObjectCollections(final Exchange exchange, final AsyncCallback callback)
             throws SalesforceException {
         SObjectCollection collection = buildSObjectCollection(exchange);
-        compositeClient.submitCompositeCollections(collection, determineHeaders(exchange),
+        compositeClient.createCompositeCollections(collection, determineHeaders(exchange),
                 (response, responseHeaders, exception) -> processResponse(exchange, response, responseHeaders,
-                        exception, callback),
-                null, null, "POST");
+                        exception, callback));
         return false;
     }
 
     private boolean processUpdateSObjectCollections(final Exchange exchange, final AsyncCallback callback)
             throws SalesforceException {
         final SObjectCollection collection = buildSObjectCollection(exchange);
-        compositeClient.submitCompositeCollections(collection, determineHeaders(exchange),
+        compositeClient.updateCompositeCollections(collection, determineHeaders(exchange),
                 (response, responseHeaders, exception) -> processResponse(exchange, response, responseHeaders,
-                        exception, callback),
-                null, null, "PATCH");
+                        exception, callback));
         return false;
     }
 
@@ -134,10 +132,10 @@ public class CompositeSObjectCollectionsProcessor extends AbstractSalesforceProc
         String externalIdFieldName
                 = getParameter(SalesforceEndpointConfig.SOBJECT_EXT_ID_NAME, exchange, IGNORE_BODY, NOT_OPTIONAL);
         String sObjectName = getParameter(SalesforceEndpointConfig.SOBJECT_NAME, exchange, IGNORE_BODY, NOT_OPTIONAL);
-        compositeClient.submitCompositeCollections(collection, determineHeaders(exchange),
+        compositeClient.upsertCompositeCollections(collection, determineHeaders(exchange),
                 (response, responseHeaders, exception) -> processResponse(exchange, response, responseHeaders,
                         exception, callback),
-                sObjectName, externalIdFieldName, "PATCH");
+                sObjectName, externalIdFieldName);
 
         return false;
     }
diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiCollectionsIntegrationTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiCollectionsIntegrationTest.java
index 41c7207..36c978d 100644
--- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiCollectionsIntegrationTest.java
+++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiCollectionsIntegrationTest.java
@@ -28,6 +28,7 @@ import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBas
 import org.apache.camel.component.salesforce.api.dto.CreateSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.DeleteSObjectResult;
 import org.apache.camel.component.salesforce.api.dto.SaveSObjectResult;
+import org.apache.camel.component.salesforce.api.dto.UpsertSObjectResult;
 import org.apache.camel.component.salesforce.dto.generated.Account;
 import org.apache.camel.test.junit5.params.Parameter;
 import org.apache.camel.test.junit5.params.Parameterized;
@@ -154,7 +155,7 @@ public class CompositeApiCollectionsIntegrationTest extends AbstractSalesforceTe
         account.setExternal_Id__c("AAA");
         final List<Account> accounts = Collections.singletonList(account);
 
-        List<SaveSObjectResult> result = (List<SaveSObjectResult>) template.requestBody(
+        List<UpsertSObjectResult> result = (List<UpsertSObjectResult>) template.requestBody(
                 "salesforce:compositeUpsertSObjectCollections?sObjectName=Account&sObjectIdName=External_Id__c",
                 accounts);
         assertNotNull(result, "Response was null.");