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;;


Reply via email to