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/12/16 18:21:52 UTC
[camel] branch main updated: camel-salesforce: Document apexCall operation
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 65f2065 camel-salesforce: Document apexCall operation
65f2065 is described below
commit 65f20650430657de9b7145c2b3fa50cd645492c6
Author: Jeremy Ross <je...@gmail.com>
AuthorDate: Thu Dec 16 12:20:26 2021 -0600
camel-salesforce: Document apexCall operation
---
.../src/main/docs/salesforce-component.adoc | 111 +++++++++++++--------
1 file changed, 70 insertions(+), 41 deletions(-)
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 189a51b..d6a5f3f 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
@@ -380,47 +380,6 @@ The https://developer.salesforce.com/docs/atlas.en-us.change_data_capture.meta/c
is a good fit to better know the subtleties of implementing a change data capture integration application.
The dynamic nature of change event body fields, high level replication steps as well as security considerations could be of interest.
-== Examples
-
-=== Uploading a document to a ContentWorkspace
-
-Create the ContentVersion in Java, using a Processor instance:
-
-[source,java]
-----
-public class ContentProcessor implements Processor {
- public void process(Exchange exchange) throws Exception {
- Message message = exchange.getIn();
-
- ContentVersion cv = new ContentVersion();
- ContentWorkspace cw = getWorkspace(exchange);
- cv.setFirstPublishLocationId(cw.getId());
- cv.setTitle("test document");
- cv.setPathOnClient("test_doc.html");
- byte[] document = message.getBody(byte[].class);
- ObjectMapper mapper = new ObjectMapper();
- String enc = mapper.convertValue(document, String.class);
- cv.setVersionDataUrl(enc);
- message.setBody(cv);
- }
-
- protected ContentWorkspace getWorkSpace(Exchange exchange) {
- // Look up the content workspace somehow, maybe use enrich() to add it to a
- // header that can be extracted here
- ....
- }
-}
-----
-
-Give the output from the processor to the Salesforce component:
-
-[source,java]
-----
-from("file:///home/camel/library")
- .to(new ContentProcessor()) // convert bytes from the file into a ContentVersion SObject
- // for the salesforce component
- .to("salesforce:createSObject");
-----
== Using Salesforce Limits API
@@ -450,6 +409,36 @@ from("direct:querySalesforce")
.endChoice()
----
+== Invoking Apex REST endpoints
+
+You can https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_rest_intro.htm[expose your Apex class and methods]
+so that external applications can access your code and your application through the REST architecture.
+
+The URI format for invoking Apex REST is:
+
+----
+salesforce:apexCall[/yourApexRestUrl][?options]
+----
+
+You can supply the apexUrl either in the endpoint (see above), or as the `apexUrl` option as listed in the table below.
+In either case the Apex URL can contain placeholders in the format of `{headerName}`. E.g., for the Apex URL `MyApexClass/{id}`,
+the value of the header named `id` will be used to replace the placeholder.
+
+|===
+| Parameter | Type | Description| Default| Required
+
+| request body | `Map<String, Object>` if `GET`, otherwise `String` or `InputStream`| In the case of a `GET`, the body (`Map` instance)
+is transformed into query parameters. For other HTTP methods, the body is used for the HTTP body. | |
+| `apexUrl` | `String` | The portion of the endpoint URL after `https://instance.salesforce.com/services/apexrest/`, e.g., 'MyApexClass/' | |
+| `apexMethod` | `String` | The HTTP method (e.g. `GET`, `POST`) to use. | `GET` |
+| `rawPayload` | `Boolean` | If true, Camel will not serialize the request or response bodies. | false |
+| Header: `apexQueryParam.[paramName]` | Object | Headers that override apex parameters passed in the endpoint. | false |
+| `sObjectName` | `String` | Name of sObject (e.g. `Merchandise__c`) used to deserialize the response | false |
+| `sObjectClass` | `String` | Fully qualified class name used to deserialize the response | false |
+|===
+
+
+
== Working with approvals
All the properties are named exactly the same as in the Salesforce REST API prefixed with `approval.`. You can set
@@ -799,6 +788,46 @@ send null values to salesforce, use the `fieldsToNull` property, as follows:
accountSObject.getFieldsToNull().add("Site");
----
+== Uploading a document to a ContentWorkspace
+
+Create the ContentVersion in Java, using a Processor instance:
+
+[source,java]
+----
+public class ContentProcessor implements Processor {
+ public void process(Exchange exchange) throws Exception {
+ Message message = exchange.getIn();
+
+ ContentVersion cv = new ContentVersion();
+ ContentWorkspace cw = getWorkspace(exchange);
+ cv.setFirstPublishLocationId(cw.getId());
+ cv.setTitle("test document");
+ cv.setPathOnClient("test_doc.html");
+ byte[] document = message.getBody(byte[].class);
+ ObjectMapper mapper = new ObjectMapper();
+ String enc = mapper.convertValue(document, String.class);
+ cv.setVersionDataUrl(enc);
+ message.setBody(cv);
+ }
+
+ protected ContentWorkspace getWorkSpace(Exchange exchange) {
+ // Look up the content workspace somehow, maybe use enrich() to add it to a
+ // header that can be extracted here
+ ....
+ }
+}
+----
+
+Give the output from the processor to the Salesforce component:
+
+[source,java]
+----
+from("file:///home/camel/library")
+ .to(new ContentProcessor()) // convert bytes from the file into a ContentVersion SObject
+ // for the salesforce component
+ .to("salesforce:createSObject");
+----
+
== Generating SOQL query strings
`org.apache.camel.component.salesforce.api.utils.QueryHelper` contains helper