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/b356aa70
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b356aa70
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b356aa70

Branch: refs/heads/camel-2.19.x
Commit: b356aa706a131ec17c24f4a076907f10f3010d5f
Parents: 8ef01f9
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 01:13:45 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/b356aa70/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 c950e34..ff4bf4f 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
@@ -532,7 +532,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"]
 |=======================================================================
@@ -561,6 +561,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/b356aa70/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 3147f53..c793aa2 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
@@ -373,7 +373,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/b356aa70/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/b356aa70/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

Reply via email to