CAMEL-10743: Add rawPayload parameter to support XML or JSON String input and output with Salesforce endpoints, avoiding generating DTOs
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/227e2629 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/227e2629 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/227e2629 Branch: refs/heads/master Commit: 227e262934fde83f9a87f48177eaca316504bfbd Parents: 5eaaf981 Author: Dhiraj Bokde <dhira...@yahoo.com> Authored: Thu Aug 3 00:34:32 2017 -0700 Committer: Dhiraj Bokde <dhira...@yahoo.com> Committed: Thu Aug 3 00:43:53 2017 -0700 ---------------------------------------------------------------------- .../src/main/docs/salesforce-component.adoc | 3 ++- .../component/salesforce/SalesforceComponent.java | 2 +- .../salesforce/SalesforceEndpointConfig.java | 16 ++++++++++++++++ .../processor/AbstractSalesforceProcessor.java | 2 ++ 4 files changed, 21 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/227e2629/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc index a898a7e..df1407d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc +++ b/components/camel-salesforce/camel-salesforce-component/src/main/docs/salesforce-component.adoc @@ -533,7 +533,7 @@ with the following path and query parameters: | **topicName** | The name of the topic to use | | String |======================================================================= -#### Query Parameters (42 parameters): +#### Query Parameters (43 parameters): [width="100%",cols="2,5,^1,2",options="header"] |======================================================================= @@ -562,6 +562,7 @@ with the following path and query parameters: | **notifyForOperationUndelete** (common) | Notify for un-delete operation defaults to false (API version = 29.0) | | Boolean | **notifyForOperationUpdate** (common) | Notify for update operation defaults to false (API version = 29.0) | | Boolean | **objectMapper** (common) | Custom Jackson ObjectMapper to use when serializing/deserializing Salesforce objects. | | ObjectMapper +| **rawPayload** (common) | Use raw payload String for request and response (either JSON or XML depending on format) instead of DTOs false by default | false | boolean | **reportId** (common) | Salesforce1 Analytics report Id | | String | **reportMetadata** (common) | Salesforce1 Analytics report metadata for filtering | | ReportMetadata | **resultId** (common) | Bulk API Result ID | | String http://git-wip-us.apache.org/repos/asf/camel/blob/227e2629/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java index 2b6f181..5609031 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceComponent.java @@ -377,7 +377,7 @@ public class SalesforceComponent extends DefaultComponent implements VerifiableC LOG.info("Found {} generated classes in packages: {}", classMap.size(), Arrays.asList(packages)); } else { // use an empty map to avoid NPEs later - LOG.warn("Missing property packages, getSObject* operations will NOT work"); + LOG.warn("Missing property packages, getSObject* operations will NOT work without property rawPayload=true"); classMap = new HashMap<String, Class<?>>(0); } http://git-wip-us.apache.org/repos/asf/camel/blob/227e2629/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java index 5363c0c..a23e83d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java @@ -49,6 +49,8 @@ public class SalesforceEndpointConfig implements Cloneable { // parameters for Rest API public static final String FORMAT = "format"; + public static final String RAW_PAYLOAD = "rawPayload"; + public static final String SOBJECT_NAME = "sObjectName"; public static final String SOBJECT_ID = "sObjectId"; public static final String SOBJECT_FIELDS = "sObjectFields"; @@ -100,6 +102,8 @@ public class SalesforceEndpointConfig implements Cloneable { // Rest API properties @UriParam private PayloadFormat format = PayloadFormat.JSON; + @UriParam + private boolean rawPayload; @UriParam(displayName = "SObject Name") private String sObjectName; @UriParam(displayName = "SObject Id") @@ -213,6 +217,18 @@ public class SalesforceEndpointConfig implements Cloneable { this.format = format; } + public boolean getRawPayload() { + return rawPayload; + } + + /** + * Use raw payload {@link String} for request and response (either JSON or XML depending on {@code format}), + * instead of DTOs, false by default + */ + public void setRawPayload(boolean rawPayload) { + this.rawPayload = rawPayload; + } + public String getApiVersion() { return apiVersion; } http://git-wip-us.apache.org/repos/asf/camel/blob/227e2629/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java index 3d25e90..2b5119e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/AbstractSalesforceProcessor.java @@ -46,6 +46,7 @@ public abstract class AbstractSalesforceProcessor implements SalesforceProcessor protected final OperationName operationName; protected final SalesforceSession session; protected final SalesforceHttpClient httpClient; + protected final boolean rawPayload; public AbstractSalesforceProcessor(SalesforceEndpoint endpoint) { this.endpoint = endpoint; @@ -55,6 +56,7 @@ public abstract class AbstractSalesforceProcessor implements SalesforceProcessor final SalesforceComponent component = endpoint.getComponent(); this.session = component.getSession(); this.httpClient = endpoint.getConfiguration().getHttpClient(); + this.rawPayload = endpoint.getConfiguration().getRawPayload(); } @Override