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