camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r964059 - in /websites/production/camel/content: cache/main.pageCache groovy-dsl.html
Date Wed, 02 Sep 2015 15:18:55 GMT
Author: buildbot
Date: Wed Sep  2 15:18:55 2015
New Revision: 964059

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/groovy-dsl.html

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

Modified: websites/production/camel/content/groovy-dsl.html
==============================================================================
--- websites/production/camel/content/groovy-dsl.html (original)
+++ websites/production/camel/content/groovy-dsl.html Wed Sep  2 15:18:55 2015
@@ -85,16 +85,16 @@
 	<tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h3 id="GroovyDSL-AbouttheGroovyDSL">About
the Groovy DSL</h3><p>The Groovy DSL implementation is built on top of the existing
Java-based <a shape="rect" href="dsl.html">DSL</a>, but it additionally allows
to use Groovy language features in your routes, particularly <a shape="rect" class="external-link"
href="http://groovy.codehaus.org/Closures" rel="nofollow">Closures</a> acting as
<a shape="rect" href="processor.html">Processor</a>, <a shape="rect" href="expression.html">Expression</a>,
<a shape="rect" href="predicate.html">Predicate</a>, or <a shape="rect" href="aggregator.html">Aggregation
Strategy</a>.<br clear="none"> With the Groovy DSL you write your RouteBuilder
classes entirely in Groovy, while the <a shape="rect" href="scripting-languages.html">scripting
component</a> allows to embed small scripts into Java routes. The Groovy DSL requires
Groovy 2.0 or newer and is available as of <strong>Camel 2.11</strong>.</p><h3
id="GroovyDSL-Intr
 oduction">Introduction</h3><p>Because Groovy is syntactically very similar
to Java, you can write your Groovy routes just like Java routes. The same Java DSL classes
are being used, with the exception that some of the DSL classes get extended with a bunch
of new methods at runtime. This is achieved by turning camel-groovy into a Groovy <a shape="rect"
class="external-link" href="http://docs.codehaus.org/display/GROOVY/Creating+an+extension+module"
rel="nofollow">Extension Module</a> that defines extension methods on existing classes.</p><p>The
majority of the extension methods allow <a shape="rect" class="external-link" href="http://groovy.codehaus.org/Closures"
rel="nofollow">Closures</a> to be used as parameters e.g. for expressions, predicates,
processors. The following example reverses a string in the message body and then prints the
value to System.out:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 
 1px;"><b>MyRouteBuilder.groovy</b></div><div class="codeContent panelContent
pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from('direct:test')
+<div class="wiki-content maincontent"><h3 id="GroovyDSL-AbouttheGroovyDSL">About
the Groovy DSL</h3><p>The Groovy DSL implementation is built on top of the existing
Java-based <a shape="rect" href="dsl.html">DSL</a>, but it additionally allows
to use Groovy language features in your routes, particularly <a shape="rect" class="external-link"
href="http://www.groovy-lang.org/closures.html" rel="nofollow">Closures</a> acting
as <a shape="rect" href="processor.html">Processor</a>, <a shape="rect" href="expression.html">Expression</a>,
<a shape="rect" href="predicate.html">Predicate</a>, or <a shape="rect" href="aggregator.html">Aggregation
Strategy</a>.<br clear="none"> With the Groovy DSL you write your RouteBuilder
classes entirely in Groovy, while the <a shape="rect" href="scripting-languages.html">scripting
component</a> allows to embed small scripts into Java routes. The Groovy DSL requires
Groovy 2.0 or newer and is available as of <strong>Camel 2.11</strong>.</p><h3
id="GroovyDSL
 -Introduction">Introduction</h3><p>Because Groovy is syntactically very similar
to Java, you can write your Groovy routes just like Java routes. The same Java DSL classes
are being used, with the exception that some of the DSL classes get extended with a bunch
of new methods at runtime. This is achieved by turning camel-groovy into a Groovy <a shape="rect"
class="external-link" href="http://docs.codehaus.org/display/GROOVY/Creating+an+extension+module"
rel="nofollow">Extension Module</a> that defines extension methods on existing classes.</p><p>The
majority of the extension methods allow <a shape="rect" class="external-link" href="http://www.groovy-lang.org/closures.html"
rel="nofollow">Closures</a> to be used as parameters e.g. for expressions, predicates,
processors. The following example reverses a string in the message body and then prints the
value to System.out:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bott
 om-width: 1px;"><b>MyRouteBuilder.groovy</b></div><div class="codeContent
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&#39;direct:test&#39;)
       .transform { it.in.body.reverse() }
       .process { println it.in.body }
 ...
-</pre>
+]]></script>
 </div></div><p>The corresponding route in Java would look something like
this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>MyRouteBuilder.java</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from("direct:test")
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&quot;direct:test&quot;)
       .transform(new Expression() {
          @Override
          public Object evaluate(Exchange e) {
@@ -108,16 +108,16 @@
          }
       });
 ...
-</pre>
+]]></script>
 </div></div><h3 id="GroovyDSL-DevelopingwiththeGroovyDSL">Developing with
the Groovy DSL</h3><p>To be able to use the Groovy DSL in your camel routes you
need to add the a dependency on <strong>camel-groovy</strong> which implements
the Groovy DSL.</p><p>If you use Maven you can just add the following to your
pom.xml, substituting the version number for the latest &amp; greatest release (see the
download page for the latest versions).</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;dependency&gt;
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-groovy&lt;/artifactId&gt;
   &lt;version&gt;2.11.0&lt;/version&gt;
 &lt;/dependency&gt;
-</pre>
+]]></script>
 </div></div><p>Additionally you need to make sure that the Groovy classes
will be compiled. You can either use gmaven for this or, particularly with mixed projects
containing Java and Groovy code, you might want to use the <a shape="rect" class="external-link"
href="http://groovy.codehaus.org/Groovy-Eclipse+compiler+plugin+for+Maven" rel="nofollow">Groovy
Eclipse compiler</a>:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;plugin&gt;
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;plugin&gt;
     &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
     &lt;configuration&gt;
       &lt;compilerId&gt;groovy-eclipse-compiler&lt;/compilerId&gt;
@@ -130,9 +130,9 @@
       &lt;/dependency&gt;
     &lt;/dependencies&gt;
   &lt;/plugin&gt;
-</pre>
+]]></script>
 </div></div><p>As Eclipse user, you might want to configure the Maven Eclipse
plugin in a way so that your project is set up correctly for using <a shape="rect" class="external-link"
href="http://groovy.codehaus.org/Eclipse+Plugin" rel="nofollow">Eclipse Plugin for Groovy</a>
when <code>mvn eclipse:eclipse</code> is executed:</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">  &lt;plugin&gt;
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[
 &lt;plugin&gt;
     &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
     &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
     &lt;configuration&gt;
@@ -145,85 +145,85 @@
       &lt;/classpathContainers&gt;              
     &lt;/configuration&gt;
   &lt;/plugin&gt;	  
-</pre>
+]]></script>
 </div></div><h4 id="GroovyDSL-UsingClosuresinyourroutes">Using Closures
in your routes</h4><p>Groovy closures can be used to write concise implementations
of Camel processors, expressions, predicates, and aggregation strategies. It is recommended
to keep more complicated implementations of these objects in their own classes, e.g. to be
able to test them more easily and not to clutter up your routes with business logic.</p><h5
id="GroovyDSL-ProcessorClosures">Processor Closures</h5><p>All Java DSL parameters
of type <code>org.apache.camel.Processor</code> can be replaced by a closure that
accepts an object of type <code>org.apache.camel.Exchange</code> as only parameter.
The return value of the closure is disregarded. All closures may also refer to variables not
listed in their parameter list. Example:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
    private String someValue
 ...
-   from('direct:test')
+   from(&#39;direct:test&#39;)
       .process { Exchange exchange -&gt; println (exchange.in.body + someValue) }
       .process { println (it.in.body + someValue) } // equivalent
 ...
-</pre>
+]]></script>
 </div></div><h5 id="GroovyDSL-ExpressionClosures">Expression Closures</h5><p>All
Java DSL parameters of type <code>org.apache.camel.Expression</code> can be replaced
by a closure that accepts an object of type <code>org.apache.camel.Exchange</code>
as only parameter. The return value of the closure is the result of the expression. Example:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent
pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
    private String someValue
 ...
-   from('direct:test')
+   from(&#39;direct:test&#39;)
       .transform { it.in.body.reverse() + someValue }
-      .setHeader("myHeader") { someValue.reverse() }
+      .setHeader(&quot;myHeader&quot;) { someValue.reverse() }
 ...
-</pre>
+]]></script>
 </div></div><h5 id="GroovyDSL-PredicateClosures">Predicate Closures</h5><p>All
Java DSL parameters of type <code>org.apache.camel.Predicate</code> can be replaced
by a closure that accepts an object of type <code>org.apache.camel.Exchange</code>
as only parameter. The return value of the closure is translated into a boolean value representing
the result of the predicate. Example:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
    private String someValue
 
    // This time, the closure is stored in a variable
    def pred = { Exchange e -&gt; e.in.body != someValue }
 ...
-   from('direct:test')
+   from(&#39;direct:test&#39;)
       .filter(pred)
 ...
-</pre>
+]]></script>
 </div></div><h5 id="GroovyDSL-AggregationStrategyClosures">Aggregation
Strategy Closures</h5><p>Java DSL parameters of type <code>org.apache.camel.processor.aggregate.AggregationStrategy</code>
can be replaced by a closure that accepts two objects of type <code>org.apache.camel.Exchange</code>
representing the two Exchanges to be aggregated. The return value of the closure must be the
aggregated Exchange. Example:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
    private String separator
 ...
-   from('direct:test1')
-      .enrich('direct:enrich') { Exchange original, Exchange resource -&gt; 
+   from(&#39;direct:test1&#39;)
+      .enrich(&#39;direct:enrich&#39;) { Exchange original, Exchange resource -&gt;

          original.in.body += resource.in.body + separator
-         original  // don't forget to return resulting exchange
+         original  // don&#39;t forget to return resulting exchange
       }
 ...
-</pre>
+]]></script>
 </div></div><h5 id="GroovyDSL-Genericclosurebridges">Generic closure bridges</h5><p>In
addition to the above-mentioned DSL extensions, you can use closures even if no DSL method
signature with closure parameters is available. Assuming there's no <code>filter(Closure)</code>
method, you could instead write:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
    private String someValue
 
    // This time, the closure is stored in a variable
    def pred = { Exchange e -&gt; e.in.body != someValue }
 ...
-   from('direct:test')
+   from(&#39;direct:test&#39;)
       // predicate(Closure) -&gt; org.apache.camel.Predicate
       .filter(predicate(pred))
 ...
-</pre>
-</div></div><p>Similarly, <code>expression(Closure)</code>
returns a Camel expression, <code>processor(Closure)</code> returns a Processor,
and <code>aggregator(Closure)</code> returns an AggregationStrategy.</p><h4
id="GroovyDSL-UsingGroovyXMLprocessing">Using Groovy XML processing</h4><p>Groovy
provides special <a shape="rect" class="external-link" href="http://groovy.codehaus.org/Processing+XML"
rel="nofollow">XML processing support</a> through its <code>XmlParser</code>,
<code>XmlNodePrinter</code> and <code>XmlSlurper</code> classes. camel-groovy
provides two <a shape="rect" href="data-format.html">data formats</a> to use these
classes directly in your routes.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Unmarshal
XML with XmlParser</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from('direct:test1')
+]]></script>
+</div></div><p>Similarly, <code>expression(Closure)</code>
returns a Camel expression, <code>processor(Closure)</code> returns a Processor,
and <code>aggregator(Closure)</code> returns an AggregationStrategy.</p><h4
id="GroovyDSL-UsingGroovyXMLprocessing">Using Groovy XML processing</h4><p>Groovy
provides special <a shape="rect" class="external-link" href="http://groovy-lang.org/processing-xml.html"
rel="nofollow">XML processing support</a> through its <code>XmlParser</code>,
<code>XmlNodePrinter</code> and <code>XmlSlurper</code> classes. camel-groovy
provides two <a shape="rect" href="data-format.html">data formats</a> to use these
classes directly in your routes.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Unmarshal
XML with XmlParser</b></div><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&#39;direct:test1&#39;)
       .unmarshal().gnode() 
       // message body is now of type groovy.util.Node
 ...
-</pre>
+]]></script>
 </div></div><p>By default, XML processing is <em>namespace-aware</em>.
You can change this by providing a boolean <code>false</code> parameter.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader
pdl" style="border-bottom-width: 1px;"><b>Unmarshal XML with XmlSlurper</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from('direct:test1')
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&#39;direct:test1&#39;)
       .unmarshal().gpath(false) // explicitly namespace-unaware
       // message body is now of type groovy.util.slurpersupport.GPathResult
 ...
-</pre>
+]]></script>
 </div></div><p>Currently, marshalling is only supported for <code>groovy.util.Node</code>
objects.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Marshal XML with XmlNodePrinter</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from('direct:test1')
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&#39;direct:test1&#39;)
       // message body must be of type groovy.util.Node
       .marshal().gnode()
 ...
-</pre>
-</div></div><h4 id="GroovyDSL-UsingGroovyGStrings">Using Groovy GStrings</h4><p>Groovy
<a shape="rect" class="external-link" href="http://groovy.codehaus.org/Strings+and+GString"
rel="nofollow">GStrings</a> are declared inside double-quotes and can contain arbitrary
Groovy expressions like accessing properties or calling methods, e.g.</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">def
x = "It is currently ${ new Date() }"
-</pre>
-</div></div><p>Because GStrings aren't Strings, camel-groovy adds the necessary
<a shape="rect" href="type-converter.html">TypeConverter</a> to automatically
turn them into the required type.</p><h4 id="GroovyDSL-CustomDSLextensions">Custom
DSL extensions</h4><p>You can easily define your custom extensions - be it as
a Java DSL extension for your Groovy routes or for any other class unrelated to Camel. All
you have to do is to write your extension methods and provide a extension module descriptor
- the details are described in the <a shape="rect" class="external-link" href="http://docs.codehaus.org/display/GROOVY/Creating+an+extension+module"
rel="nofollow">Groovy documentation</a>. And as long as you don't require other extension
methods, you can even use plain Java code to achieve this!<br clear="none"> As an example,
let's write two DSL extensions to make commonly used DSL methods more concise:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panel
 Header pdl" style="border-bottom-width: 1px;"><b>MyExtension.java</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">import
org.apache.camel.Endpoint;
+]]></script>
+</div></div><h4 id="GroovyDSL-UsingGroovyGStrings">Using Groovy GStrings</h4><p>Groovy
<a shape="rect" class="external-link" href="http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings"
rel="nofollow">GStrings</a> are declared inside double-quotes and can contain arbitrary
Groovy expressions like accessing properties or calling methods, e.g.</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[def
x = &quot;It is currently ${ new Date() }&quot;
+]]></script>
+</div></div><p>Because GStrings aren't Strings, camel-groovy adds the necessary
<a shape="rect" href="type-converter.html">TypeConverter</a> to automatically
turn them into the required type.</p><h4 id="GroovyDSL-CustomDSLextensions">Custom
DSL extensions</h4><p>You can easily define your custom extensions - be it as
a Java DSL extension for your Groovy routes or for any other class unrelated to Camel. All
you have to do is to write your extension methods and provide a extension module descriptor
- the details are described in the <a shape="rect" class="external-link" href="http://www.groovy-lang.org/metaprogramming.html#_extension_modules"
rel="nofollow">Groovy documentation</a>. And as long as you don't require other extension
methods, you can even use plain Java code to achieve this!<br clear="none"> As an example,
let's write two DSL extensions to make commonly used DSL methods more concise:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHe
 ader pdl" style="border-bottom-width: 1px;"><b>MyExtension.java</b></div><div
class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[import
org.apache.camel.Endpoint;
 import org.apache.camel.Predicate;
 
 public final class MyExtension {
@@ -247,37 +247,37 @@ public final class MyExtension {
     }
 
 }
-</pre>
+]]></script>
 </div></div><p>Add a corresponding extension module descriptor to <code>META-INF/services</code>:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader
pdl" style="border-bottom-width: 1px;"><b>META-INF/services/org.codehaus.groovy.runtime.ExtensionModule</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">moduleName=my-extension
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[moduleName=my-extension
 moduleVersion=2.11
 extensionClasses=MyExtension
 staticExtensionClasses=
-</pre>
+]]></script>
 </div></div><p>And now your Groovy route can look like this:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader
pdl" style="border-bottom-width: 1px;"><b>MyRoute.groovy</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   fromId('direct:test1')
-      .fork('direct:null','direct:not-null',body().isNull())
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   fromId(&#39;direct:test1&#39;)
+      .fork(&#39;direct:null&#39;,&#39;direct:not-null&#39;,body().isNull())
 ...
-</pre>
+]]></script>
 </div></div><p>Using the plain Java DSL, the route would look something
like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>MyRoute.java</b></div><div
class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">...
-   from("direct:test1")
-      .routeId("direct:test1")
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[...
+   from(&quot;direct:test1&quot;)
+      .routeId(&quot;direct:test1&quot;)
       .choice()
          .when(body().isNull())
-            .to("direct:null")
+            .to(&quot;direct:null&quot;)
          .otherwise()
-            .to("direct:not-null");
+            .to(&quot;direct:not-null&quot;);
 ...
-</pre>
+]]></script>
 </div></div></div>
         </td>
         <td valign="top">
           <div class="navigation">
             <div class="navigation_top">
                 <!-- NavigationBar -->
-<div class="navigation_bottom" id="navigation_bottom"><h3 id="Navigation-Overviewhttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=49132"><a
shape="rect" href="overview.html">Overview</a></h3><ul class="alternate"><li><a
shape="rect" href="index.html">Home</a></li><li><a shape="rect" href="download.html">Download</a></li><li><a
shape="rect" href="getting-started.html">Getting Started</a></li><li><a
shape="rect" href="faq.html">FAQ</a></li></ul><h3 id="Navigation-Documentationhttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=49534"><a
shape="rect" href="documentation.html">Documentation</a></h3><ul class="alternate"><li><a
shape="rect" href="user-guide.html">User Guide</a></li><li><a shape="rect"
href="manual.html">Manual</a></li><li><a shape="rect" href="books.html">Books</a></li><li><a
shape="rect" href="tutorials.html">Tutorials</a></li><li><a shape="rect"
href="examples.html">Examples</a></li><li><a shape="rect" href="cookbook.html">Cookbook</a></li>
 <li><a shape="rect" href="architecture.html">Architecture</a></li><li><a
shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a></li><li><a
shape="rect" href="dsl.html">DSL</a></li><li><a shape="rect" href="components.html">Components</a></li><li><a
shape="rect" href="data-format.html">Data Format</a></li><li><a shape="rect"
href="languages.html">Languages</a></li><li><a shape="rect" href="security.html">Security</a></li><li><a
shape="rect" href="security-advisories.html">Security Advisories</a></li></ul><h3
id="Navigation-Search">Search</h3><form enctype="application/x-www-form-urlencoded"
method="get" id="cse-search-box" action="http://www.google.com/cse">
+<div class="navigation_bottom" id="navigation_bottom"><h3 id="Navigation-Overview"><a
shape="rect" href="overview.html">Overview</a></h3><ul class="alternate"><li><a
shape="rect" href="index.html">Home</a></li><li><a shape="rect" href="download.html">Download</a></li><li><a
shape="rect" href="getting-started.html">Getting Started</a></li><li><a
shape="rect" href="faq.html">FAQ</a></li></ul><h3 id="Navigation-Documentation"><a
shape="rect" href="documentation.html">Documentation</a></h3><ul class="alternate"><li><a
shape="rect" href="user-guide.html">User Guide</a></li><li><a shape="rect"
href="manual.html">Manual</a></li><li><a shape="rect" href="books.html">Books</a></li><li><a
shape="rect" href="tutorials.html">Tutorials</a></li><li><a shape="rect"
href="examples.html">Examples</a></li><li><a shape="rect" href="cookbook.html">Cookbook</a></li><li><a
shape="rect" href="architecture.html">Architecture</a></li><li><a
shape="rect" href="enterprise-integration-patterns.html">Enterprise
  Integration Patterns</a></li><li><a shape="rect" href="dsl.html">DSL</a></li><li><a
shape="rect" href="components.html">Components</a></li><li><a shape="rect"
href="data-format.html">Data Format</a></li><li><a shape="rect" href="languages.html">Languages</a></li><li><a
shape="rect" href="security.html">Security</a></li><li><a shape="rect"
href="security-advisories.html">Security Advisories</a></li></ul><h3
id="Navigation-Search">Search</h3><form enctype="application/x-www-form-urlencoded"
method="get" id="cse-search-box" action="http://www.google.com/cse">
   <div>
     <input type="hidden" name="cx" value="007878419884033443453:m5nhvy4hmyq">
     <input type="hidden" name="ie" value="UTF-8">
@@ -285,7 +285,7 @@ staticExtensionClasses=
     <input type="submit" name="sa" value="Search">
   </div>
 </form>
-<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script><h3
id="Navigation-Communityhttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=49115"><a
shape="rect" href="community.html">Community</a></h3><ul class="alternate"><li><a
shape="rect" href="support.html">Support</a></li><li><a shape="rect"
href="contributing.html">Contributing</a></li><li><a shape="rect"
href="discussion-forums.html">Discussion Forums</a></li><li><a shape="rect"
href="mailing-lists.html">Mailing Lists</a></li><li><a shape="rect"
href="user-stories.html">User Stories</a></li><li><a shape="rect"
href="news.html">News</a></li><li><a shape="rect" href="articles.html">Articles</a></li><li><a
shape="rect" href="site.html">Site</a></li><li><a shape="rect" href="team.html">Team</a></li><li><a
shape="rect" class="external-link" href="http://camel-extra.googlecode.com/" rel="nofollow">Camel
Extra</a></li></ul><h3 id="Navigation-Developershttps://cwi
 ki.apache.org/confluence/pages/viewpage.action?pageId=49124"><a shape="rect" href="developers.html">Developers</a></h3><ul
class="alternate"><li><a shape="rect" href="developers.html">Developer Guide</a></li><li><a
shape="rect" href="source.html">Source</a></li><li><a shape="rect"
href="building.html">Building</a></li><li><a shape="rect" href="javadoc.html">JavaDoc</a></li><li><a
shape="rect" href="irc-room.html">IRC Room</a></li></ul><h3 id="Navigation-ApacheSoftwareFoundation">Apache
Software Foundation</h3><ul class="alternate"><li><a shape="rect" class="external-link"
href="http://www.apache.org/licenses/">License</a></li><li><a shape="rect"
class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul></div>
+<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en"></script><h3
id="Navigation-Community"><a shape="rect" href="community.html">Community</a></h3><ul
class="alternate"><li><a shape="rect" href="support.html">Support</a></li><li><a
shape="rect" href="contributing.html">Contributing</a></li><li><a
shape="rect" href="discussion-forums.html">Discussion Forums</a></li><li><a
shape="rect" href="mailing-lists.html">Mailing Lists</a></li><li><a
shape="rect" href="user-stories.html">User Stories</a></li><li><a
shape="rect" href="news.html">News</a></li><li><a shape="rect" href="articles.html">Articles</a></li><li><a
shape="rect" href="site.html">Site</a></li><li><a shape="rect" href="team.html">Team</a></li><li><a
shape="rect" class="external-link" href="http://camel-extra.googlecode.com/" rel="nofollow">Camel
Extra</a></li></ul><h3 id="Navigation-Developers"><a shape="rect"
href="developers.html">Developers</a></h3><ul class="alternate"
 ><li><a shape="rect" href="developers.html">Developer Guide</a></li><li><a
shape="rect" href="source.html">Source</a></li><li><a shape="rect"
href="building.html">Building</a></li><li><a shape="rect" href="javadoc.html">JavaDoc</a></li><li><a
shape="rect" href="irc-room.html">IRC Room</a></li></ul><h3 id="Navigation-ApacheSoftwareFoundation">Apache
Software Foundation</h3><ul class="alternate"><li><a shape="rect" class="external-link"
href="http://www.apache.org/licenses/">License</a></li><li><a shape="rect"
class="external-link" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/foundation/thanks.html">Thanks</a></li><li><a
shape="rect" class="external-link" href="http://www.apache.org/security/">Security</a></li></ul></div>
                 <!-- NavigationBar -->
             </div>
           </div>



Mime
View raw message