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 2013/08/22 16:19:39 UTC

svn commit: r875703 [2/2] - in /websites/production/camel/content: book-component-appendix.html book-in-one-page.html cache/main.pageCache crypto-digital-signatures.html netty-http.html

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Thu Aug 22 14:19:39 2013
@@ -4901,7 +4901,25 @@ public static void main(final String[] a
 <p>The <b>proxy</b> will create a proxy service bean for you to use to make the remote invocations. The <b>serviceInterface</b> property details which Java interface is to be implemented by the proxy. <b>serviceUrl</b> defines where messages sent to this proxy bean will be directed. Here we define the JMS endpoint with the "numbers" queue we used when working with Camel template directly. The value of the <b>id</b> property is the name that will be the given to the bean when it is exposed through the Spring <tt>ApplicationContext</tt>. We will use this name to retrieve the service in our client. I have named the bean <em>multiplierProxy</em> simply to highlight that it is not the same multiplier bean as is being used by <tt>CamelServer</tt>. They are in completely independent contexts and have no knowledge of each other. As you are trying to mask the fact that remoting is being used in a real application you would generally not include proxy in the name.</p>
 
 <p>And the Java client source code:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public static void main(final String[] args) {
+    System.out.println("Notice this client requires that the CamelServer is already running!");
+
+    ApplicationContext context = new ClassPathXmlApplicationContext("camel-client-remoting.xml");
+    // just get the proxy to the service and we as the client can use the "proxy" as it was
+    // a local object we are invoking. Camel will under the covers do the remote communication
+    // to the remote ActiveMQ server and fetch the response.
+    Multiplier multiplier = context.getBean("multiplierProxy", Multiplier.class);
+
+    System.out.println("Invoking the multiply with 33");
+    int response = multiplier.multiply(33);
+    System.out.println("... the result is: " + response);
+
+    System.exit(0);
+}
+]]></script>
+</div></div>
 <p>Again, the client is similar to the original client, but with some important differences.</p>
 <ol><li>The Spring context is created with the new <em>camel-client-remoting.xml</em></li><li>We retrieve the proxy bean instead of a <tt>ProducerTemplate</tt>. In a non-trivial example you would have the bean injected as in the standard Spring manner.</li><li>The multiply method is then called directly. In the client we are now working to an interface. There is no mention of Camel or JMS inside our Java code.</li></ol>
 
@@ -8885,7 +8903,16 @@ This is done using the following syntax:
 
 <p>The recipientList element of the Spring DSL can utilize a property expression like: </p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;route&gt;
+  &lt;from uri="direct:a" /&gt;
+  &lt;recipientList&gt;
+    &lt;property&gt;myProperty&lt;/property&gt;
+  &lt;/recipientList&gt;
+&lt;/route&gt;
+]]></script>
+</div></div>
 
 <p>In this case, the list of recipients are contained in the property 'myProperty'. </p>
 
@@ -8980,7 +9007,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9124,7 +9172,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9278,7 +9347,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9424,7 +9514,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9578,7 +9689,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9702,7 +9834,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -9856,7 +10009,28 @@ from("direct:in").setHeader("firstName")
 
 <p>You can provide additional arguments to the <tt>ScriptingEngine</tt> using a header on the Camel message with the key <tt>CamelScriptArguments</tt>.<br clear="none">
 See this example:</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+public void testArgumentsExample() throws Exception {
+    if (!ScriptTestHelper.canRunTestOnThisPlatform()) {
+        return;
+    }
+
+    getMockEndpoint("mock:result").expectedMessageCount(0);
+    getMockEndpoint("mock:unmatched").expectedMessageCount(1);
+
+    // additional arguments to ScriptEngine
+    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
+    arguments.put("foo", "bar");
+    arguments.put("baz", 7);
+
+    // those additional arguments is provided as a header on the Camel Message
+    template.sendBodyAndHeader("direct:start", "hello", ScriptBuilder.ARGUMENTS, arguments);
+
+    assertMockEndpointsSatisfied();
+}
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Usingpropertiesfunction"></a>Using properties function</h3>
@@ -14900,7 +15074,11 @@ from("direct:hmac")
 
 <p>or with spring.</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;crypto id="hmac" algorithm="DES" keyRef="desKey" shouldAppendHMAC="true" /&gt;
+]]></script>
+</div></div>
 
 <p>By default the HMAC is calculated using the HmacSHA1 mac algorithm though this can be easily changed by supplying a different algorithm name. See <span class="error">[here]</span> for how to check what algorithms are available through the configured security providers</p>
 
@@ -14922,7 +15100,11 @@ from("direct:hmac-algorithm")
 
 <p>or with spring.</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;crypto id="hmac-algorithm" algorithm="DES" keyRef="desKey" macAlgorithm="HmacMD5" shouldAppendHMAC="true" /&gt;
+]]></script>
+</div></div>
 
 <h3><a shape="rect" name="BookInOnePage-SupplyingKeysDynamically"></a>Supplying Keys Dynamically</h3>
 
@@ -14982,15 +15164,72 @@ from("direct:key-in-header-decrypt").unm
 
 <p>The following sample uses the popular PGP format for encrypting/decrypting files using the <a shape="rect" class="external-link" href="http://www.bouncycastle.org/java.html" rel="nofollow">Bouncy Castle Java libraries</a>:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+// Public Key FileName
+String keyFileName = getKeyFileName();
+// Private Key FileName
+String keyFileNameSec = getKeyFileNameSec();
+// Keyring Userid Used to Encrypt
+String keyUserid = getKeyUserId();
+// Private key password
+String keyPassword = getKeyPassword();
+
+from("direct:inline")
+        .marshal().pgp(keyFileName, keyUserid)
+        .to("mock:encrypted")
+        .unmarshal().pgp(keyFileNameSec, keyUserid, keyPassword)
+        .to("mock:unencrypted");
+]]></script>
+</div></div>
 
 <p>The following sample performs signing + encryption, and then signature verification + decryption. It uses the same keyring for both signing and encryption, but you can obviously use different keys:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+PGPDataFormat pgpSignAndEncrypt = new PGPDataFormat();
+pgpSignAndEncrypt.setKeyFileName(keyFileName);
+pgpSignAndEncrypt.setKeyUserid(keyUserid);
+pgpSignAndEncrypt.setSignatureKeyFileName(keyFileNameSec);
+pgpSignAndEncrypt.setSignatureKeyUserid(keyUserid);
+pgpSignAndEncrypt.setSignaturePassword(keyPassword);
+
+PGPDataFormat pgpVerifyAndDecrypt = new PGPDataFormat();
+pgpVerifyAndDecrypt.setKeyFileName(keyFileNameSec);
+pgpVerifyAndDecrypt.setKeyUserid(keyUserid);
+pgpVerifyAndDecrypt.setPassword(keyPassword);
+pgpVerifyAndDecrypt.setSignatureKeyFileName(keyFileName);
+pgpVerifyAndDecrypt.setSignatureKeyUserid(keyUserid);
+
+from("direct:inline-sign")
+        .marshal(pgpSignAndEncrypt)
+        .to("mock:encrypted")
+        .unmarshal(pgpVerifyAndDecrypt)
+        .to("mock:unencrypted");
+]]></script>
+</div></div>
 
 <p>Or using Spring:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;dataFormats&gt;
+  &lt;!-- will load the file from classpath by default, but you can prefix with file: to load from file system --&gt;
+  &lt;pgp id="encrypt" keyFileName="org/apache/camel/component/crypto/pubring.gpg"
+       keyUserid="sdude@nowhere.net"/&gt;
+  &lt;pgp id="decrypt" keyFileName="org/apache/camel/component/crypto/secring.gpg"
+       keyUserid="sdude@nowhere.net" password="sdude"/&gt;
+&lt;/dataFormats&gt;
+
+&lt;route&gt;
+  &lt;from uri="direct:inline"/&gt;
+  &lt;marshal ref="encrypt"/&gt;
+  &lt;to uri="mock:encrypted"/&gt;
+  &lt;unmarshal ref="decrypt"/&gt;
+  &lt;to uri="mock:unencrypted"/&gt;
+&lt;/route&gt;
+]]></script>
+</div></div>
 
 <h4><a shape="rect" name="BookInOnePage-Toworkwiththepreviousexampleyouneedthefollowing"></a>To work with the previous example you need the following</h4>
 <ul><li>A public keyring file which contains the public keys used to encrypt the data</li><li>A private keyring file which contains the keys used to decrypt the data</li><li>The keyring password</li></ul>
@@ -15204,7 +15443,11 @@ from("direct:startInOut").inOut("bean:pr
 
 <p>You can create pipelines of logic using multiple <a shape="rect" href="endpoint.html" title="Endpoint">Endpoint</a> or <a shape="rect" href="message-translator.html" title="Message Translator">Message Translator</a> instances as follows</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+from("direct:a").pipeline("direct:x", "direct:y", "direct:z", "mock:result");
+]]></script>
+</div></div>
 
 <p>Though pipeline is the default mode of operation when you specify multiple outputs in Camel. The opposite to pipeline is multicast; which fires the same message into each of its outputs. (See the example below).</p>
 
@@ -15274,10 +15517,48 @@ from("direct:startInOut").inOut("bean:pr
 <p>The following example shows how to route a request from an input <b>queue:a</b> endpoint to either <b>queue:b</b>, <b>queue:c</b> or <b>queue:d</b> depending on the evaluation of various <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> expressions</p>
 
 <p><b>Using the <a shape="rect" href="fluent-builders.html" title="Fluent Builders">Fluent Builders</a></b></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+RouteBuilder builder = new RouteBuilder() {
+    public void configure() {
+        errorHandler(deadLetterChannel("mock:error"));
+
+        from("direct:a")
+            .choice()
+                .when(header("foo").isEqualTo("bar"))
+                    .to("direct:b")
+                .when(header("foo").isEqualTo("cheese"))
+                    .to("direct:c")
+                .otherwise()
+                    .to("direct:d");
+    }
+};
+]]></script>
+</div></div>
 
 <p><b>Using the <a shape="rect" href="spring-xml-extensions.html" title="Spring XML Extensions">Spring XML Extensions</a></b></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"&gt;
+    &lt;route&gt;
+        &lt;from uri="direct:a"/&gt;
+        &lt;choice&gt;
+            &lt;when&gt;
+                &lt;xpath&gt;$foo = 'bar'&lt;/xpath&gt;
+                &lt;to uri="direct:b"/&gt;
+            &lt;/when&gt;
+            &lt;when&gt;
+                &lt;xpath&gt;$foo = 'cheese'&lt;/xpath&gt;
+                &lt;to uri="direct:c"/&gt;
+            &lt;/when&gt;
+            &lt;otherwise&gt;
+                &lt;to uri="direct:d"/&gt;
+            &lt;/otherwise&gt;
+        &lt;/choice&gt;
+    &lt;/route&gt;
+&lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <h4><a shape="rect" name="BookInOnePage-Choicewithoutotherwise"></a>Choice without otherwise</h4>
 <p>If you use a <tt>choice</tt> without adding an <tt>otherwise</tt>, any unmatched exchanges will be dropped by default. </p>
@@ -15318,12 +15599,28 @@ from("direct:start").process(new Process
 </div></div>
 
 <p>or you can use the DSL to explicitly configure the transformation</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+from("direct:start").transform(body().append(" World!")).to("mock:result");
+]]></script>
+</div></div>
 
 <p><b>Use Spring XML</b></p>
 
 <p>You can also use <a shape="rect" href="spring-xml-extensions.html" title="Spring XML Extensions">Spring XML Extensions</a> to do a transformation. Basically any <a shape="rect" href="expression.html" title="Expression">Expression</a> language can be substituted inside the transform element as shown below</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;camelContext xmlns="http://camel.apache.org/schema/spring"&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:start"/&gt;
+    &lt;transform&gt;
+      &lt;simple&gt;${in.body} extra data!&lt;/simple&gt;
+    &lt;/transform&gt;
+    &lt;to uri="mock:end"/&gt;
+  &lt;/route&gt;
+&lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <p>Or you can use the <a shape="rect" href="bean-integration.html" title="Bean Integration">Bean Integration</a> to invoke a bean</p>
 
@@ -15650,18 +15947,75 @@ String failedRouteId = exchange.getPrope
 <p>Prior to Camel 2.10, Camel will perform redelivery while stopping a route, or shutting down Camel. This has improved a bit in Camel 2.10 onwards, as Camel will not perform redelivery attempts when shutting down aggressively (eg during <a shape="rect" href="graceful-shutdown.html" title="Graceful Shutdown">Graceful Shutdown</a> and timeout hit). From Camel 2.11 onwards there is a new option <tt>allowRedeliveryWhileStopping</tt> which you can use to control if redelivery is allowed or not; notice that any in progress redelivery will still be executed. This option can only disallow any redelivery to be executed <b>after</b> the stopping of a route/shutdown of Camel has been triggered. If a redelivery is dissallowed then a <tt>RejectedExcutionException</tt> is set on the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> and the processing of the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> stops. This means any consumer will see the <a shape="re
 ct" href="exchange.html" title="Exchange">Exchange</a> as failed due the <tt>RejectedExecutionException</tt>.</p>
 
 <p>The default value is <tt>true</tt> to be backwards compatible as before. For example the following sample shows how to do this with Java DSL and XML DSL</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+
+// this error handler will try up till 20 redelivery attempts with 1 second between.
+// however if we are stopping then do not allow any redeliver attempts.
+errorHandler(defaultErrorHandler()
+        .allowRedeliveryWhileStopping(false)
+        .maximumRedeliveries(20).redeliveryDelay(1000).retryAttemptedLogLevel(LoggingLevel.INFO));
+
+from("seda:foo").routeId("foo")
+    .to("mock:foo")
+    .throwException(new IllegalArgumentException("Forced"));
+]]></script>
+</div></div>
 
 <p>And the sample sample with XML DSL</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;!-- notice we use the errorHandlerRef attribute to refer to the error handler to use as default --&gt;
+   &lt;camelContext errorHandlerRef="myErrorHandler" xmlns="http://camel.apache.org/schema/spring"&gt;
+
+	&lt;!-- configure error handler, to redeliver up till 10 times, with 1 sec delay
+	     and if we are stopping then do not allow redeliveries, to stop faster --&gt;
+	&lt;errorHandler id="myErrorHandler" type="DefaultErrorHandler"&gt;
+		&lt;redeliveryPolicy maximumRedeliveries="20" redeliveryDelay="1000" allowRedeliveryWhileStopping="false" retryAttemptedLogLevel="INFO"/&gt;
+	&lt;/errorHandler&gt;
+
+       &lt;route id="foo"&gt;
+           &lt;from uri="seda:foo"/&gt;
+		&lt;to uri="mock:foo"/&gt;
+		&lt;throwException ref="forced"/&gt;
+       &lt;/route&gt;
+
+   &lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 
 <h3><a shape="rect" name="BookInOnePage-Samples"></a>Samples</h3>
 <p>The following example shows how to configure the Dead Letter Channel configuration using the <a shape="rect" href="dsl.html" title="DSL">DSL</a></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+RouteBuilder builder = new RouteBuilder() {
+    public void configure() {
+        // using dead letter channel with a seda queue for errors
+        errorHandler(deadLetterChannel("seda:errors"));
+
+        // here is our route
+        from("seda:a").to("seda:b");
+    }
+};
+]]></script>
+</div></div>
 
 <p>You can also configure the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/RedeliveryPolicy.html">RedeliveryPolicy</a> as this example shows</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+RouteBuilder builder = new RouteBuilder() {
+    public void configure() {
+        // configures dead letter channel to use seda queue for errors and use at most 2 redelveries
+        // and exponential backoff
+        errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(2).useExponentialBackOff());
+
+        // here is our route
+        from("seda:a").to("seda:b");
+    }
+};
+]]></script>
+</div></div>
 
 <h3><a shape="rect" name="BookInOnePage-HowcanImodifytheExchangebeforeredelivery%3F"></a>How can I modify the Exchange before redelivery?</h3>
 <p>We support directly in <a shape="rect" href="dead-letter-channel.html" title="Dead Letter Channel">Dead Letter Channel</a> to set a <a shape="rect" href="processor.html" title="Processor">Processor</a> that is executed <b>before</b> each redelivery attempt. </p>
@@ -15669,10 +16023,42 @@ String failedRouteId = exchange.getPrope
 <p>When <a shape="rect" href="dead-letter-channel.html" title="Dead Letter Channel">Dead Letter Channel</a> is doing redeliver its possible to configure a <a shape="rect" href="processor.html" title="Processor">Processor</a> that is executed just <b>before</b> every redelivery attempt. This can be used for the situations where you need to alter the message before its redelivered.  </p>
 
 <p>Here we configure the <a shape="rect" href="dead-letter-channel.html" title="Dead Letter Channel">Dead Letter Channel</a> to use our processor <tt>MyRedeliveryProcessor</tt> to be executed before each redelivery.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+// we configure our Dead Letter Channel to invoke
+// MyRedeliveryProcessor before a redelivery is
+// attempted. This allows us to alter the message before
+errorHandler(deadLetterChannel("mock:error").maximumRedeliveries(5)
+        .onRedelivery(new MyRedeliverProcessor())
+        // setting delay to zero is just to make unit testing faster
+        .redeliveryDelay(0L));
+]]></script>
+</div></div>
 
 <p>And this is the processor <tt>MyRedeliveryProcessor</tt> where we alter the message. </p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+// This is our processor that is executed before every redelivery attempt
+// here we can do what we want in the java code, such as altering the message
+public class MyRedeliverProcessor implements Processor {
+
+    public void process(Exchange exchange) throws Exception {
+        // the message is being redelivered so we can alter it
+
+        // we just append the redelivery counter to the body
+        // you can of course do all kind of stuff instead
+        String body = exchange.getIn().getBody(String.class);
+        int count = exchange.getIn().getHeader(Exchange.REDELIVERY_COUNTER, Integer.class);
+
+        exchange.getIn().setBody(body + count);
+
+        // the maximum redelivery was set to 5
+        int max = exchange.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
+        assertEquals(5, max);
+    }
+}
+]]></script>
+</div></div>
 
 <h4><a shape="rect" name="BookInOnePage-UsingThisPattern"></a>Using This Pattern</h4>
 
@@ -15826,7 +16212,56 @@ from("direct:testSetExchangePatternInOnl
 ]]></script>
 </div></div>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;camelContext xmlns="http://camel.apache.org/schema/spring"&gt;
+  &lt;!-- Send the exchange as InOnly --&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testInOut"/&gt;
+    &lt;inOut uri="mock:result"/&gt;
+  &lt;/route&gt;
+
+  &lt;!-- Send the exchange as InOnly --&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testInOnly"/&gt;
+    &lt;inOnly uri="mock:result"/&gt;
+  &lt;/route&gt;
+
+
+  &lt;!-- lets set the exchange pattern then send it on --&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testSetToInOnlyThenTo"/&gt;
+    &lt;setExchangePattern pattern="InOnly"/&gt;
+    &lt;to uri="mock:result"/&gt;      
+  &lt;/route&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testSetToInOutThenTo"/&gt;
+    &lt;setExchangePattern pattern="InOut"/&gt;
+    &lt;to uri="mock:result"/&gt;
+  &lt;/route&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testSetExchangePatternInOnly"/&gt;
+    &lt;setExchangePattern pattern="InOnly"/&gt;
+    &lt;to uri="mock:result"/&gt;
+  &lt;/route&gt;
+
+
+  &lt;!-- Lets pass the pattern as an argument in the to element --&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testToWithInOnlyParam"/&gt;
+    &lt;to uri="mock:result" pattern="InOnly"/&gt;
+  &lt;/route&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testToWithInOutParam"/&gt;
+    &lt;to uri="mock:result" pattern="InOut"/&gt;
+  &lt;/route&gt;
+  &lt;route&gt;
+    &lt;from uri="direct:testToWithRobustInOnlyParam"/&gt;
+    &lt;to uri="mock:result" pattern="RobustInOnly"/&gt;
+  &lt;/route&gt;
+ &lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <h4><a shape="rect" name="BookInOnePage-UsingThisPattern"></a>Using This Pattern</h4>
 
@@ -15911,12 +16346,50 @@ from("activemq:queue:bar?disableReplyTo=
 <p>The following example shows how to route a request from an input <b>seda:a</b> endpoint to either <b>seda:b</b>, <b>seda:c</b> or <b>seda:d</b> depending on the evaluation of various <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> expressions</p>
 
 <p><b>Using the <a shape="rect" href="fluent-builders.html" title="Fluent Builders">Fluent Builders</a></b></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+RouteBuilder builder = new RouteBuilder() {
+    public void configure() {
+        errorHandler(deadLetterChannel("mock:error"));
+
+        from("direct:a")
+            .choice()
+                .when(header("foo").isEqualTo("bar"))
+                    .to("direct:b")
+                .when(header("foo").isEqualTo("cheese"))
+                    .to("direct:c")
+                .otherwise()
+                    .to("direct:d");
+    }
+};
+]]></script>
+</div></div>
 
 <div class="panelMacro"><table class="tipMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/check.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1">See <a shape="rect" href="why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.html" title="Why can I not use when or otherwise in a Java Camel route">Why can I not use when or otherwise in a Java Camel route</a> if you have problems with the Java DSL, accepting using <tt>when</tt> or <tt>otherwise</tt>.</td></tr></table></div>
 
 <p><b>Using the <a shape="rect" href="spring-xml-extensions.html" title="Spring XML Extensions">Spring XML Extensions</a></b></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"&gt;
+    &lt;route&gt;
+        &lt;from uri="direct:a"/&gt;
+        &lt;choice&gt;
+            &lt;when&gt;
+                &lt;xpath&gt;$foo = 'bar'&lt;/xpath&gt;
+                &lt;to uri="direct:b"/&gt;
+            &lt;/when&gt;
+            &lt;when&gt;
+                &lt;xpath&gt;$foo = 'cheese'&lt;/xpath&gt;
+                &lt;to uri="direct:c"/&gt;
+            &lt;/when&gt;
+            &lt;otherwise&gt;
+                &lt;to uri="direct:d"/&gt;
+            &lt;/otherwise&gt;
+        &lt;/choice&gt;
+    &lt;/route&gt;
+&lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <p>For further examples of this pattern in use you could look at the <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceTest.java?view=markup">junit test case</a></p>
 <h4><a shape="rect" name="BookInOnePage-UsingThisPattern"></a>Using This Pattern</h4>
@@ -15931,7 +16404,19 @@ from("activemq:queue:bar?disableReplyTo=
 <p>The following example shows how to create a Message Filter route consuming messages from an endpoint called <b>queue:a</b>, which if the <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> is true will be dispatched to <b>queue:b</b></p>
 
 <p><b>Using the <a shape="rect" href="fluent-builders.html" title="Fluent Builders">Fluent Builders</a></b></p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+RouteBuilder builder = new RouteBuilder() {
+    public void configure() {
+        errorHandler(deadLetterChannel("mock:error"));
+
+        from("direct:a")
+            .filter(header("foo").isEqualTo("bar"))
+                .to("direct:b");
+    }
+};
+]]></script>
+</div></div>
 
 <p>You can, of course, use many different <a shape="rect" href="predicate.html" title="Predicate">Predicate</a> languages such as <a shape="rect" href="xpath.html" title="XPath">XPath</a>, <a shape="rect" href="xquery.html" title="XQuery">XQuery</a>, <a shape="rect" href="sql.html" title="SQL">SQL</a> or various <a shape="rect" href="scripting-languages.html" title="Scripting Languages">Scripting Languages</a>. Here is an <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/XPathFilterTest.java">XPath  example</a> </p>
 
@@ -15960,7 +16445,19 @@ public static class MyBean {
 
 <p><b>Using the <a shape="rect" href="spring-xml-extensions.html" title="Spring XML Extensions">Spring XML Extensions</a></b></p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring"&gt;
+    &lt;route&gt;
+        &lt;from uri="direct:a"/&gt;
+        &lt;filter&gt;
+            &lt;xpath&gt;$foo = 'bar'&lt;/xpath&gt;
+            &lt;to uri="direct:b"/&gt;
+        &lt;/filter&gt;
+    &lt;/route&gt;
+&lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>filtered endpoint required inside &lt;/filter&gt; tag</b><br clear="none">make sure you put the endpoint you want to filter (&lt;to uri="seda:b"/&gt;, etc.) before the closing &lt;/filter&gt; tag or the filter will not be applied (in 2.8+, omitting this will result in an error)</td></tr></table></div>
 
@@ -15972,7 +16469,17 @@ public static class MyBean {
 <p>Stop is a bit different than a message filter as it will filter out all messages and end the route entirely (filter only applies to its child processor). Stop is convenient to use in a <a shape="rect" href="content-based-router.html" title="Content Based Router">Content Based Router</a> when you for example need to stop further processing in one of the predicates.</p>
 
 <p>In the example below we do not want to route messages any further that has the word <tt>Bye</tt> in the message body. Notice how we prevent this in the when predicate by using the <tt>.stop()</tt>.</p>
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+from("direct:start")
+    .choice()
+        .when(body().contains("Hello")).to("mock:hello")
+        .when(body().contains("Bye")).to("mock:bye").stop()
+        .otherwise().to("mock:other")
+    .end()
+    .to("mock:result");
+]]></script>
+</div></div>
 
 
 <h4><a shape="rect" name="BookInOnePage-KnowingifExchangewasfilteredornot"></a>Knowing if <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> was filtered or not</h4>
@@ -16012,11 +16519,43 @@ public static class MyBean {
 
 <p>In Java DSL you can use the <tt>dynamicRouter</tt> as shown below:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+from("direct:start")
+    // use a bean as the dynamic router
+    .dynamicRouter(method(DynamicRouterTest.class, "slip"));
+]]></script>
+</div></div>
 
 <p>Which will leverage a <a shape="rect" href="bean.html" title="Bean">Bean</a> to compute the slip <em>on-the-fly</em>, which could be implemented as follows:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
+/**
+ * Use this method to compute dynamic where we should route next.
+ *
+ * @param body the message body
+ * @return endpoints to go, or &lt;tt&gt;null&lt;/tt&gt; to indicate the end
+ */
+public String slip(String body) {
+    bodies.add(body);
+    invoked++;
+
+    if (invoked == 1) {
+        return "mock:a";
+    } else if (invoked == 2) {
+        return "mock:b,mock:c";
+    } else if (invoked == 3) {
+        return "direct:foo";
+    } else if (invoked == 4) {
+        return "mock:result";
+    }
+
+    // no more so return null
+    return null;
+}
+]]></script>
+</div></div>
 
 <p>Mind that this example is only for show and tell. The current implementation is not thread safe. You would have to store the state on the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a>, to ensure thread safety, as shown below: </p>
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
@@ -16065,7 +16604,28 @@ public String slip(String body, @Propert
 <h4><a shape="rect" name="BookInOnePage-SpringXML"></a>Spring XML</h4>
 <p>The same example in Spring XML would be:</p>
 
-<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div>
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
+&lt;bean id="mySlip" class="org.apache.camel.processor.DynamicRouterTest"/&gt;
+
+&lt;camelContext xmlns="http://camel.apache.org/schema/spring"&gt;
+    &lt;route&gt;
+        &lt;from uri="direct:start"/&gt;
+        &lt;dynamicRouter&gt;
+            &lt;!-- use a method call on a bean as dynamic router --&gt;
+            &lt;method ref="mySlip" method="slip"/&gt;
+        &lt;/dynamicRouter&gt;
+    &lt;/route&gt;
+
+    &lt;route&gt;
+        &lt;from uri="direct:foo"/&gt;
+        &lt;transform&gt;&lt;constant&gt;Bye World&lt;/constant&gt;&lt;/transform&gt;
+        &lt;to uri="mock:foo"/&gt;
+    &lt;/route&gt;
+
+&lt;/camelContext&gt;
+]]></script>
+</div></div>
 
 <h4><a shape="rect" name="BookInOnePage-@DynamicRouterannotation"></a>@DynamicRouter annotation</h4>
 
@@ -22819,7 +23379,7 @@ crypto:verify:name[?options]
 
 <h3><a shape="rect" name="BookInOnePage-Options"></a>Options</h3>
 <div class="confluenceTableSmall"><div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Name </th><th colspan="1" rowspan="1" class="confluenceTh"> Type </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>algorithm</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>DSA</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Signature algorithm that will be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>alias</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> An alias name that will be used to select a key from the keystore. </td></tr><tr><td colspan="1" row
 span="1" class="confluenceTd"> <tt>bufferSize</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Integer</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>2048</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> the size of the buffer used in the signature process. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A Certificate used to verify the signature of the exchange's payload. Either this or a Public Key is required. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>keystore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>KeyStore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a JCE 
 Keystore that stores keys and certificates used to sign and verify. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>provider</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Security Provider that should be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>privateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PrivateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The private key used to sign the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>publicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PublicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1
 " class="confluenceTd"> The public key used to verify the signature of the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a <tt>SecureRandom</tt> object that will be used to initialize the Signature service. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>password</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>char[]</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The password for the keystore. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>clearHeaders</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenc
 eTd"> <tt>true</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Remove camel crypto headers from Message after a verify operation (value can be <tt>"true"</tt>/<tt>"false"</tt>). </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Name </th><th colspan="1" rowspan="1" class="confluenceTh"> Type </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>algorithm</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>SHA1WithDSA</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Signature algorithm that will be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>alias</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> An alias name that will be used to select a key from the keystore. </td></tr><tr><td colspan
 ="1" rowspan="1" class="confluenceTd"> <tt>bufferSize</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Integer</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>2048</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> the size of the buffer used in the signature process. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A Certificate used to verify the signature of the exchange's payload. Either this or a Public Key is required. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>keystore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>KeyStore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference t
 o a JCE Keystore that stores keys and certificates used to sign and verify. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>provider</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Security Provider that should be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>privateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PrivateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The private key used to sign the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>publicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PublicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" ro
 wspan="1" class="confluenceTd"> The public key used to verify the signature of the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a <tt>SecureRandom</tt> object that will be used to initialize the Signature service. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>password</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>char[]</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The password for the keystore. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>clearHeaders</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="c
 onfluenceTd"> <tt>true</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Remove camel crypto headers from Message after a verify operation (value can be <tt>"true"</tt>/<tt>"false"</tt>). </td></tr></tbody></table>
 </div>
 </div>
 

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

Modified: websites/production/camel/content/crypto-digital-signatures.html
==============================================================================
--- websites/production/camel/content/crypto-digital-signatures.html (original)
+++ websites/production/camel/content/crypto-digital-signatures.html Thu Aug 22 14:19:39 2013
@@ -131,7 +131,7 @@ crypto:verify:name[?options]
 
 <h3><a shape="rect" name="Crypto%28DigitalSignatures%29-Options"></a>Options</h3>
 <div class="confluenceTableSmall"><div class="table-wrap">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Name </th><th colspan="1" rowspan="1" class="confluenceTh"> Type </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>algorithm</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>DSA</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Signature algorithm that will be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>alias</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> An alias name that will be used to select a key from the keystore. </td></tr><tr><td colspan="1" row
 span="1" class="confluenceTd"> <tt>bufferSize</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Integer</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>2048</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> the size of the buffer used in the signature process. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A Certificate used to verify the signature of the exchange's payload. Either this or a Public Key is required. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>keystore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>KeyStore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a JCE 
 Keystore that stores keys and certificates used to sign and verify. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>provider</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Security Provider that should be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>privateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PrivateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The private key used to sign the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>publicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PublicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1
 " class="confluenceTd"> The public key used to verify the signature of the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a <tt>SecureRandom</tt> object that will be used to initialize the Signature service. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>password</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>char[]</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The password for the keystore. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>clearHeaders</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenc
 eTd"> <tt>true</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Remove camel crypto headers from Message after a verify operation (value can be <tt>"true"</tt>/<tt>"false"</tt>). </td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"> Name </th><th colspan="1" rowspan="1" class="confluenceTh"> Type </th><th colspan="1" rowspan="1" class="confluenceTh"> Default </th><th colspan="1" rowspan="1" class="confluenceTh"> Description </th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>algorithm</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>SHA1WithDSA</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Signature algorithm that will be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>alias</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> An alias name that will be used to select a key from the keystore. </td></tr><tr><td colspan
 ="1" rowspan="1" class="confluenceTd"> <tt>bufferSize</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Integer</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>2048</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> the size of the buffer used in the signature process. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>Certificate</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A Certificate used to verify the signature of the exchange's payload. Either this or a Public Key is required. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>keystore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>KeyStore</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference t
 o a JCE Keystore that stores keys and certificates used to sign and verify. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>provider</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The name of the JCE Security Provider that should be used. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>privateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PrivateKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The private key used to sign the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>publicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>PublicKey</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" ro
 wspan="1" class="confluenceTd"> The public key used to verify the signature of the exchange's payload. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>secureRandom</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> A reference to a <tt>SecureRandom</tt> object that will be used to initialize the Signature service. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>password</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>char[]</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>null</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> The password for the keystore. </td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"> <tt>clearHeaders</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> <tt>String</tt> </td><td colspan="1" rowspan="1" class="c
 onfluenceTd"> <tt>true</tt> </td><td colspan="1" rowspan="1" class="confluenceTd"> Remove camel crypto headers from Message after a verify operation (value can be <tt>"true"</tt>/<tt>"false"</tt>). </td></tr></tbody></table>
 </div>
 </div>
 

Modified: websites/production/camel/content/netty-http.html
==============================================================================
--- websites/production/camel/content/netty-http.html (original)
+++ websites/production/camel/content/netty-http.html Thu Aug 22 14:19:39 2013
@@ -92,6 +92,8 @@
 
 <p>This camel component supports both producer and consumer endpoints.</p>
 
+<div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>Upgrade to Netty 4.0 planned</b><br clear="none">This component is intended to be upgraded to use Netty 4.0 when <tt>camel-netty4</tt> component has finished being upgraded. At the time being this component is still based on Netty 3.x. The upgrade is intended to be as backwards compatible as possible.</td></tr></table></div>
+
 <div class="panelMacro"><table class="infoMacro"><colgroup span="1"><col span="1" width="24"><col span="1"></colgroup><tr><td colspan="1" rowspan="1" valign="top"><img align="middle" src="https://cwiki.apache.org/confluence/images/icons/emoticons/information.gif" width="16" height="16" alt="" border="0"></td><td colspan="1" rowspan="1"><b>Stream</b><br clear="none">Netty is stream based, which means the input it receives is submitted to Camel as a stream. That means you will only be able to read the content of the stream <b>once</b>.<br clear="none">
 If you find a situation where the message body appears to be empty or you need to access the data multiple times (eg: doing multicasting, or redelivery error handling)<br clear="none">
 you should use <a shape="rect" href="stream-caching.html" title="Stream caching">Stream caching</a> or convert the message body to a <tt>String</tt> which is safe to be re-read multiple times.</td></tr></table></div>