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.");