You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2016/11/27 16:18:42 UTC

svn commit: r1001720 - in /websites/production/camel/content: cache/main.pageCache camel-219-release.html salesforce.html

Author: buildbot
Date: Sun Nov 27 16:18:42 2016
New Revision: 1001720

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/camel-219-release.html
    websites/production/camel/content/salesforce.html

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/camel/content/camel-219-release.html
==============================================================================
--- websites/production/camel/content/camel-219-release.html (original)
+++ websites/production/camel/content/camel-219-release.html Sun Nov 27 16:18:42 2016
@@ -85,7 +85,7 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 id="Camel2.19Release-Camel2.19.0Release(currentlyinprogress)">Camel 2.19.0 Release (currently in progress)</h1><div style="padding-right:20px;float:left;margin-left:-20px;"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://camel.apache.org/images/camel-box-small.png" data-image-src="http://camel.apache.org/images/camel-box-small.png"></span></div><div style="min-height:200px">&#160;</div><h2 id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.19.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><ul><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" href="bean.html">Bean</a> should work similar to how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot starter components 
 now have their auto configuration depends on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which makes it easier writing unit tests where you can exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to turn off Camel Spring Boot auto configuration completely.</li><li>Camel now supports OWASP dependency check maven plugin</li><li>Camel-Nats component now supports TLS</li><li>Camel-Nats component now supports explicit flushing (with timeout) of the connection</li><li>Camel-Metrics component now supports Gauge type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now supports idempotent-changed and idempotent-rename read lock strategies for clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers that only includes the supported Camel components, languages and data formats running in that container. For example for Karaf or Spring Boot in the camel-catalog-provider-karaf and camel-catalog-provider-sprin
 gboot.</li><li>The&#160;<a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/bean">bean</a> component will when calling a method that returned an instance of <code>Callable</code>&#160;now call that callable to obtain the chained result. This allows to call Groovy functions/closures etc.</li><li>Failover&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error Handler</a> to react after the load balancer is exhausted.</li></ul><p>Fixed these issues</p><ul><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix EIP</a> to also execute fallback if execution was rejected or short-circuited or other reasons from Hystrix.&#160;</li><li>Fixed adding new routes to running CamelContext and if the new routes would fail to startup, then before these routes would "hang around". Now only succesful started routes are added.</li><li>Adding or removing routes that 
 starts from&#160;<a shape="rect" href="undertow.html">Undertow</a> no longer restart the entire HTTP server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare exchange with the CamelContext from the consumer and not from cached endpoint which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="rect" href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in the route.&#160;</li><li>Fixed an issue when using&#160;<code>pipeline</code> in Java DSL not setting up the EIP correctly which could lead to runtime route not as intended.</li><li>Fixed&#160;<a shape="rect" href="dropbox.html">Dropbox</a> to use&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to avoid reading entire file into memory so Camel can process big files</li><li>Fixed Netty douhle buffer release leak in&#160;<a shape="re
 ct" href="netty4.html">Netty4</a> and&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 id="Camel2.19Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li>camel-bonita -&#160;allow you to communicate with a remote Bonita engine.</li><li>camel-firebase - allow you to communicate with Google Firebase Database</li><li>camel-google-pubsub - allow you communicate with Google Cloud Pub/Sub</li></ul><h3 id="Camel2.19Release-NewDSL">New DSL</h3><h3 id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.19Release-New.2">New <a shape="rect" href="data-format.html">Data Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" href="languages.html">Languages</a></h3><h3 id="Camel2.19Release-New.4">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.19Release-New
 .5">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.19Release-APIbreaking">API breaking</h2><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 id="Camel2.19Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>Camel now uses Karaf 4.x API and therefore not possible to run on older Karaf versions</li><li>camel-spring-boot now don't include prototype scoped beans when auto scanning for RouteBuilder instances, which is how camel-spring works. You can turn this back using the&#160;includeNonSingletons option.</li></ul><h2 id="Camel2.19Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1"
  class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip">apache-camel-x.y.x.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc">apache-camel-x.y.x.zip.asc</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz">apache-camel-x.y.x.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link
 " href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.asc">apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-information"><p class="title">The above URLs use redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using <a shape="rect" class="external-link" href="http://www.mozilla.com/en-US/firefox/" rel="nofollow">FireFox</a></p></div></div><h3 id="Camel2.19Release-SourceDistributions">Source Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rows
 pan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip">apache-camel-x.y.x-src.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc">apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using Maven 2</h3><p>To use this release in your maven project, the proper dependency configuration that you should use in your <a shape="rect" cl
 ass="external-link" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h1 id="Camel2.19Release-Camel2.19.0Release(currentlyinprogress)">Camel 2.19.0 Release (currently in progress)</h1><div style="padding-right:20px;float:left;margin-left:-20px;"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://camel.apache.org/images/camel-box-small.png" data-image-src="http://camel.apache.org/images/camel-box-small.png"></span></div><div style="min-height:200px">&#160;</div><h2 id="Camel2.19Release-NewandNoteworthy">New and Noteworthy</h2><p>Welcome to the 2.19.0 release which approx XXX issues resolved (new features, improvements and bug fixes such as...)</p><ul><li>Returning&#160;<code>null</code>&#160;from&#160;<a shape="rect" href="bean.html">Bean</a> should work similar to how&#160;<code>setBody</code>&#160;and&#160;<code>transform</code>&#160;works when they set a&#160;<code>null</code>&#160;body.</li><li>The Camel Spring Boot starter components 
 now have their auto configuration depends on&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> which makes it easier writing unit tests where you can exclude&#160;<code>org.apache.camel.springboot.CamelAutoConfiguration</code> to turn off Camel Spring Boot auto configuration completely.</li><li>Camel now supports OWASP dependency check maven plugin</li><li>Camel-Nats component now supports TLS</li><li>Camel-Nats component now supports explicit flushing (with timeout) of the connection</li><li>Camel-Metrics component now supports Gauge type</li><li><a shape="rect" href="file2.html">File&#160;consumer</a> now supports idempotent-changed and idempotent-rename read lock strategies for clustering.&#160;</li><li>Camel Catalog now supports custom runtime providers that only includes the supported Camel components, languages and data formats running in that container. For example for Karaf or Spring Boot in the camel-catalog-provider-karaf and camel-catalog-provider-sprin
 gboot.</li><li>The&#160;<a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/bean">bean</a> component will when calling a method that returned an instance of <code>Callable</code>&#160;now call that callable to obtain the chained result. This allows to call Groovy functions/closures etc.</li><li>Failover&#160;<a shape="rect" href="load-balancer.html">Load Balancer</a> with inheritErrorHandler=false, now allows Camel's&#160;<a shape="rect" href="error-handler.html">Error Handler</a> to react after the load balancer is exhausted.</li><li><a shape="rect" href="salesforce.html">Salesforce</a> component now supports limits, recent items and approvals</li></ul><p>Fixed these issues</p><ul><li>Fixed&#160;<a shape="rect" href="hystrix-eip.html">Hystrix EIP</a> to also execute fallback if execution was rejected or short-circuited or other reasons from Hystrix.&#160;</li><li>Fixed adding new routes to running CamelContext and if the new routes would fail to startup, then befor
 e these routes would "hang around". Now only succesful started routes are added.</li><li>Adding or removing routes that starts from&#160;<a shape="rect" href="undertow.html">Undertow</a> no longer restart the entire HTTP server</li><li><a shape="rect" href="vm.html">VM</a> endpoint should prepare exchange with the CamelContext from the consumer and not from cached endpoint which can be different</li><li>Fixed a bug when using&#160;<a shape="rect" href="rest-dsl.html">Rest DSL</a> with&#160;<a shape="rect" href="servlet.html">SERVLET</a> could cause a java.io.IOException: Stream closed exception when using <a shape="rect" href="bean.html">Bean</a>&#160;in the route.&#160;</li><li>Fixed an issue when using&#160;<code>pipeline</code> in Java DSL not setting up the EIP correctly which could lead to runtime route not as intended.</li><li>Fixed&#160;<a shape="rect" href="dropbox.html">Dropbox</a> to use&#160;<a shape="rect" href="stream-caching.html">Stream caching</a> to avoid reading en
 tire file into memory so Camel can process big files</li><li>Fixed Netty douhle buffer release leak in&#160;<a shape="rect" href="netty4.html">Netty4</a> and&#160;<a shape="rect" href="netty4-http.html">Netty4 HTTP</a></li></ul><h3 id="Camel2.19Release-New">New <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></h3><h3 id="Camel2.19Release-New.1">New <a shape="rect" href="components.html">Components</a></h3><ul><li>camel-bonita -&#160;allow you to communicate with a remote Bonita engine.</li><li>camel-firebase - allow you to communicate with Google Firebase Database</li><li>camel-google-pubsub - allow you communicate with Google Cloud Pub/Sub</li></ul><h3 id="Camel2.19Release-NewDSL">New DSL</h3><h3 id="Camel2.19Release-NewAnnotations">New Annotations</h3><h3 id="Camel2.19Release-New.2">New <a shape="rect" href="data-format.html">Data Format</a></h3><h3 id="Camel2.19Release-New.3">New <a shape="rect" href="languages.html">Languages</a></h
 3><h3 id="Camel2.19Release-New.4">New <a shape="rect" href="examples.html">Examples</a></h3><h3 id="Camel2.19Release-New.5">New <a shape="rect" href="tutorials.html">Tutorials</a></h3><h2 id="Camel2.19Release-APIbreaking">API breaking</h2><h2 id="Camel2.19Release-KnownIssues">Known Issues</h2><h2 id="Camel2.19Release-Importantchangestoconsiderwhenupgrading">Important changes to consider when upgrading</h2><ul><li>Camel now uses Karaf 4.x API and therefore not possible to run on older Karaf versions</li><li>camel-spring-boot now don't include prototype scoped beans when auto scanning for RouteBuilder instances, which is how camel-spring works. You can turn this back using the&#160;includeNonSingletons option.</li></ul><h2 id="Camel2.19Release-GettingtheDistributions">Getting the Distributions</h2><h3 id="Camel2.19Release-BinaryDistributions">Binary Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>D
 escription</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Windows Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip">apache-camel-x.y.x.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.zip.asc">apache-camel-x.y.x.zip.asc</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Unix/Linux/Cygwin Distribution</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz">apache
 -camel-x.y.x.tar.gz</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x.tar.gz.asc">apache-camel-x.y.x.tar.gz.asc</a></p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-information"><p class="title">The above URLs use redirection</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The above URLs use the Apache Mirror system to redirect you to a suitable mirror for your download. Some users have experienced issues with some versions of browsers (e.g. some Safari browsers). If the download doesn't seem to work for you from the above URL then try using <a shape="rect" class="external-link" href="http://www.mozilla.com/en-US/firefox/" rel="nofollow">FireFox</a></p></div></div><h3 id="Camel2.19Release-SourceDistri
 butions">Source Distributions</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Download Link</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>PGP Signature file of download</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Source (zip)</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dyn/closer.cgi/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip">apache-camel-x.y.x-src.zip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://www.apache.org/dist/camel/apache-camel/x.y.x/apache-camel-x.y.x-src.zip.asc">apache-camel-x.y.x-src.zip.asc</a></p></td></tr></tbody></table></div><h3 id="Camel2.19Release-GettingtheBinariesusingMaven2">Getting the Binaries using Maven 2</h3><p>To us
 e this release in your maven project, the proper dependency configuration that you should use in your <a shape="rect" class="external-link" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">Maven POM</a> is:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-core&lt;/artifactId&gt;

Modified: websites/production/camel/content/salesforce.html
==============================================================================
--- websites/production/camel/content/salesforce.html (original)
+++ websites/production/camel/content/salesforce.html Sun Nov 27 16:18:42 2016
@@ -96,7 +96,7 @@
 </div></div><h3 id="Salesforce-URIformat">URI format</h3><p>The URI scheme for a salesforce component is as follows</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[salesforce:topic?options
 ]]></script>
-</div></div><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="Salesforce-SupportedSalesforceAPIs">Supported Salesforce APIs</h3><p>The component supports the following Salesforce APIs</p><p>Producer endpoints can use the following APIs. Most of the APIs process one record at a time, the Query API can retrieve multiple Records.</p><h4 id="Salesforce-RestAPI">Rest API</h4><ul><li>getVersions - Gets supported Salesforce REST API versions</li><li>getResources - Gets available Salesforce REST Resource endpoints</li><li>getGlobalObjects - Gets metadata for all available SObject types</li><li>getBasicInfo - Gets basic metadata for a specific SObject type</li><li>getDescription - Gets comprehensive metadata for a specific SObject type</li><li>getSObject - Gets an SObject using its Salesforce Id</li><li>createSObject - Creates an SObject</li><li>updateSObject - Updates an SObject using Id</li><li>deleteSObject -
  Deletes an SObject using Id</li><li>getSObjectWithId - Gets an SObject using an external (user defined) id field</li><li>upsertSObject - Updates or inserts an SObject using an external id</li><li>deleteSObjectWithId - Deletes an SObject using an external id</li><li>query - Runs a Salesforce SOQL query</li><li>queryMore - Retrieves more results (in case of large number of results) using result link returned from the 'query' API</li><li>search - Runs a Salesforce SOSL query</li></ul><p>For example, the following producer endpoint uses the upsertSObject API, with the sObjectIdName parameter specifying 'Name' as the external id field. <br clear="none"> The request message body should be an SObject DTO generated using the maven plugin. <br clear="none"> The response message will either be <code>null</code> if an existing record was updated, or <code>CreateSObjectResult</code> with an id of the new record, or a list of errors while creating the new object.</p><div class="code panel pdl" 
 style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="Salesforce-SupportedSalesforceAPIs">Supported Salesforce APIs</h3><p>The component supports the following Salesforce APIs</p><p>Producer endpoints can use the following APIs. Most of the APIs process one record at a time, the Query API can retrieve multiple Records.</p><h4 id="Salesforce-RestAPI">Rest API</h4><ul><li>getVersions - Gets supported Salesforce REST API versions</li><li>getResources - Gets available Salesforce REST Resource endpoints</li><li>getGlobalObjects - Gets metadata for all available SObject types</li><li>getBasicInfo - Gets basic metadata for a specific SObject type</li><li>getDescription - Gets comprehensive metadata for a specific SObject type</li><li>getSObject - Gets an SObject using its Salesforce Id</li><li>createSObject - Creates an SObject</li><li>updateSObject - Updates an SObject using Id</li><li>deleteSObject -
  Deletes an SObject using Id</li><li>getSObjectWithId - Gets an SObject using an external (user defined) id field</li><li>upsertSObject - Updates or inserts an SObject using an external id</li><li>deleteSObjectWithId - Deletes an SObject using an external id</li><li>query - Runs a Salesforce SOQL query</li><li>queryMore - Retrieves more results (in case of large number of results) using result link returned from the 'query' API</li><li>search - Runs a Salesforce SOSL query</li><li><p>limits - fetching organization <a shape="rect" class="external-link" href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_limits.htm" rel="nofollow">API usage limits</a></p></li><li><p>recent - fetching <a shape="rect" class="external-link" href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_recent_items.htm" rel="nofollow">recently viewed items</a></p></li><li><p>approval - submit a record or records (batch) for <a shape="rect" cl
 ass="external-link" href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_process_approvals.htm" rel="nofollow">approval process</a></p></li><li><p>approvals - fetch a list of all <a shape="rect" class="external-link" href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_process_approvals.htm" rel="nofollow">approval processes</a></p></li></ul><p>For example, the following producer endpoint uses the upsertSObject API, with the sObjectIdName parameter specifying 'Name' as the external id field. <br clear="none"> The request message body should be an SObject DTO generated using the maven plugin. <br clear="none"> The response message will either be <code>null</code> if an existing record was updated, or <code>CreateSObjectResult</code> with an id of the new record, or a list of errors while creating the new object.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[	...to(&quot;salesforce:upsertSObject?sObjectIdName=Name&quot;)...
 ]]></script>
 </div></div><h4 id="Salesforce-RestBulkAPI">Rest Bulk API</h4><p>Producer endpoints can use the following APIs. All Job data formats, i.e. xml, csv, zip/xml, and zip/csv are supported. <br clear="none"> The request and response have to be marshalled/unmarshalled by the route. Usually the request will be some stream source like a CSV file, <br clear="none"> and the response may also be saved to a file to be correlated with the request.</p><ul><li>createJob - Creates a Salesforce Bulk Job</li><li>getJob - Gets a Job using its Salesforce Id</li><li>closeJob - Closes a Job</li><li>abortJob - Aborts a Job</li><li>createBatch - Submits a Batch within a Bulk Job</li><li>getBatch - Gets a Batch using Id</li><li>getAllBatches - Gets all Batches for a Bulk Job Id</li><li>getRequest - Gets Request data (XML/CSV) for a Batch</li><li>getResults - Gets the results of the Batch when its complete</li><li>createBatchQuery - Creates a Batch from an SOQL query</li><li>getQueryResultIds - Gets a list o
 f Result Ids for a Batch Query</li><li>getQueryResult - Gets results for a Result Id</li></ul><p>For example, the following producer endpoint uses the createBatch API to create a Job Batch. <br clear="none"> The in message must contain a body that can be converted into an <code>InputStream</code> (usually UTF-8 CSV or XML content from a file, etc.) and header fields 'jobId' for the Job and 'contentType' for the Job content type, which can be XML, CSV, ZIP_XML or ZIP_CSV. The put message body will contain <code>BatchInfo</code> on success, or throw a <code>SalesforceException</code> on error.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -136,6 +136,35 @@
 		.to(new ContentProcessor())     // convert bytes from the file into a ContentVersion SObject 
 										// for the salesforce component
 		.to(&quot;salesforce:createSObject&quot;); ]]></script>
+</div></div><h3 id="Salesforce-UsingSalesforceLimitsAPI">Using Salesforce Limits API</h3><p>With <strong>salesforce:limits</strong> operation you can fetch of API limits from Salesforce and then act upon that data received. The result of <strong>salesforce:limits</strong> operation is mapped to <em>org.apache.camel.component.salesforce.api.dto.Limits</em> class and can be used in a custom processors or expressions.</p><p>For instance, consider that you need to limit the API usage of Salesforce so that 10% of daily API requests is left for other routes. The body of output message contains an instance of <em>org.apache.camel.component.salesforce.api.dto.Limits</em> object that can be used in conjunction with&#160;<a shape="rect" href="content-based-router.html">Content Based Router</a> and&#160;<a shape="rect" href="spel.html">Spring Expression Language (SpEL)</a> to choose when to perform queries. Notice how multiplying <strong>1.0</strong> with the integer value held in <strong>body
 .dailyApiRequests.remaining</strong> makes the expression evaluate as with floating point arithmetic, without it - it would end up making integral division which would result with either <strong>0</strong> (some API limits consumed) or <strong>1</strong> (no API limits consumed).</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:querySalesforce&quot;)
+    .to(&quot;salesforce:limits&quot;)
+    .choice()
+    .when(spel(&quot;#{1.0 * body.dailyApiRequests.remaining / body.dailyApiRequests.max &lt; 0.1}&quot;))
+        .to(&quot;salesforce:query?...&quot;)
+    .otherwise()
+        .setBody(constant(&quot;Used up Salesforce API limits, leaving 10% for critical routes&quot;))
+    .endChoice()]]></script>
+</div></div><h3 id="Salesforce-Workingwithapprovals">Working with approvals</h3><p>All the properties are named exactly the same as in the Salesforce REST API prefixed with <strong>approval</strong>. You can set approval properties by setting <strong>approvalPropertyName</strong> of the Endpoint these will be used as template -- meaning that any property not present in either body or header will be taken from the Endpoint configuration. Or you can set the approval template on the Endpoint by assigning <strong>approval</strong> property to a reference onto a bean in the Registry</p><p>You can also provide header values using the same <strong>approvalPropertyName</strong> in the incoming message headers.</p><p>And finally body can contain one <strong>AprovalRequest</strong> or an <strong>java.util.Iterable</strong> of <strong>ApprovalRequest</strong> objects to process as a batch.</p><p>The important thing to remember is the priority of the values specified in these three mechanisms:<
 /p><ol><li>value in body takes precedence before any other</li><li>value in message header takes precedence before template value</li><li>value in template is set if no other value in header or body was given</li></ol><p>For example to send one record for approval using values in headers use:</p><p>Given a route:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:example1&quot;)
+        .setHeader(&quot;approval.ContextId&quot;, simple(&quot;${body[&#39;contextId&#39;]}&quot;))
+        .setHeader(&quot;approval.NextApproverIds&quot;, simple(&quot;${body[&#39;nextApproverIds&#39;]}&quot;))
+        .to(&quot;salesforce:approval?&quot;
+            + &quot;approval.actionType=Submit&quot;
+            + &quot;&amp;approval.comments=this is a test&quot;
+            + &quot;&amp;approval.processDefinitionNameOrId=Test_Account_Process&quot;
+            + &quot;&amp;approval.skipEntryCriteria=true&quot;);]]></script>
+</div></div><p>You could send a record for approval using:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[final Map&lt;String, String&gt; body = new HashMap&lt;&gt;();
+body.put(&quot;contextId&quot;, accountIds.iterator().next());
+body.put(&quot;nextApproverIds&quot;, userId);
+
+final ApprovalResult result = template.requestBody(&quot;direct:example1&quot;, body, ApprovalResult.class);]]></script>
+</div></div><h3 id="Salesforce-UsingSalesforceRecentItemsAPI">Using Salesforce Recent Items API</h3><p>To fetch the recent items use <strong>salesforce:recent</strong> operation. This operation returns an <strong>java.util.List</strong> of <strong>org.apache.camel.component.salesforce.api.dto.RecentItem</strong> objects (<strong>List&lt;RecentItem&gt;</strong>) that in turn contain the <strong>Id</strong>, <strong>Name</strong> and <strong>Attributes</strong> (with <strong>type</strong> and <strong>url</strong> properties). You can limit the number of returned items by specifying <strong>limit</strong> parameter set to maximum number of records to return.</p><p>For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;direct:fetchRecentItems&quot;)
+    to(&quot;salesforce:recent&quot;)
+        .split().body()
+            .log(&quot;${body.name} at ${body.attributes.url}&quot;);]]></script>
 </div></div><h2 id="Salesforce-CamelSalesforceMavenPlugin">Camel Salesforce Maven Plugin</h2><p>This Maven plugin generates DTOs for the Camel <a shape="rect" href="salesforce.html">Salesforce</a>.</p><h3 id="Salesforce-Usage">Usage</h3><p>The plugin configuration has the following properties.</p><div class="confluenceTableSmall"><div class="table-wrap">
  <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>clientId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Salesforce client Id for Remote API access</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>clientSecret</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Salesforce client secret for Remote API access</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>userName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Salesforce account user name</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>password</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Salesforce account password (including secret token)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>version</p></td><td colspa
 n="1" rowspan="1" class="confluenceTd"><p>Salesforce Rest API version, defaults to 25.0</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outputDirectory</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Directory where to place generated DTOs, defaults to ${project.build.directory}/generated-sources/camel-salesforce</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>includes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of SObject types to include</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>excludes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of SObject types to exclude</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>includePattern</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Java RegEx for SObject types to include</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>excludePattern</p></td><td colspan="1" rowspan="1" cla
 ss="confluenceTd"><p>Java RegEx for SObject types to exclude</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>packageName</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Java package name for generated DTOs, defaults to org.apache.camel.salesforce.dto.</p></td></tr></tbody></table>
 </div></div><p>For obvious security reasons it is recommended that the clientId, clientSecret, userName and password fields be not set in the pom.xml. <br clear="none"> The plugin should be configured for the rest of the properties, and can be executed using the following command:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">