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 3685eec  camel-salesforce: CAMEL-17036: Preserve `in` body.
3685eec is described below

commit 3685eec1f64b5746d2d2c4591dc9036b0cbc30eb
Author: Jeremy Ross <jeremy.g.r...@gmail.com>
AuthorDate: Sun Oct 3 09:47:06 2021 -0500

    camel-salesforce: CAMEL-17036: Preserve `in` body.
---
 .../internal/processor/JsonRestProcessor.java      |  2 +-
 .../salesforce/RestApiIntegrationTest.java         | 28 ++++++++++++++++------
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
index d9ce6fa..4f050b7 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java
@@ -181,7 +181,7 @@ public class JsonRestProcessor extends 
AbstractRestProcessor {
         try {
             final Message out = exchange.getOut();
             final Message in = exchange.getIn();
-            out.copyFromWithNewBody(in, null);
+             out.copyFrom(in);
             out.getHeaders().putAll(headers);
 
             if (ex != null) {
diff --git 
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
 
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
index 3013192..9d7c62e 100644
--- 
a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
+++ 
b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiIntegrationTest.java
@@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.camel.CamelExecutionException;
+import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.salesforce.api.NoSuchSObjectException;
@@ -49,6 +50,7 @@ import 
org.apache.camel.component.salesforce.dto.generated.QueryRecordsAccount;
 import org.apache.camel.component.salesforce.dto.generated.QueryRecordsContact;
 import 
org.apache.camel.component.salesforce.dto.generated.QueryRecordsLine_Item__c;
 import org.apache.camel.component.salesforce.dto.generated.Task;
+import org.apache.camel.support.DefaultExchange;
 import org.apache.camel.support.jsse.SSLContextParameters;
 import org.eclipse.jetty.client.HttpClient;
 import org.eclipse.jetty.client.api.ContentResponse;
@@ -215,11 +217,11 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
         // also need to set the Id
         merchandise.setId(result.getId());
 
-        assertNull(template().requestBodyAndHeader("direct:updateSObject", 
merchandise, SalesforceEndpointConfig.SOBJECT_ID,
+        assertNotNull(template().requestBodyAndHeader("direct:updateSObject", 
merchandise, SalesforceEndpointConfig.SOBJECT_ID,
                 result.getId()));
 
         // delete the newly created SObject
-        assertNull(template().requestBody("direct:deleteSObject", 
result.getId()));
+        assertNotNull(template().requestBody("direct:deleteSObject", 
result.getId()));
     }
 
     @Test
@@ -266,7 +268,7 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
 
         final Object updateAccountResult = 
template().requestBodyAndHeader("salesforce:updateSObject", account,
                 SalesforceEndpointConfig.SOBJECT_ID, account.getId());
-        assertNull(updateAccountResult);
+        assertNotNull(updateAccountResult);
 
         Account updatedAccount = (Account) 
template().requestBodyAndHeader("salesforce:getSObject?sObjectFields=Id,Name,Site",
                 account.getId(), "sObjectName", "Account");
@@ -301,7 +303,7 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
 
         final Object updateContactResult = 
template().requestBodyAndHeader("salesforce:updateSObject", contact,
                 SalesforceEndpointConfig.SOBJECT_ID, contact.getId());
-        assertNull(updateContactResult);
+        assertNotNull(updateContactResult);
 
         // delete the Contact
         template().requestBodyAndHeader("direct:deleteSObject", 
contactResult.getId(), "sObjectName", "Contact");
@@ -324,11 +326,11 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
         taken.setId(result.getId());
         taken.setActivityDate(ZonedDateTime.of(1991, 1, 2, 3, 4, 5, 6, 
ZoneId.systemDefault()));
 
-        assertNull(template().requestBodyAndHeader("direct:updateSObject", 
taken, SalesforceEndpointConfig.SOBJECT_ID,
+        assertNotNull(template().requestBodyAndHeader("direct:updateSObject", 
taken, SalesforceEndpointConfig.SOBJECT_ID,
                 result.getId()));
 
         // delete the newly created SObject
-        assertNull(template().requestBody("direct:deleteSObjectTaken", 
result.getId()));
+        assertNotNull(template().requestBody("direct:deleteSObjectTaken", 
result.getId()));
     }
 
     @Test
@@ -368,7 +370,7 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
         assertNotNull(upsertResult);
 
         // delete the SObject with Name NEW_LINE_ITEM_ID
-        assertNull(template().requestBody("direct:deleteSObjectWithId", 
newLineItemId));
+        assertNotNull(template().requestBody("direct:deleteSObjectWithId", 
newLineItemId));
     }
 
     @Test
@@ -662,6 +664,15 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
         assertFalse(globalObjects.getSobjects().isEmpty());
     }
 
+    @Test
+    public void testBodyIsPreservedAfterError() throws Exception {
+        Contact contact = new Contact();
+
+        final Object result = 
template.requestBody("direct:createSObjectContinueOnException", contact);
+        assertNotNull(result);
+        assertEquals(contact, result);
+    }
+
     @Override
     protected RouteBuilder doCreateRouteBuilder() throws Exception {
 
@@ -770,6 +781,9 @@ public class RestApiIntegrationTest extends 
AbstractSalesforceTestBase {
 
                 
from("direct:apexCallPatch").to("salesforce:apexCall/Merchandise/"
                                                 + 
"&apexMethod=PATCH&sObjectClass=" + MerchandiseResponse.class.getName());
+
+                
from("direct:createSObjectContinueOnException").onException(Exception.class).continued(true).end()
+                        .to("salesforce:createSObject");
             }
         };
     }

Reply via email to