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 2017/03/17 19:20:29 UTC

svn commit: r1008525 [2/2] - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache stringtemplate.html

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Fri Mar 17 19:20:29 2017
@@ -3545,11 +3545,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</h2><p>&#160;</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Thanks</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This tutorial was kindly donated to Apache Camel by Martin Gilday.</p></div></div><h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the reader through the stages of creating a project which uses Camel to facilitate the routing of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org" rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1489749526219 {padding: 0px;}
-div.rbtoc1489749526219 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489749526219 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489778317269 {padding: 0px;}
+div.rbtoc1489778317269 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489778317269 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1489749526219">
+/*]]>*/</style></p><div class="toc-macro rbtoc1489778317269">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-About">About</a></li><li><a shape="rect" href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the Server</a>
@@ -5664,11 +5664,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. Apache Axis 1.4 is a very old and unsupported framework. We encourage users to use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1489749526488 {padding: 0px;}
-div.rbtoc1489749526488 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489749526488 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489778318101 {padding: 0px;}
+div.rbtoc1489778318101 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489778318101 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1489749526488">
+/*]]>*/</style><div class="toc-macro rbtoc1489778318101">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#BookInOnePage-RunningtheExample">Running the Example</a></li></ul>
@@ -16869,11 +16869,11 @@ template.send(&quot;direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.28">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a shape="rect" href="data-format.html">Data Format</a></li></ul> <h2 id="BookInOnePage-CXFComponent">CXF Component</h2><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF as a consumer, the <a shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows you to factor out how message payloads are received from their processing as a RESTful or SOAP web service. This has the potential of using a multitude of transports to consume web 
 services. The bean component's configuration is also simpler and provides the fastest method to implement web services using Camel and CXF.</p></div></div><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When using CXF in streaming modes (see DataFormat option), then also read about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p></div></div><p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1489749530520 {padding: 0px;}
-div.rbtoc1489749530520 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1489749530520 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1489778339611 {padding: 0px;}
+div.rbtoc1489778339611 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1489778339611 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1489749530520">
+/*]]>*/</style></p><div class="toc-macro rbtoc1489778339611">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" href="#BookInOnePage-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>
@@ -26028,7 +26028,7 @@ private class MyOutputStream extends Out
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;stream:file?fileName=/server/logs/server.log&amp;scanStream=true&amp;scanStreamDelay=1000&quot;).to(&quot;bean:logService?method=parseLogLine&quot;);
 ]]></script>
 </div></div><p>One gotcha with scanStream (pre Camel 2.7) or scanStream + retry is the file will be re-opened and scanned with each iteration of scanStreamDelay. Until NIO2 is available we cannot reliably detect when a file is deleted/recreated.</p><p></p><h3 id="BookInOnePage-SeeAlso.81">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-StringTemplate">String Template</h2><p>The <strong>string-template:</strong> component allows you to process a message using a <a shape="rect" class="external-link" href="http://www.stringtemplate.org/" rel="nofollow">String Template</a>. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate responses for requests.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-StringTemplate">String Template</h2><p>The <strong><code>string-template:</code></strong> component allows you to process a message using a <a shape="rect" class="external-link" href="http://www.stringtemplate.org/" rel="nofollow">String Template</a>. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate responses for requests.</p><p>Maven users will need to add the following dependency to their <strong><code>pom.xml</code></strong> for this component:</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-stringtemplate&lt;/artifactId&gt;
@@ -26036,20 +26036,16 @@ private class MyOutputStream extends Out
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-URIformat.66">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-URIFormat.5">URI Format</h3><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[string-template:templateName[?options]
 ]]></script>
-</div></div><p>Where <strong>templateName</strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookInOnePage-Options.73">Options</h3><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> Default </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>contentCache</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Cache for the resource content when its loaded. <br clear="none" class="atl-forced-newline"> Note : as of <strong>Camel 2.9</strong> cached resource content can be cleared via JMX using the endpoint's <code>clearContentCache</code> operation. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiterStart</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <st
 rong>Since Camel 2.11.1</strong>, configuring the variable start delimiter </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiterStop</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.1</strong>, configuring the variable end delimiter </p></td></tr></tbody></table></div>
-</div>
+</div></div><p>Where&#160;<strong><code>templateName</code></strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template.</p><p>You can append query options to the URI in the following format, <strong><code>?option=value&amp;option=value&amp;...</code></strong></p><h3 id="BookInOnePage-Options.73">Options</h3><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>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Cache for the resource content when its loaded. <br clear="none" class="atl-forced-newline"> <strong>Note</s
 trong>: as of <strong>Camel 2.9</strong> cached resource content can be cleared via JMX using the endpoint's <strong><code>clearContentCache</code></strong> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>delimiterStart</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>From<strong> Camel 2.11.1</strong>: configuring the variable start delimiter</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>delimiterStop</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>From<strong> Camel 2.11.1</strong>: configuring the variable end delimiter</p></td></tr></tbody></table></div></div>
 
 
-<h3 id="BookInOnePage-Headers.5">Headers</h3><p>Camel will store a reference to the resource in the message header with key, <code>org.apache.camel.stringtemplate.resource</code>. The Resource is an <code>org.springframework.core.io.Resource</code> object.</p><h3 id="BookInOnePage-Hotreloading.1">Hot reloading</h3><p>The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set <code>contentCache=true</code>, Camel loads the resource only once and hot-reloading is not possible. This scenario can be used in production when the resource never changes.</p><h3 id="BookInOnePage-StringTemplateAttributes">StringTemplate Attributes</h3><p>Camel will provide exchange information as attributes (just a <code>java.util.Map</code>) to the string template. The Exchange is transfered as:</p><div class="confluenceTableSmall">
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> key </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> value </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>exchange</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Exchange itself. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>headers</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The headers of the In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>camelContext</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Camel Context. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>request</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>in</code> </p></td><
 td colspan="1" rowspan="1" class="confluenceTd"><p> The In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>body</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The In message body. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>out</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Out message (only for InOut message exchange pattern). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>response</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Out message (only for InOut message exchange pattern). </p></td></tr></tbody></table></div>
-</div>
+<h3 id="BookInOnePage-Headers.5">Headers</h3><p>Camel will store a reference to the resource in the message header with key, <strong><code>org.apache.camel.stringtemplate.resource</code></strong>. The Resource is an <strong><code>org.springframework.core.io.Resource</code></strong> object.</p><h3 id="BookInOnePage-Hot-Reloading">Hot-Reloading</h3><p>The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set <strong><code>contentCache=true</code></strong>, Camel will load the resource just once, disabling hot-reloading. This scenario can be used in production when the resource never changes.</p><h3 id="BookInOnePage-StringTemplateAttributes">StringTemplate Attributes</h3><p>Camel will provide exchange information as attributes (just a <strong><code>java.util.Map</code></strong>) to the string template. The Exchange is transferred as:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTab
 le"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Key</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Exchange itself.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>headers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The headers of the&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>in</code></p></td><td 
 colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>body</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message body.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>out</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>OUT</code></strong> message (only for&#160;<strong><code>InOut</code></strong> message exchange pattern).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>OUT</code></strong> message (only for&#160;<strong><code>InOut</code></strong> message exchange pattern).</p></td></tr></tbody></table></div></div>
 
 
-<p>Since Camel 2.14, you can define the custom context map by setting the message header "<strong><span style="line-height: 1.4285715;">CamelStringTemplateVariableMap</span></strong><span style="line-height: 1.4285715;">" just like the below code.</span></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>From <strong>Camel 2.14</strong>: you can define the custom context map by setting the message header&#160;<strong><code>CamelStringTemplateVariableMap</code></strong>, as shown below:</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[Map&lt;String, Object&gt; variableMap = new HashMap&lt;String, Object&gt;();
 Map&lt;String, Object&gt; headersMap = new HashMap&lt;String, Object&gt;();
 headersMap.put(&quot;name&quot;, &quot;Willem&quot;);
@@ -26060,10 +26056,10 @@ exchange.getIn().setHeader(&quot;CamelSt
 
 ]]></script>
 </div></div><h3 id="BookInOnePage-Samples.19">Samples</h3><p>For example you could use a string template as follows in order to formulate a response to a message:</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;activemq:My.Queue&quot;).
-  to(&quot;string-template:com/acme/MyResponse.tm&quot;);
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:My.Queue&quot;)
+  .to(&quot;string-template:com/acme/MyResponse.tm&quot;);
 ]]></script>
-</div></div><h3 id="BookInOnePage-TheEmailSample.1">The Email Sample</h3><p>In this sample we want to use a string template to send an order confirmation email. The email template is laid out in <code>StringTemplate</code> as:<br clear="none"> This example works for <strong>camel 2.11.0</strong>. If your camel version is less than 2.11.0, the variables should be started and ended with $.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-TheEmailSample.1">The Email Sample</h3><p>In this sample we want to use a string template to send an order confirmation email. The email template is laid out in <strong><code>StringTemplate</code></strong> as:<br clear="none"> This example works for <strong>camel 2.11.0</strong>. If your camel version is less than <strong>2.11.0</strong>, the variables should be started and ended with <strong><code>$</code></strong>.</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[Dear &lt;headers.lastName&gt;, &lt;headers.firstName&gt;
 
 Thanks for the order of &lt;headers.item&gt;.
@@ -26102,7 +26098,7 @@ protected RouteBuilder createRouteBuilde
     };
 }
 ]]></script>
-</div></div><p></p><h3 id="BookInOnePage-SeeAlso.82">See Also</h3>
+</div></div><h3 id="BookInOnePage-SeeAlso.82">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-SQLComponent">SQL Component</h2><p>The <strong>sql:</strong> component allows you to work with databases using JDBC queries. The difference between this component and <a shape="rect" href="jdbc.html">JDBC</a> component is that in case of SQL the query is a property of the endpoint and it uses message payload as parameters passed to the query.</p><p>This component uses <code><strong>spring-jdbc</strong></code> behind the scenes for the actual SQL handling.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</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;
@@ -26111,7 +26107,7 @@ protected RouteBuilder createRouteBuilde
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><p>The SQL component also supports:</p><ul class="alternate"><li>a JDBC based repository for the <a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> EIP pattern. See further below.</li><li>a JDBC based repository for the <a shape="rect" href="aggregator2.html">Aggregator</a> EIP pattern. See further below.</li></ul><h3 id="BookInOnePage-URIformat.67">URI format</h3><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>From Camel 2.11 onwards this component can create both consumer (e.g. <code>from()</code>) and producer endpoints (e.g. <code>to()</code>).</p><p>In previous versions, it could only act as a producer.</p></div></div><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-infor
 mation-macro-icon"></span><div class="confluence-information-macro-body"><p>This component can be used as a <a shape="rect" class="external-link" href="http://camel.apache.org/transactional-client.html">Transactional Client</a>.</p></div></div><p>The SQL component uses the following endpoint URI notation:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The SQL component also supports:</p><ul class="alternate"><li>a JDBC based repository for the <a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> EIP pattern. See further below.</li><li>a JDBC based repository for the <a shape="rect" href="aggregator2.html">Aggregator</a> EIP pattern. See further below.</li></ul><h3 id="BookInOnePage-URIformat.66">URI format</h3><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>From Camel 2.11 onwards this component can create both consumer (e.g. <code>from()</code>) and producer endpoints (e.g. <code>to()</code>).</p><p>In previous versions, it could only act as a producer.</p></div></div><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-infor
 mation-macro-icon"></span><div class="confluence-information-macro-body"><p>This component can be used as a <a shape="rect" class="external-link" href="http://camel.apache.org/transactional-client.html">Transactional Client</a>.</p></div></div><p>The SQL component uses the following endpoint URI notation:</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[sql:select * from table where id=# order by name[?options]
 ]]></script>
 </div></div><p>From Camel 2.11 onwards you can use named parameters by using :<code>#name_of_the_parameter</code> style as shown:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -26276,7 +26272,7 @@ template.requestBodyAndHeader(&quot;dire
     &lt;version&gt;x.x.x&lt;/version&gt;
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;]]></script>
-</div></div><h3 id="BookInOnePage-URIFormat.5">URI Format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-URIFormat.6">URI Format</h3><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[telegram:type/authorizationToken[?options]]]></script>
 </div></div><h3 id="BookInOnePage-Options.75">Options</h3><p>The Telegram component has no options. However, the Telegram component does support 24 endpoint options, which are listed below:</p><div class="confluenceTableSmall"><div><div class="sect2"><div class="sect3"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Name</th><th colspan="1" rowspan="1" class="confluenceTh">Group</th><th colspan="1" rowspan="1" class="confluenceTh">Default</th><th colspan="1" rowspan="1" class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>authorizationToken</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>common</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><strong>Required</strong> The authorization token for using the bot 
 (ask the BotFather) e.g., <strong><code>654321531:HGF_dTra456323dHuOedsE343211fqr3t-H</code></strong>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>type</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>common</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><strong>Required</strong> The endpoint type. Currently only the&#160;<strong><code>bots</code></strong> type is supported.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>bridgeErrorHandler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>consumer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Allows for bridging the consu
 mer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the&#160;<strong><code>org.apache.camel.spi.ExceptionHandler</code></strong> to deal with exceptions that will be logged at&#160;<strong><code>WARN</code>/<code>ERROR</code></strong> level and ignored.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>limit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>consumer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>100</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Limit on the number of updates that can be received in a single polling request.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="t
 ableblock"><code>sendEmptyMessageWhenIdle</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><code>consumer</code></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">If the polling consumer did not poll any files you can enable this option to send an empty message (no body) instead.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>timeout</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><code>consumer</code></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>30</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Timeout in seconds for long polling. Put&#160;<strong><code>0</code></strong> for short polling or a bigger number for long polling. Long polling produces shorter response time.</p></td></tr><tr><td colspan="1" rowspan="
 1" class="confluenceTd"><p class="tableblock"><code>exceptionHandler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>consumer</code>&#160;</p><p class="tableblock">(advanced)</p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">To let the consumer use a custom <strong><code>ExceptionHandler</code></strong>. </p><p class="tableblock"><strong>Note</strong>: if the option&#160;<strong><code>bridgeErrorHandler</code></strong> is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at <strong><code>WARN</code>/<code>ERROR</code></strong> level and ignored.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>pollStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>consumer</code>&#160;</p><p class="tableblock">(adva
 nced)</p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">A pluggable&#160;<strong><code>org.apache.camel.PollingConsumerPollingStrategy</code></strong> allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>chatId</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>producer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">The identifier of the chat that will receive the produced messages. Chat ids can be first obtained from incoming messages e.g., when a telegram user starts a conversation with a bot its client sends automatically a&#160;<stro
 ng><code>/start</code></strong> message containing the chat id. It is an optional parameter as the chat id can be set dynamically for each outgoing message (using body or headers).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>exchangePattern</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>advanced</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>InOnly</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Sets the default exchange pattern when creating an exchange</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>synchronous</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>advanced</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>false</code></p></td><td colspan="1" rowspan="1" class="confl
 uenceTd"><p class="tableblock">Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>backoffErrorThreshold</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">The number of subsequent error polls (failed due some error) that should happen before the&#160;<strong><code>backoffMultiplier</code></strong> should kick-in.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>backoffIdleThreshold</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan
 ="1" class="confluenceTd"><p class="tableblock">The number of subsequent idle polls that should happen before the&#160;<strong><code>backoffMultiplier</code></strong> should kick-in.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>backoffMultiplier</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">To let the scheduled polling consumer back-off if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then&#160;<strong><code>backoffIdleThreshold</code></strong> and/or&#160;<strong><code>backoffErrorThreshold</code></strong> must also be configured.</p></td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"><p class="tableblock"><code>delay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>500</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Milliseconds before the next poll. You can also specify time values using units such as:</p><ul><li class="tableblock"><strong><code>60s</code></strong> (60 seconds)</li><li class="tableblock"><strong><code>5m30s</code></strong> (5 minutes and 30 seconds)</li><li class="tableblock"><strong><code>1h</code></strong> (1 hour)</li></ul></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>greedy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>false</code></p></td><td colspan="1" r
 owspan="1" class="confluenceTd"><p class="tableblock">If greedy is enabled then the&#160;<strong><code>ScheduledPollConsumer</code></strong> will run immediately again if the previous run polled 1 or more messages.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>initialDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Milliseconds before the first poll starts. You can also specify time values using units such as:</p><ul><li class="tableblock"><strong><code>60s</code></strong> (60 seconds)</li><li class="tableblock"><strong><code>5m30s</code></strong> (5 minutes and 30 seconds)</li><li class="tableblock"><strong><code>1h</code></strong> (1 hour)</li></ul></td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"><p class="tableblock"><code>runLoggingLevel</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>TRACE</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduledExecutorService</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool.</p></td></tr><tr><td
  colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>none</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">To use a cron scheduler from either camel-spring or&#160;<strong><code>camel-quartz2</code></strong> component</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>schedulerProperties</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">To configure additional properties when using a custom scheduler or any of the Quartz2 Spring based scheduler.</p></td></tr><tr><td colspan="1" rowspan="1"
  class="confluenceTd"><p class="tableblock"><code>startScheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Whether the scheduler should be auto started.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>timeUnit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>ms</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Time unit for&#160;<strong><code>initialDelay</code></strong> and delay options.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>useFixedDelay</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>scheduler</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock"><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p class="tableblock">Controls if fixed delay or fixed rate is used.</p><p class="tableblock">See&#160;<strong><code>ScheduledExecutorService</code></strong> in JDK for details.</p></td></tr></tbody></table></div></div></div></div></div>
 
@@ -26344,7 +26340,7 @@ template.requestBodyAndHeader(&quot;dire
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><p>From <strong>Camel 2.9</strong>: the <a shape="rect" href="test.html">Test</a> component is provided directly in <strong><code>camel-core</code></strong>.</p><h3 id="BookInOnePage-URIformat.68">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>From <strong>Camel 2.9</strong>: the <a shape="rect" href="test.html">Test</a> component is provided directly in <strong><code>camel-core</code></strong>.</p><h3 id="BookInOnePage-URIformat.67">URI format</h3><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[test:expectedMessagesEndpointUri
 ]]></script>
 </div></div><p>Where&#160;<strong><code>expectedMessagesEndpointUri</code></strong> refers to some other <a shape="rect" href="component.html">Component</a> URI that the expected message bodies are pulled from before starting the test.</p><h3 id="BookInOnePage-URIOptions.10">URI Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>anyOrder</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> Whether the expected messages should arrive in the same order, or in any order.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceT
 d"><p><code>delimiter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>\n|\r</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> The delimiter to use when&#160;<strong><code>split=true</code></strong>. The delimiter can be a regular expression.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>split</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.17:</strong> If&#160;<strong><code>true</code></strong> messages loaded from the test endpoint will be split using the defined <strong><code>delimiter</code></strong>.For example to use a&#160;<strong><code>file</code></strong> endpoint to load a file where each line is an expected message.&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>timeout</code></p></td><td colspan="1" rowspan="1" class="confluence
 Td"><p><code>2000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> The timeout to use when polling for message bodies from the URI.</p></td></tr></tbody></table></div></div>
@@ -26355,7 +26351,7 @@ template.requestBodyAndHeader(&quot;dire
   .to(&quot;test:file://data/expectedOutput?noop=true&quot;);
 ]]></script>
 </div></div><p>If your test then invokes the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/component/mock/MockEndpoint.html#assertIsSatisfied(org.apache.camel.CamelContext)">MockEndpoint.assertIsSatisfied(camelContext) method</a>, your test case will perform the necessary assertions.</p><p>To see how you can set other expectations on the test endpoint, see the <a shape="rect" href="mock.html">Mock</a> component.</p><p></p><h3 id="BookInOnePage-SeeAlso.84">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="spring-testing.html">Spring Testing</a></li></ul> <h2 id="BookInOnePage-TimerComponent">Timer Component</h2><p>The <strong>timer:</strong> component is used to generate message exchanges when a timer fires You can only consume events from this endpoint.</p><h3 id="BookInOnePage-URIformat.69">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="spring-testing.html">Spring Testing</a></li></ul> <h2 id="BookInOnePage-TimerComponent">Timer Component</h2><p>The <strong>timer:</strong> component is used to generate message exchanges when a timer fires You can only consume events from this endpoint.</p><h3 id="BookInOnePage-URIformat.68">URI format</h3><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[timer:name[?options]
 ]]></script>
 </div></div><p>Where <code>name</code> is the name of the <code>Timer</code> object, which is created and shared across endpoints. So if you use the same name for all your timer endpoints, only one <code>Timer</code> object and thread will be used.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><p><strong>Note:</strong> The IN body of the generated exchange is <code>null</code>. So <code>exchange.getIn().getBody()</code> returns <code>null</code>.</p><div class="confluence-information-macro confluence-information-macro-tip"><p class="title">Advanced Scheduler</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>See also the <a shape="rect" href="quartz.html">Quartz</a> component that supports much more advanced scheduling.</p></div></div><div class="confluence-information-macro confluence-information-macro-
 tip"><p class="title">Specify time in human friendly format</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>In <strong>Camel 2.3</strong> onwards you can specify the time in <a shape="rect" href="how-do-i-specify-time-period-in-a-human-friendly-syntax.html">human friendly syntax</a>.</p></div></div><h3 id="BookInOnePage-Options.76">Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>time</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A <code>java.util.
 Date</code> the <strong>first</strong> event should be generated. If using the URI, the pattern expected is: <code>yyyy-MM-dd HH:mm:ss</code> or <code>yyyy-MM-dd'T'HH:mm:ss</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>pattern</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Allows you to specify a custom <code>Date</code> pattern to use for setting the time option using URI syntax.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>period</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If greater than 0, generate periodic events every <code>period</code> milliseconds.<br clear="none">You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour).</p></td></tr><tr><td colspan
 ="1" rowspan="1" class="confluenceTd"><p><code>delay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="font-family: monospace;">0</span> / <code>1000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The number of milliseconds to wait before the first event is generated. Should not be used in conjunction with the <code>time</code> option.<br clear="none"><span>You can also specify time values using units, such as 60s (60 seconds), 5m30s (5 minutes and 30 seconds), and 1h (1 hour).</span>&#160;<br clear="none">Before <strong>Camel 2.11</strong> the default value is 0<br clear="none">From <strong>Camel 2.11</strong><span> the <span>default value is </span><code>1000<br clear="none"></code></span>From<strong> Camel 2.17 it </strong>is possible to specify a negative delay. In this scenario the timer will generate and fire events as soon as possible.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>fixedRate</code><
 /p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Events take place at approximately regular intervals, separated by the specified period.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>daemon</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Specifies whether or not the thread associated with the timer endpoint runs as a daemon.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>repeatCount</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> Specifies a maximum limit of number of fires. So if you set it to 1, the timer will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever
 .</p></td></tr></tbody></table></div></div>
@@ -26388,7 +26384,7 @@ template.requestBodyAndHeader(&quot;dire
   &lt;/route&gt;
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.85">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="quartz.html">Quartz</a></li></ul> <h2 id="BookInOnePage-ValidationComponent">Validation Component</h2><p>The Validation component performs XML validation of the message body using the JAXP Validation API and based on any of the supported XML schema languages, which defaults to <a shape="rect" class="external-link" href="http://www.w3.org/XML/Schema" rel="nofollow">XML Schema</a></p><p>Note that the <a shape="rect" href="jing.html">Jing</a> component also supports the following useful schema languages:</p><ul><li><a shape="rect" class="external-link" href="http://relaxng.org/compact-tutorial-20030326.html" rel="nofollow">RelaxNG Compact Syntax</a></li><li><a shape="rect" class="extern
 al-link" href="http://relaxng.org/" rel="nofollow">RelaxNG XML Syntax</a></li></ul><p>The <a shape="rect" href="msv.html">MSV</a> component also supports <a shape="rect" class="external-link" href="http://relaxng.org/" rel="nofollow">RelaxNG XML Syntax</a>.</p><h3 id="BookInOnePage-URIformat.70">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul><li><a shape="rect" href="quartz.html">Quartz</a></li></ul> <h2 id="BookInOnePage-ValidationComponent">Validation Component</h2><p>The Validation component performs XML validation of the message body using the JAXP Validation API and based on any of the supported XML schema languages, which defaults to <a shape="rect" class="external-link" href="http://www.w3.org/XML/Schema" rel="nofollow">XML Schema</a></p><p>Note that the <a shape="rect" href="jing.html">Jing</a> component also supports the following useful schema languages:</p><ul><li><a shape="rect" class="external-link" href="http://relaxng.org/compact-tutorial-20030326.html" rel="nofollow">RelaxNG Compact Syntax</a></li><li><a shape="rect" class="extern
 al-link" href="http://relaxng.org/" rel="nofollow">RelaxNG XML Syntax</a></li></ul><p>The <a shape="rect" href="msv.html">MSV</a> component also supports <a shape="rect" class="external-link" href="http://relaxng.org/" rel="nofollow">RelaxNG XML Syntax</a>.</p><h3 id="BookInOnePage-URIformat.69">URI format</h3><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[validator:someLocalOrRemoteResource
 ]]></script>
 </div></div><p>Where <strong>someLocalOrRemoteResource</strong> is some URL to a local resource on the classpath or a full URL to a remote resource or resource on the file system which contains the XSD to validate against. For example:</p><ul><li><code>msv:org/foo/bar.xsd</code></li><li><code>msv:file:../foo/bar.xsd</code></li><li><code>msv:<a shape="rect" class="external-link" href="http://acme.com/cheese.xsd" rel="nofollow">http://acme.com/cheese.xsd</a></code></li><li><code>validator:com/mypackage/myschema.xsd</code></li></ul><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component when using <strong>Camel 2.8</strong> or older:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -26428,7 +26424,7 @@ template.requestBodyAndHeader(&quot;dire
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-URIformat.71">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-URIformat.70">URI format</h3><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[velocity:templateName[?options]
 ]]></script>
 </div></div><p>Where <strong>templateName</strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template (eg: <a shape="rect" class="external-link" href="file://folder/myfile.vm" rel="nofollow">file://folder/myfile.vm</a>).</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookInOnePage-Options.78">Options</h3><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>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>loaderCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Velocity based file loader 
 cache.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Cache for the resource content when it is loaded. <br clear="none" class="atl-forced-newline"> Note : as of Camel 2.9 cached resource content can be cleared via JMX using the endpoint's <code>clearContentCache</code> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>encoding</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Character encoding of the resource content.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>propertiesFile</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>New option in Camel 2
 .1: The URI of the properties file which is used for VelocityEngine initialization.</p></td></tr></tbody></table></div></div>
@@ -26447,7 +26443,7 @@ template.requestBodyAndHeader(&quot;dire
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[   VelocityContext velocityContext = new VelocityContext(variableMap);
    exchange.getIn().setHeader(&quot;CamelVelocityContext&quot;, velocityContext);
 ]]></script>
-</div></div><p>&#160;</p><h3 id="BookInOnePage-Hotreloading.2">Hot reloading</h3><p>The Velocity template resource is, by default, hot reloadable for both file and classpath resources (expanded jar). If you set <code>contentCache=true</code>, Camel will only load the resource once, and thus hot reloading is not possible. This scenario can be used in production, when the resource never changes.</p><h3 id="BookInOnePage-Dynamictemplates.1">Dynamic templates</h3><p><strong>Available as of Camel 2.1</strong><br clear="none"> Camel provides two headers by which you can define a different resource location for a template or the template content itself. If any of these headers is set then Camel uses this over the endpoint configured resource. This allows you to provide a dynamic template at runtime.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan
 ="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelVelocityResourceUri</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> A URI for the template resource to use instead of the endpoint configured.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelVelocityTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> The template to use instead of the endpoint configured.</p></td></tr></tbody></table></div></div>
+</div></div><p>&#160;</p><h3 id="BookInOnePage-Hotreloading.1">Hot reloading</h3><p>The Velocity template resource is, by default, hot reloadable for both file and classpath resources (expanded jar). If you set <code>contentCache=true</code>, Camel will only load the resource once, and thus hot reloading is not possible. This scenario can be used in production, when the resource never changes.</p><h3 id="BookInOnePage-Dynamictemplates.1">Dynamic templates</h3><p><strong>Available as of Camel 2.1</strong><br clear="none"> Camel provides two headers by which you can define a different resource location for a template or the template content itself. If any of these headers is set then Camel uses this over the endpoint configured resource. This allows you to provide a dynamic template at runtime.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan
 ="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelVelocityResourceUri</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> A URI for the template resource to use instead of the endpoint configured.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>CamelVelocityTemplate</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.1:</strong> The template to use instead of the endpoint configured.</p></td></tr></tbody></table></div></div>
 
 
 <h3 id="BookInOnePage-Samples.20">Samples</h3><p>For example you could use something like</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -26527,7 +26523,7 @@ protected RouteBuilder createRouteBuilde
 
 <p>VM is an extension to the <a shape="rect" href="seda.html">Seda</a> component.</p>
 
-<h3 id="BookInOnePage-URIformat.72">URI format</h3>
+<h3 id="BookInOnePage-URIformat.71">URI format</h3>
 
 <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[
@@ -26590,7 +26586,7 @@ from(&quot;vm:order.email&quot;).bean(My
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-URIformat.73">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-URIformat.72">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: text; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[xmpp://[login@]hostname[:port][/participant][?Options]
 ]]></script>
 </div></div><p>The component supports both room based and private person-person conversations.<br clear="none"> The component supports both producer and consumer (you can get messages from XMPP or send messages to XMPP). Consumer mode supports rooms starting.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookInOnePage-Options.80">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>room</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are <code>superman@jabber.org</code> and want to joi
 n the <code>krypton</code> room, then the room URL is <code>krypton@conference.jabber.org</code>. Note the <code>conference</code> part.<br clear="none"> It is not a requirement to provide the full room JID. If the <code>room</code> parameter does not contain the <code>@</code> symbol, the domain part will be discovered and added by Camel</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>user</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>User name (without server name). If not specified, anonymous login will be attempted.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>password</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Password.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resource</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>XMPP resource. The default is <code>Camel</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenc
 eTd"><p><code>createAccount</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <code>true</code>, an attempt to create an account will be made. Default is <code>false</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>participant</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JID (Jabber ID) of person to receive messages. <code>room</code> parameter has precedence over <code>participant</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>nickname</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use nickname when joining room. If room is specified and nickname is not, <code>user</code> will be used for the nickname.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>serviceName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the service you are connecting to. For Google Talk, this would be <code>gmail.com</code>
 .</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>testConnectionOnStartup</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a "lazy" connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is <code>true</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>connectionPollDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> The amount of time in seconds between polls to verify the health of the XMPP connection, or between attempts to establish an initial consumer connection.
  Camel will try to re-establish a connection if it has become inactive. Default is <code>10 seconds</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">pubsub</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15</strong> Accept pubsub packets on input, default is false</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">doc</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15</strong> <span>Set a doc header on the IN message containing a Document form of the incoming packet; default is true if presence or pubsub are true, otherwise false</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">connectionConfiguration</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.18:</strong> To use an existing connection configuration</td></tr></tbody></table></div><h3 id="BookInOnePage-HeadersandsettingSubjectorLanguage">Headers and setting Subject or Language</h3><p>Camel sets the message IN he
 aders as properties on the XMPP message. You can configure a <code>HeaderFilterStategy</code> if you need custom filtering of headers.<br clear="none"> The <strong>Subject</strong> and <strong>Language</strong> of the XMPP message are also set if they are provided as IN headers.</p><h3 id="BookInOnePage-Examples.28">Examples</h3><p>User <code>superman</code> to join room <code>krypton</code> at <code>jabber</code> server with password, <code>secret</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -26637,7 +26633,7 @@ to(&quot;activemq:krypton.talk&quot;);
 ]]></script>
 </div></div>
 
-<h3 id="BookInOnePage-URIformat.74">URI format</h3>
+<h3 id="BookInOnePage-URIformat.73">URI format</h3>
 
 <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[
@@ -26669,7 +26665,7 @@ from(&quot;activemq:My.Queue&quot;).
 </div></div>
 
 <h3 id="BookInOnePage-SeeAlso.90">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-XSLT">XSLT</h2><p>The <strong>xslt:</strong> component allows you to process a message using an <a shape="rect" class="external-link" href="http://www.w3.org/TR/xslt" rel="nofollow">XSLT</a> template. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate respopnses for requests.</p><h3 id="BookInOnePage-URIformat.75">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-XSLT">XSLT</h2><p>The <strong>xslt:</strong> component allows you to process a message using an <a shape="rect" class="external-link" href="http://www.w3.org/TR/xslt" rel="nofollow">XSLT</a> template. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate respopnses for requests.</p><h3 id="BookInOnePage-URIformat.74">URI format</h3><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[xslt:templateName[?options]
 ]]></script>
 </div></div><p>Where <strong>templateName</strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template. Refer to the <a shape="rect" class="external-link" href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/core/io/DefaultResourceLoader.html" rel="nofollow">Spring Documentation for more detail of the URI syntax</a></p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><p>Here are some example URIs</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>URI</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">

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

Modified: websites/production/camel/content/stringtemplate.html
==============================================================================
--- websites/production/camel/content/stringtemplate.html (original)
+++ websites/production/camel/content/stringtemplate.html Fri Mar 17 19:20:29 2017
@@ -86,7 +86,7 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="StringTemplate-StringTemplate">String Template</h2><p>The <strong>string-template:</strong> component allows you to process a message using a <a shape="rect" class="external-link" href="http://www.stringtemplate.org/" rel="nofollow">String Template</a>. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate responses for requests.</p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="StringTemplate-StringTemplate">String Template</h2><p>The <strong><code>string-template:</code></strong> component allows you to process a message using a <a shape="rect" class="external-link" href="http://www.stringtemplate.org/" rel="nofollow">String Template</a>. This can be ideal when using <a shape="rect" href="templating.html">Templating</a> to generate responses for requests.</p><p>Maven users will need to add the following dependency to their <strong><code>pom.xml</code></strong> for this component:</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-stringtemplate&lt;/artifactId&gt;
@@ -94,20 +94,16 @@
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="StringTemplate-URIformat">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="StringTemplate-URIFormat">URI Format</h3><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[string-template:templateName[?options]
 ]]></script>
-</div></div><p>Where <strong>templateName</strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="StringTemplate-Options">Options</h3><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> Default </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>contentCache</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Cache for the resource content when its loaded. <br clear="none" class="atl-forced-newline"> Note : as of <strong>Camel 2.9</strong> cached resource content can be cleared via JMX using the endpoint's <code>clearContentCache</code> operation. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiterStart</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <st
 rong>Since Camel 2.11.1</strong>, configuring the variable start delimiter </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiterStop</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.1</strong>, configuring the variable end delimiter </p></td></tr></tbody></table></div>
-</div>
+</div></div><p>Where&#160;<strong><code>templateName</code></strong> is the classpath-local URI of the template to invoke; or the complete URL of the remote template.</p><p>You can append query options to the URI in the following format, <strong><code>?option=value&amp;option=value&amp;...</code></strong></p><h3 id="StringTemplate-Options">Options</h3><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>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Cache for the resource content when its loaded. <br clear="none" class="atl-forced-newline"> <strong>Note</str
 ong>: as of <strong>Camel 2.9</strong> cached resource content can be cleared via JMX using the endpoint's <strong><code>clearContentCache</code></strong> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>delimiterStart</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>From<strong> Camel 2.11.1</strong>: configuring the variable start delimiter</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>delimiterStop</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>From<strong> Camel 2.11.1</strong>: configuring the variable end delimiter</p></td></tr></tbody></table></div></div>
 
 
-<h3 id="StringTemplate-Headers">Headers</h3><p>Camel will store a reference to the resource in the message header with key, <code>org.apache.camel.stringtemplate.resource</code>. The Resource is an <code>org.springframework.core.io.Resource</code> object.</p><h3 id="StringTemplate-Hotreloading">Hot reloading</h3><p>The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set <code>contentCache=true</code>, Camel loads the resource only once and hot-reloading is not possible. This scenario can be used in production when the resource never changes.</p><h3 id="StringTemplate-StringTemplateAttributes">StringTemplate Attributes</h3><p>Camel will provide exchange information as attributes (just a <code>java.util.Map</code>) to the string template. The Exchange is transfered as:</p><div class="confluenceTableSmall">
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> key </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> value </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>exchange</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Exchange itself. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>headers</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The headers of the In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>camelContext</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Camel Context. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>request</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>in</code> </p></td><
 td colspan="1" rowspan="1" class="confluenceTd"><p> The In message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>body</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The In message body. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>out</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Out message (only for InOut message exchange pattern). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>response</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Out message (only for InOut message exchange pattern). </p></td></tr></tbody></table></div>
-</div>
+<h3 id="StringTemplate-Headers">Headers</h3><p>Camel will store a reference to the resource in the message header with key, <strong><code>org.apache.camel.stringtemplate.resource</code></strong>. The Resource is an <strong><code>org.springframework.core.io.Resource</code></strong> object.</p><h3 id="StringTemplate-Hot-Reloading">Hot-Reloading</h3><p>The string template resource is by default hot-reloadable for both file and classpath resources (expanded jar). If you set <strong><code>contentCache=true</code></strong>, Camel will load the resource just once, disabling hot-reloading. This scenario can be used in production when the resource never changes.</p><h3 id="StringTemplate-StringTemplateAttributes">StringTemplate Attributes</h3><p>Camel will provide exchange information as attributes (just a <strong><code>java.util.Map</code></strong>) to the string template. The Exchange is transferred as:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTa
 ble"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Key</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Exchange itself.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>headers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The headers of the&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>camelContext</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>request</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>in</code></p></td><td
  colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>body</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> message body.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>out</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>OUT</code></strong> message (only for&#160;<strong><code>InOut</code></strong> message exchange pattern).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>response</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The&#160;<strong><code>OUT</code></strong> message (only for&#160;<strong><code>InOut</code></strong> message exchange pattern).</p></td></tr></tbody></table></div></div>
 
 
-<p>Since Camel 2.14, you can define the custom context map by setting the message header "<strong><span style="line-height: 1.4285715;">CamelStringTemplateVariableMap</span></strong><span style="line-height: 1.4285715;">" just like the below code.</span></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>From <strong>Camel 2.14</strong>: you can define the custom context map by setting the message header&#160;<strong><code>CamelStringTemplateVariableMap</code></strong>, as shown below:</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[Map&lt;String, Object&gt; variableMap = new HashMap&lt;String, Object&gt;();
 Map&lt;String, Object&gt; headersMap = new HashMap&lt;String, Object&gt;();
 headersMap.put(&quot;name&quot;, &quot;Willem&quot;);
@@ -118,10 +114,10 @@ exchange.getIn().setHeader(&quot;CamelSt
 
 ]]></script>
 </div></div><h3 id="StringTemplate-Samples">Samples</h3><p>For example you could use a string template as follows in order to formulate a response to a message:</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;activemq:My.Queue&quot;).
-  to(&quot;string-template:com/acme/MyResponse.tm&quot;);
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:My.Queue&quot;)
+  .to(&quot;string-template:com/acme/MyResponse.tm&quot;);
 ]]></script>
-</div></div><h3 id="StringTemplate-TheEmailSample">The Email Sample</h3><p>In this sample we want to use a string template to send an order confirmation email. The email template is laid out in <code>StringTemplate</code> as:<br clear="none"> This example works for <strong>camel 2.11.0</strong>. If your camel version is less than 2.11.0, the variables should be started and ended with $.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="StringTemplate-TheEmailSample">The Email Sample</h3><p>In this sample we want to use a string template to send an order confirmation email. The email template is laid out in <strong><code>StringTemplate</code></strong> as:<br clear="none"> This example works for <strong>camel 2.11.0</strong>. If your camel version is less than <strong>2.11.0</strong>, the variables should be started and ended with <strong><code>$</code></strong>.</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[Dear &lt;headers.lastName&gt;, &lt;headers.firstName&gt;
 
 Thanks for the order of &lt;headers.item&gt;.
@@ -160,7 +156,7 @@ protected RouteBuilder createRouteBuilde
     };
 }
 ]]></script>
-</div></div><p></p><h3 id="StringTemplate-SeeAlso">See Also</h3>
+</div></div><h3 id="StringTemplate-SeeAlso">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul></div>
         </td>
         <td valign="top">