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/01/09 17:21:32 UTC

svn commit: r977368 - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache hipchat.html

Author: buildbot
Date: Sat Jan  9 16:21:32 2016
New Revision: 977368

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/book-component-appendix.html
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/hipchat.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Sat Jan  9 16:21:32 2016
@@ -885,27 +885,27 @@ crypto:verify:name[?options]
 ]]></script>
 </div></div><ul><li><code>crypto:sign</code> creates the signature and stores it in the Header keyed by the constant <code>org.apache.camel.component.crypto.DigitalSignatureConstants.SIGNATURE</code>, i.e. <code>"CamelDigitalSignature"</code>.</li><li><code>crypto:verify</code> will read in the contents of this header and do the verification calculation.</li></ul><p>In order to correctly function, the sign and verify process needs a pair of keys to be shared, signing requiring a <code>PrivateKey</code> and verifying a <code>PublicKey</code> (or a <code>Certificate</code> containing one). Using the JCE it is very simple to generate these key pairs but it is usually most secure to use a KeyStore to house and share your keys. The DSL is very flexible about how keys are supplied and provides a number of mechanisms.</p><p>Note a <code>crypto:sign</code> endpoint is typically defined in one route and the complimentary <code>crypto:verify</code> in another, though for simplicity in the exa
 mples they appear one after the other. It goes without saying that both signing and verifying should be configured identically.</p><h3 id="BookComponentAppendix-Options.6">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>Type</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>algorithm</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>SHA1WithDSA</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JCE Signature algorithm that will be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>
 alias</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>An alias name that will be used to select a key from the keystore.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>bufferSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2048</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the size of the buffer used in the signature process.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>certificate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Certificate</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 Certificate us
 ed to verify the signature of the exchange's payload. Either this or a Public Key is required.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>KeyStore</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 reference to a JCE Keystore that stores keys and certificates used to sign and verify.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">keyStoreParameters <strong>Camel 2.14.1</strong></td><td colspan="1" rowspan="1" class="confluenceTd">KeyStoreParameters</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">A reference to a Camel KeyStoreParameters Object which wraps a Java KeyStore Object</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>provider</code></p></td><td colspan="1" rowspan="
 1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JCE Security Provider that should be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>privateKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>PrivateKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The private key used to sign the exchange's payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>publicKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>PublicKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The public key used to verify the signature of the exchange's payload.</
 p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>secureRandom</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>secureRandom</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 reference to a <code>SecureRandom</code> object that will be used to initialize the Signature service.</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><code>char[]</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The password to access the private key from the keystore</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>clearHeaders</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="
 1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Remove camel crypto headers from Message after a verify operation (value can be <code>"true"</code>/<code>"false"</code>).</p></td></tr></tbody></table></div></div><h3 id="BookComponentAppendix-Using.2">Using</h3><h4 id="BookComponentAppendix-1)Rawkeys">1) Raw keys</h4><p>The most basic way to way to sign and verify an exchange is with a KeyPair 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[
-from(&quot;direct:keypair&quot;).to(&quot;crypto:sign://basic?privateKey=#myPrivateKey&quot;, &quot;crypto:verify://basic?publicKey=#myPublicKey&quot;, &quot;mock:result&quot;);
+from(&quot;direct:keypair&quot;).to(&quot;crypto:sign:basic?privateKey=#myPrivateKey&quot;, &quot;crypto:verify:basic?publicKey=#myPublicKey&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>The same can be achieved with the <a shape="rect" href="spring-xml-extensions.html">Spring XML Extensions</a> using references to keys<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;route&gt;
     &lt;from uri=&quot;direct:keypair&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://basic?privateKey=#myPrivateKey&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://basic?publicKey=#myPublicKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:basic?privateKey=#myPrivateKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:basic?publicKey=#myPublicKey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;
 ]]></script>
 </div></div><h4 id="BookComponentAppendix-2)KeyStoresandAliases.">2) KeyStores and Aliases.</h4><p>The JCE provides a very versatile keystore concept for housing pairs of private keys and certificates, keeping them encrypted and password protected. They can be retrieved by applying an alias to the retrieval APIs. There are a number of ways to get keys and Certificates into a keystore, most often this is done with the external 'keytool' application. <a shape="rect" class="external-link" href="http://www.exampledepot.com/egs/java.security.cert/CreateCert.html" rel="nofollow">This</a> is a good example of using keytool to create a KeyStore with a self signed Cert and Private key.</p><p>The examples use a Keystore with a key and cert aliased by 'bob'. The password for the keystore and the key is 'letmein'</p><p>The following shows how to use a Keystore via the Fluent builders, it also shows how to load and initialize the keystore.</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:keystore&quot;).to(&quot;crypto:sign://keystore?keystore=#keystore&amp;alias=bob&amp;password=letmein&quot;, &quot;crypto:verify://keystore?keystore=#keystore&amp;alias=bob&quot;, &quot;mock:result&quot;);
+from(&quot;direct:keystore&quot;).to(&quot;crypto:sign:keystore?keystore=#keystore&amp;alias=bob&amp;password=letmein&quot;, &quot;crypto:verify:keystore?keystore=#keystore&amp;alias=bob&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>Again in Spring a ref is used to lookup an actual keystore instance.<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;route&gt;
     &lt;from uri=&quot;direct:keystore&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://keystore?keystore=#keystore&amp;amp;alias=bob&amp;amp;password=letmein&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://keystore?keystore=#keystore&amp;amp;alias=bob&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:keystore?keystore=#keystore&amp;amp;alias=bob&amp;amp;password=letmein&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:keystore?keystore=#keystore&amp;amp;alias=bob&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
@@ -916,20 +916,20 @@ PrivateKey privateKey = keyPair.getPriva
 PublicKey publicKey = keyPair.getPublic();
 
 // we can set the keys explicitly on the endpoint instances.
-context.getEndpoint(&quot;crypto:sign://rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
-context.getEndpoint(&quot;crypto:verify://rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPublicKey(publicKey);
-from(&quot;direct:algorithm&quot;).to(&quot;crypto:sign://rsa?algorithm=MD5withRSA&quot;, &quot;crypto:verify://rsa?algorithm=MD5withRSA&quot;, &quot;mock:result&quot;);
+context.getEndpoint(&quot;crypto:sign:rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
+context.getEndpoint(&quot;crypto:verify:rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPublicKey(publicKey);
+from(&quot;direct:algorithm&quot;).to(&quot;crypto:sign:rsa?algorithm=MD5withRSA&quot;, &quot;crypto:verify:rsa?algorithm=MD5withRSA&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div><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:provider&quot;).to(&quot;crypto:sign://provider?privateKey=#myPrivateKey&amp;provider=SUN&quot;, &quot;crypto:verify://provider?publicKey=#myPublicKey&amp;provider=SUN&quot;, &quot;mock:result&quot;);
+from(&quot;direct:provider&quot;).to(&quot;crypto:sign:provider?privateKey=#myPrivateKey&amp;provider=SUN&quot;, &quot;crypto:verify:provider?publicKey=#myPublicKey&amp;provider=SUN&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:algorithm&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://rsa?algorithm=MD5withRSA&amp;amp;privateKey=#rsaPrivateKey&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://rsa?algorithm=MD5withRSA&amp;amp;publicKey=#rsaPublicKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:rsa?algorithm=MD5withRSA&amp;amp;privateKey=#rsaPrivateKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:rsa?algorithm=MD5withRSA&amp;amp;publicKey=#rsaPublicKey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
@@ -937,69 +937,69 @@ from(&quot;direct:provider&quot;).to(&qu
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
     &lt;from uri=&quot;direct:provider&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://provider?privateKey=#myPrivateKey&amp;amp;provider=SUN&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://provider?publicKey=#myPublicKey&amp;amp;provider=SUN&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:provider?privateKey=#myPrivateKey&amp;amp;provider=SUN&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:provider?publicKey=#myPublicKey&amp;amp;provider=SUN&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookComponentAppendix-4)ChangingtheSignatureMessageHeader">4) Changing the Signature Message Header</h4><p>It may be desirable to change the message header used to store the signature. A different header name can be specified in the route definition 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[
-from(&quot;direct:signature-header&quot;).to(&quot;crypto:sign://another?privateKey=#myPrivateKey&amp;signatureHeader=AnotherDigitalSignature&quot;,
-                                   &quot;crypto:verify://another?publicKey=#myPublicKey&amp;signatureHeader=AnotherDigitalSignature&quot;, &quot;mock:result&quot;);
+from(&quot;direct:signature-header&quot;).to(&quot;crypto:sign:another?privateKey=#myPrivateKey&amp;signatureHeader=AnotherDigitalSignature&quot;,
+                                   &quot;crypto:verify:another?publicKey=#myPublicKey&amp;signatureHeader=AnotherDigitalSignature&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:signature-header&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://another?privateKey=#myPrivateKey&amp;amp;signatureHeader=AnotherDigitalSignature&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://another?publicKey=#myPublicKey&amp;amp;signatureHeader=AnotherDigitalSignature&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:another?privateKey=#myPrivateKey&amp;amp;signatureHeaderName=AnotherDigitalSignature&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:another?publicKey=#myPublicKey&amp;amp;signatureHeaderName=AnotherDigitalSignature&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookComponentAppendix-5)Changingthebuffersize">5) Changing the buffersize</h4><p>In case you need to update the size of the buffer...</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:buffersize&quot;).to(&quot;crypto:sign://buffer?privateKey=#myPrivateKey&amp;buffersize=1024&quot;, &quot;crypto:verify://buffer?publicKey=#myPublicKey&amp;buffersize=1024&quot;, &quot;mock:result&quot;);
+from(&quot;direct:buffersize&quot;).to(&quot;crypto:sign:buffer?privateKey=#myPrivateKey&amp;buffersize=1024&quot;, &quot;crypto:verify:buffer?publicKey=#myPublicKey&amp;buffersize=1024&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:buffersize&quot; /&gt;
-    &lt;to uri=&quot;crypto:sign://buffer?privateKey=#myPrivateKey&amp;amp;buffersize=1024&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://buffer?publicKey=#myPublicKey&amp;amp;buffersize=1024&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:buffer?privateKey=#myPrivateKey&amp;amp;bufferSize=1024&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:buffer?publicKey=#myPublicKey&amp;amp;bufferSize=1024&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookComponentAppendix-6)SupplyingKeysdynamically.">6) Supplying Keys dynamically.</h4><p>When using a Recipient list or similar EIP the recipient of an exchange can vary dynamically. Using the same key across all recipients may be neither feasible nor desirable. It would be useful to be able to specify signature keys dynamically on a per-exchange basis. The exchange could then be dynamically enriched with the key of its target recipient prior to signing. To facilitate this the signature mechanisms allow for keys to be supplied dynamically via the message headers below</p><ul><li><code>Exchange.SIGNATURE_PRIVATE_KEY</code>, <code>"CamelSignaturePrivateKey"</code></li><li><code>Exchange.SIGNATURE_PUBLIC_KEY_OR_CERT</code>, <code>"CamelSignaturePublicKeyOrCert"</code></li></ul><p></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:headerkey-sign&quot;).to(&quot;crypto:sign://alias&quot;);
-from(&quot;direct:headerkey-verify&quot;).to(&quot;crypto:verify://alias&quot;, &quot;mock:result&quot;);
+from(&quot;direct:headerkey-sign&quot;).to(&quot;crypto:sign:alias&quot;);
+from(&quot;direct:headerkey-verify&quot;).to(&quot;crypto:verify:alias&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:headerkey-sign&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://headerkey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:headerkey&quot; /&gt;
 &lt;/route&gt;       
 &lt;route&gt;
     &lt;from uri=&quot;direct:headerkey-verify&quot;/&gt;
-    &lt;to uri=&quot;crypto:verify://headerkey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:headerkey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;    
 ]]></script>
 </div></div>Even better would be to dynamically supply a keystore alias. Again the alias can be supplied in a message header<ul><li><code>Exchange.KEYSTORE_ALIAS</code>, <code>"CamelSignatureKeyStoreAlias"</code></li></ul><p></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:alias-sign&quot;).to(&quot;crypto:sign://alias?keystore=#keystore&quot;);
-from(&quot;direct:alias-verify&quot;).to(&quot;crypto:verify://alias?keystore=#keystore&quot;, &quot;mock:result&quot;);
+from(&quot;direct:alias-sign&quot;).to(&quot;crypto:sign:alias?keystore=#keystore&quot;);
+from(&quot;direct:alias-verify&quot;).to(&quot;crypto:verify:alias?keystore=#keystore&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:alias-sign&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://alias?keystore=#keystore&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:alias?keystore=#keystore&quot; /&gt;
 &lt;/route&gt;       
 &lt;route&gt;
     &lt;from uri=&quot;direct:alias-verify&quot;/&gt;
-    &lt;to uri=&quot;crypto:verify://alias?keystore=#keystore&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:alias?keystore=#keystore&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;    
 ]]></script>
@@ -1016,11 +1016,11 @@ template.send(&quot;direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookComponentAppendix-SeeAlso.8">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="BookComponentAppendix-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 cons
 ume 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.rbtoc1452017855531 {padding: 0px;}
-div.rbtoc1452017855531 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1452017855531 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1452356288507 {padding: 0px;}
+div.rbtoc1452356288507 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1452356288507 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1452017855531">
+/*]]>*/</style></p><div class="toc-macro rbtoc1452356288507">
 <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-URIformat">URI format</a></li><li><a shape="rect" href="#BookComponentAppendix-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#BookComponentAppendix-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>
@@ -3121,7 +3121,7 @@ protected RouteBuilder createRouteBuilde
     return new RouteBuilder() {
         public void configure() throws Exception {
             // we use a delay of 60 minutes (eg. once pr. hour we poll the FTP server
-            long delay = 60 * 60 * 1000L;
+            long delay = 3600000;
 
             // from the given FTP server we poll (= download) all the files
             // from the public/reports folder as BINARY types and store this as files
@@ -3970,7 +3970,7 @@ hibernate:[entityClassName][?options]
 <ul class="alternate"><li><a shape="rect" href="hibernate-example.html">Hibernate Example</a></li></ul> <h2 id="BookComponentAppendix-HipchatComponent">Hipchat Component</h2><p><strong>Available as of Camel 2.15.0</strong></p><p>The Hipchat component supports producing and consuming messages from/to <a shape="rect" class="external-link" href="https://www.hipchat.com" rel="nofollow">Hipchat</a>&#160;service.</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Prerequisites</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>You must have a valid Hipchat user account and get a <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">personal access token</a> that you can use to produce/consume messages.</p></div></div><h3 id="BookComponentAppendix-URIFormat.1">URI Format</h3><div class="code panel pd
 l" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[hipchat://[host][:port]?options
 ]]></script>
-</div></div><p>You can append query options to the URI in the following format, ?options=value&amp;option2=value&amp;...</p><h3 id="BookComponentAppendix-URIOptions.4">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p><
 /td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>http</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>consumeUsers</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1
 " rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">api.hipchat.com</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1"
  rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd">The poll interval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr></tbody></table></div><h3 id="BookComponentAppendix-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last message from the provided 
 'consumeUsers' are retrieved and sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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, ?options=value&amp;option2=value&amp;...</p><h3 id="BookComponentAppendix-URIOptions.4">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></
 td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server such as http or https</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to, such as api.hipchat.com</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" cl
 ass="confluenceTd">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenc
 eTd">The poll interval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumeUsers</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr></tbody></table></div><h3 id="BookComponentAppendix-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last m
 essage from the provided 'consumeUsers' are retrieved and sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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[@Override
 public void configure() throws Exception {
  String hipchatEndpointUri = &quot;hipchat://?authToken=XXXX&amp;consumeUsers=@Joe,@John&quot;;

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 Sat Jan  9 16:21:32 2016
@@ -3725,11 +3725,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.rbtoc1452017863644 {padding: 0px;}
-div.rbtoc1452017863644 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1452017863644 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1452356346870 {padding: 0px;}
+div.rbtoc1452356346870 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1452356346870 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1452017863644">
+/*]]>*/</style></p><div class="toc-macro rbtoc1452356346870">
 <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>
@@ -5834,11 +5834,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.rbtoc1452017864088 {padding: 0px;}
-div.rbtoc1452017864088 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1452017864088 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1452356347899 {padding: 0px;}
+div.rbtoc1452356347899 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1452356347899 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1452017864088">
+/*]]>*/</style><div class="toc-macro rbtoc1452356347899">
 <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>
@@ -17157,27 +17157,27 @@ crypto:verify:name[?options]
 ]]></script>
 </div></div><ul><li><code>crypto:sign</code> creates the signature and stores it in the Header keyed by the constant <code>org.apache.camel.component.crypto.DigitalSignatureConstants.SIGNATURE</code>, i.e. <code>"CamelDigitalSignature"</code>.</li><li><code>crypto:verify</code> will read in the contents of this header and do the verification calculation.</li></ul><p>In order to correctly function, the sign and verify process needs a pair of keys to be shared, signing requiring a <code>PrivateKey</code> and verifying a <code>PublicKey</code> (or a <code>Certificate</code> containing one). Using the JCE it is very simple to generate these key pairs but it is usually most secure to use a KeyStore to house and share your keys. The DSL is very flexible about how keys are supplied and provides a number of mechanisms.</p><p>Note a <code>crypto:sign</code> endpoint is typically defined in one route and the complimentary <code>crypto:verify</code> in another, though for simplicity in the exa
 mples they appear one after the other. It goes without saying that both signing and verifying should be configured identically.</p><h3 id="BookInOnePage-Options.27">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>Type</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>algorithm</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>SHA1WithDSA</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JCE Signature algorithm that will be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>alias</
 code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>An alias name that will be used to select a key from the keystore.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>bufferSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2048</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>the size of the buffer used in the signature process.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>certificate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Certificate</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 Certificate used to v
 erify the signature of the exchange's payload. Either this or a Public Key is required.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>keystore</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>KeyStore</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 reference to a JCE Keystore that stores keys and certificates used to sign and verify.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">keyStoreParameters <strong>Camel 2.14.1</strong></td><td colspan="1" rowspan="1" class="confluenceTd">KeyStoreParameters</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">A reference to a Camel KeyStoreParameters Object which wraps a Java KeyStore Object</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>provider</code></p></td><td colspan="1" rowspan="1" clas
 s="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JCE Security Provider that should be used.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>privateKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>PrivateKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The private key used to sign the exchange's payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>publicKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>PublicKey</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The public key used to verify the signature of the exchange's payload.</p></td>
 </tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>secureRandom</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>secureRandom</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 reference to a <code>SecureRandom</code> object that will be used to initialize the Signature service.</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><code>char[]</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The password to access the private key from the keystore</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>clearHeaders</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" clas
 s="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Remove camel crypto headers from Message after a verify operation (value can be <code>"true"</code>/<code>"false"</code>).</p></td></tr></tbody></table></div></div><h3 id="BookInOnePage-Using.2">Using</h3><h4 id="BookInOnePage-1)Rawkeys">1) Raw keys</h4><p>The most basic way to way to sign and verify an exchange is with a KeyPair 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[
-from(&quot;direct:keypair&quot;).to(&quot;crypto:sign://basic?privateKey=#myPrivateKey&quot;, &quot;crypto:verify://basic?publicKey=#myPublicKey&quot;, &quot;mock:result&quot;);
+from(&quot;direct:keypair&quot;).to(&quot;crypto:sign:basic?privateKey=#myPrivateKey&quot;, &quot;crypto:verify:basic?publicKey=#myPublicKey&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>The same can be achieved with the <a shape="rect" href="spring-xml-extensions.html">Spring XML Extensions</a> using references to keys<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;route&gt;
     &lt;from uri=&quot;direct:keypair&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://basic?privateKey=#myPrivateKey&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://basic?publicKey=#myPublicKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:basic?privateKey=#myPrivateKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:basic?publicKey=#myPublicKey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;
 ]]></script>
 </div></div><h4 id="BookInOnePage-2)KeyStoresandAliases.">2) KeyStores and Aliases.</h4><p>The JCE provides a very versatile keystore concept for housing pairs of private keys and certificates, keeping them encrypted and password protected. They can be retrieved by applying an alias to the retrieval APIs. There are a number of ways to get keys and Certificates into a keystore, most often this is done with the external 'keytool' application. <a shape="rect" class="external-link" href="http://www.exampledepot.com/egs/java.security.cert/CreateCert.html" rel="nofollow">This</a> is a good example of using keytool to create a KeyStore with a self signed Cert and Private key.</p><p>The examples use a Keystore with a key and cert aliased by 'bob'. The password for the keystore and the key is 'letmein'</p><p>The following shows how to use a Keystore via the Fluent builders, it also shows how to load and initialize the keystore.</p><div class="code panel pdl" style="border-width: 1px;"><div c
 lass="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
-from(&quot;direct:keystore&quot;).to(&quot;crypto:sign://keystore?keystore=#keystore&amp;alias=bob&amp;password=letmein&quot;, &quot;crypto:verify://keystore?keystore=#keystore&amp;alias=bob&quot;, &quot;mock:result&quot;);
+from(&quot;direct:keystore&quot;).to(&quot;crypto:sign:keystore?keystore=#keystore&amp;alias=bob&amp;password=letmein&quot;, &quot;crypto:verify:keystore?keystore=#keystore&amp;alias=bob&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>Again in Spring a ref is used to lookup an actual keystore instance.<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;route&gt;
     &lt;from uri=&quot;direct:keystore&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://keystore?keystore=#keystore&amp;amp;alias=bob&amp;amp;password=letmein&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://keystore?keystore=#keystore&amp;amp;alias=bob&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:keystore?keystore=#keystore&amp;amp;alias=bob&amp;amp;password=letmein&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:keystore?keystore=#keystore&amp;amp;alias=bob&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
@@ -17188,20 +17188,20 @@ PrivateKey privateKey = keyPair.getPriva
 PublicKey publicKey = keyPair.getPublic();
 
 // we can set the keys explicitly on the endpoint instances.
-context.getEndpoint(&quot;crypto:sign://rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
-context.getEndpoint(&quot;crypto:verify://rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPublicKey(publicKey);
-from(&quot;direct:algorithm&quot;).to(&quot;crypto:sign://rsa?algorithm=MD5withRSA&quot;, &quot;crypto:verify://rsa?algorithm=MD5withRSA&quot;, &quot;mock:result&quot;);
+context.getEndpoint(&quot;crypto:sign:rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
+context.getEndpoint(&quot;crypto:verify:rsa?algorithm=MD5withRSA&quot;, DigitalSignatureEndpoint.class).setPublicKey(publicKey);
+from(&quot;direct:algorithm&quot;).to(&quot;crypto:sign:rsa?algorithm=MD5withRSA&quot;, &quot;crypto:verify:rsa?algorithm=MD5withRSA&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div><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:provider&quot;).to(&quot;crypto:sign://provider?privateKey=#myPrivateKey&amp;provider=SUN&quot;, &quot;crypto:verify://provider?publicKey=#myPublicKey&amp;provider=SUN&quot;, &quot;mock:result&quot;);
+from(&quot;direct:provider&quot;).to(&quot;crypto:sign:provider?privateKey=#myPrivateKey&amp;provider=SUN&quot;, &quot;crypto:verify:provider?publicKey=#myPublicKey&amp;provider=SUN&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:algorithm&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://rsa?algorithm=MD5withRSA&amp;amp;privateKey=#rsaPrivateKey&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://rsa?algorithm=MD5withRSA&amp;amp;publicKey=#rsaPublicKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:rsa?algorithm=MD5withRSA&amp;amp;privateKey=#rsaPrivateKey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:rsa?algorithm=MD5withRSA&amp;amp;publicKey=#rsaPublicKey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
@@ -17209,69 +17209,69 @@ from(&quot;direct:provider&quot;).to(&qu
 <script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
     &lt;from uri=&quot;direct:provider&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://provider?privateKey=#myPrivateKey&amp;amp;provider=SUN&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://provider?publicKey=#myPublicKey&amp;amp;provider=SUN&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:provider?privateKey=#myPrivateKey&amp;amp;provider=SUN&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:provider?publicKey=#myPublicKey&amp;amp;provider=SUN&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookInOnePage-4)ChangingtheSignatureMessageHeader">4) Changing the Signature Message Header</h4><p>It may be desirable to change the message header used to store the signature. A different header name can be specified in the route definition 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[
-from(&quot;direct:signature-header&quot;).to(&quot;crypto:sign://another?privateKey=#myPrivateKey&amp;signatureHeader=AnotherDigitalSignature&quot;,
-                                   &quot;crypto:verify://another?publicKey=#myPublicKey&amp;signatureHeader=AnotherDigitalSignature&quot;, &quot;mock:result&quot;);
+from(&quot;direct:signature-header&quot;).to(&quot;crypto:sign:another?privateKey=#myPrivateKey&amp;signatureHeader=AnotherDigitalSignature&quot;,
+                                   &quot;crypto:verify:another?publicKey=#myPublicKey&amp;signatureHeader=AnotherDigitalSignature&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:signature-header&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://another?privateKey=#myPrivateKey&amp;amp;signatureHeader=AnotherDigitalSignature&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://another?publicKey=#myPublicKey&amp;amp;signatureHeader=AnotherDigitalSignature&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:another?privateKey=#myPrivateKey&amp;amp;signatureHeaderName=AnotherDigitalSignature&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:another?publicKey=#myPublicKey&amp;amp;signatureHeaderName=AnotherDigitalSignature&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookInOnePage-5)Changingthebuffersize">5) Changing the buffersize</h4><p>In case you need to update the size of the buffer...</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:buffersize&quot;).to(&quot;crypto:sign://buffer?privateKey=#myPrivateKey&amp;buffersize=1024&quot;, &quot;crypto:verify://buffer?publicKey=#myPublicKey&amp;buffersize=1024&quot;, &quot;mock:result&quot;);
+from(&quot;direct:buffersize&quot;).to(&quot;crypto:sign:buffer?privateKey=#myPrivateKey&amp;buffersize=1024&quot;, &quot;crypto:verify:buffer?publicKey=#myPublicKey&amp;buffersize=1024&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:buffersize&quot; /&gt;
-    &lt;to uri=&quot;crypto:sign://buffer?privateKey=#myPrivateKey&amp;amp;buffersize=1024&quot; /&gt;
-    &lt;to uri=&quot;crypto:verify://buffer?publicKey=#myPublicKey&amp;amp;buffersize=1024&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:buffer?privateKey=#myPrivateKey&amp;amp;bufferSize=1024&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:buffer?publicKey=#myPublicKey&amp;amp;bufferSize=1024&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;        
 ]]></script>
 </div></div><h4 id="BookInOnePage-6)SupplyingKeysdynamically.">6) Supplying Keys dynamically.</h4><p>When using a Recipient list or similar EIP the recipient of an exchange can vary dynamically. Using the same key across all recipients may be neither feasible nor desirable. It would be useful to be able to specify signature keys dynamically on a per-exchange basis. The exchange could then be dynamically enriched with the key of its target recipient prior to signing. To facilitate this the signature mechanisms allow for keys to be supplied dynamically via the message headers below</p><ul><li><code>Exchange.SIGNATURE_PRIVATE_KEY</code>, <code>"CamelSignaturePrivateKey"</code></li><li><code>Exchange.SIGNATURE_PUBLIC_KEY_OR_CERT</code>, <code>"CamelSignaturePublicKeyOrCert"</code></li></ul><p></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:headerkey-sign&quot;).to(&quot;crypto:sign://alias&quot;);
-from(&quot;direct:headerkey-verify&quot;).to(&quot;crypto:verify://alias&quot;, &quot;mock:result&quot;);
+from(&quot;direct:headerkey-sign&quot;).to(&quot;crypto:sign:alias&quot;);
+from(&quot;direct:headerkey-verify&quot;).to(&quot;crypto:verify:alias&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:headerkey-sign&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://headerkey&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:headerkey&quot; /&gt;
 &lt;/route&gt;       
 &lt;route&gt;
     &lt;from uri=&quot;direct:headerkey-verify&quot;/&gt;
-    &lt;to uri=&quot;crypto:verify://headerkey&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:headerkey&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;    
 ]]></script>
 </div></div>Even better would be to dynamically supply a keystore alias. Again the alias can be supplied in a message header<ul><li><code>Exchange.KEYSTORE_ALIAS</code>, <code>"CamelSignatureKeyStoreAlias"</code></li></ul><p></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:alias-sign&quot;).to(&quot;crypto:sign://alias?keystore=#keystore&quot;);
-from(&quot;direct:alias-verify&quot;).to(&quot;crypto:verify://alias?keystore=#keystore&quot;, &quot;mock:result&quot;);
+from(&quot;direct:alias-sign&quot;).to(&quot;crypto:sign:alias?keystore=#keystore&quot;);
+from(&quot;direct:alias-verify&quot;).to(&quot;crypto:verify:alias?keystore=#keystore&quot;, &quot;mock:result&quot;);
 ]]></script>
 </div></div>or<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;route&gt;
     &lt;from uri=&quot;direct:alias-sign&quot;/&gt;
-    &lt;to uri=&quot;crypto:sign://alias?keystore=#keystore&quot; /&gt;
+    &lt;to uri=&quot;crypto:sign:alias?keystore=#keystore&quot; /&gt;
 &lt;/route&gt;       
 &lt;route&gt;
     &lt;from uri=&quot;direct:alias-verify&quot;/&gt;
-    &lt;to uri=&quot;crypto:verify://alias?keystore=#keystore&quot; /&gt;
+    &lt;to uri=&quot;crypto:verify:alias?keystore=#keystore&quot; /&gt;
     &lt;to uri=&quot;mock:result&quot;/&gt;
 &lt;/route&gt;    
 ]]></script>
@@ -17288,11 +17288,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.rbtoc1452017867656 {padding: 0px;}
-div.rbtoc1452017867656 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1452017867656 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1452356400176 {padding: 0px;}
+div.rbtoc1452356400176 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1452356400176 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1452017867656">
+/*]]>*/</style></p><div class="toc-macro rbtoc1452356400176">
 <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>
@@ -19393,7 +19393,7 @@ protected RouteBuilder createRouteBuilde
     return new RouteBuilder() {
         public void configure() throws Exception {
             // we use a delay of 60 minutes (eg. once pr. hour we poll the FTP server
-            long delay = 60 * 60 * 1000L;
+            long delay = 3600000;
 
             // from the given FTP server we poll (= download) all the files
             // from the public/reports folder as BINARY types and store this as files
@@ -20242,7 +20242,7 @@ hibernate:[entityClassName][?options]
 <ul class="alternate"><li><a shape="rect" href="hibernate-example.html">Hibernate Example</a></li></ul> <h2 id="BookInOnePage-HipchatComponent">Hipchat Component</h2><p><strong>Available as of Camel 2.15.0</strong></p><p>The Hipchat component supports producing and consuming messages from/to <a shape="rect" class="external-link" href="https://www.hipchat.com" rel="nofollow">Hipchat</a>&#160;service.</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Prerequisites</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>You must have a valid Hipchat user account and get a <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">personal access token</a> that you can use to produce/consume messages.</p></div></div><h3 id="BookInOnePage-URIFormat.1">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[hipchat://[host][:port]?options
 ]]></script>
-</div></div><p>You can append query options to the URI in the following format, ?options=value&amp;option2=value&amp;...</p><h3 id="BookInOnePage-URIOptions.4">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td 
 colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>http</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>consumeUsers</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspa
 n="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">api.hipchat.com</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan
 ="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd">The poll interval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr></tbody></table></div><h3 id="BookInOnePage-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last message from the provided 'consumeUsers' a
 re retrieved and sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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, ?options=value&amp;option2=value&amp;...</p><h3 id="BookInOnePage-URIOptions.4">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td c
 olspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server such as http or https</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to, such as api.hipchat.com</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="con
 fluenceTd">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd">The
  poll interval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumeUsers</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr></tbody></table></div><h3 id="BookInOnePage-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last message from the 
 provided 'consumeUsers' are retrieved and sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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[@Override
 public void configure() throws Exception {
  String hipchatEndpointUri = &quot;hipchat://?authToken=XXXX&amp;consumeUsers=@Joe,@John&quot;;

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

Modified: websites/production/camel/content/hipchat.html
==============================================================================
--- websites/production/camel/content/hipchat.html (original)
+++ websites/production/camel/content/hipchat.html Sat Jan  9 16:21:32 2016
@@ -88,7 +88,7 @@
 <div class="wiki-content maincontent"><h2 id="Hipchat-HipchatComponent">Hipchat Component</h2><p><strong>Available as of Camel 2.15.0</strong></p><p>The Hipchat component supports producing and consuming messages from/to <a shape="rect" class="external-link" href="https://www.hipchat.com" rel="nofollow">Hipchat</a>&#160;service.</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">Prerequisites</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>You must have a valid Hipchat user account and get a <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">personal access token</a> that you can use to produce/consume messages.</p></div></div><h3 id="Hipchat-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[hipchat://[host][:port]?options
 ]]></script>
-</div></div><p>You can append query options to the URI in the following format, ?options=value&amp;option2=value&amp;...</p><h3 id="Hipchat-URIOptions">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan=
 "1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>http</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>consumeUsers</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" cl
 ass="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">api.hipchat.com</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" cla
 ss="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd">The poll interval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr></tbody></table></div><h3 id="Hipchat-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last message from the provided 'consumeUsers' are retrieved a
 nd sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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, ?options=value&amp;option2=value&amp;...</p><h3 id="Hipchat-URIOptions">URI Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Name</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Default Value</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Context</strong></p></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Required</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><strong>Producer/Consumer</strong></th><th colspan="1" rowspan="1" class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>protocol</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="
 1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default protocol to connect to the Hipchat server such as http or https</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">host</td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">The API host of the Hipchat to connect to, such as api.hipchat.com</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">port</td><td colspan="1" rowspan="1" class="confluenceTd">80</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceT
 d">The port to connect to on the Hipchat host</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span>authToken</span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">Yes</td><td colspan="1" rowspan="1" class="confluenceTd">Both</td><td colspan="1" rowspan="1" class="confluenceTd">Authorization token(personal access token) obtained from <a shape="rect" class="external-link" href="https://www.hipchat.com/account/api" rel="nofollow">Hipchat</a><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">5000</td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd">The poll in
 terval in millisec for consuming messages from consumeUsers provided. Please read about <a shape="rect" class="external-link" href="https://www.hipchat.com/docs/apiv2/rate_limiting" rel="nofollow">rate limits</a> before decreasing this.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumeUsers</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd">No</td><td colspan="1" rowspan="1" class="confluenceTd">Consumer</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of user @Mentions or emails whose messages to the owner of authToken must be consumed</p></td></tr></tbody></table></div><h3 id="Hipchat-ScheduledPollConsumer">Scheduled Poll Consumer</h3><p>This component implements the <a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>. Only the last message from the provided 'cons
 umeUsers' are retrieved and sent as Exchange body. If you do not want the same message to be retrieved again when there are no new messages on next poll then you can add the <a shape="rect" href="idempotent-consumer.html">idempotent consumer</a> as shown below. All the options on the&#160;<a shape="rect" href="polling-consumer.html">ScheduledPollConsumer</a>&#160;can also be used for more control on the consumer.</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[@Override
 public void configure() throws Exception {
  String hipchatEndpointUri = &quot;hipchat://?authToken=XXXX&amp;consumeUsers=@Joe,@John&quot;;