You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2016/03/04 18:21:13 UTC

svn commit: r981815 [6/8] - in /websites/production/camel/content: book-architecture.html book-in-one-page.html cache/main.pageCache component-list.html component.html components.html mongodb-gridfs.html transport.html uris.html

Added: websites/production/camel/content/mongodb-gridfs.html
==============================================================================
--- websites/production/camel/content/mongodb-gridfs.html (added)
+++ websites/production/camel/content/mongodb-gridfs.html Fri Mar  4 17:21:12 2016
@@ -0,0 +1,218 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+<head>
+    <link href="//camel.apache.org/styles/site.css" rel="stylesheet" type="text/css">
+    <link href="//camel.apache.org/styles/type-settings.css" rel="stylesheet" type="text/css">
+    <script src="//camel.apache.org/styles/prototype.js" type="text/javascript"></script>
+    <script src="//camel.apache.org/styles/rico.js" type="text/javascript"></script>    
+    <script src="//camel.apache.org/styles/site.js" type="text/javascript"></script>
+
+    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+    <style type="text/css">
+      .maincontent { overflow:hidden; }
+    </style>
+    <!--[if IE]>
+    <style type="text/css">
+      .maincontent { width:100%; }
+    </style>
+    <![endif]-->
+
+
+  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' rel='stylesheet' type='text/css' />
+  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' rel='stylesheet' type='text/css' />
+  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script>
+  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script>
+  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script>
+  
+  <script type="text/javascript">
+  SyntaxHighlighter.defaults['toolbar'] = false;
+  SyntaxHighlighter.all();
+  </script>
+
+    <title>
+    Apache Camel: MongoDB GridFS
+    </title>
+</head>
+<body>
+<div class="white_box">
+<div class="header">
+  <div class="header_l">
+    <div class="header_r">
+    </div>
+  </div>
+</div>
+<div class="content">
+  <div class="content_l">
+    <div class="content_r">
+      <div>
+          <!-- Banner -->
+<div id="banner-content"><div id="asf_logo">
+	<div id="activemq_logo" style="height:108px; background:transparent url(banner.data/apache-camel-7.png) no-repeat scroll left top;">
+            <a shape="rect" style="float:left; width:310px;display:block;text-indent:-5000px;text-decoration:none;line-height:140px; margin-top:20px; margin-left:18px;" href="http://camel.apache.org/">Camel</a>
+            <a shape="rect" style="float:right; width:180px;display:block;text-indent:-5000px;text-decoration:none;line-height:80px; margin-top:45px; margin-right:10px;" href="http://www.apache.org">Apache</a>
+	</div>
+</div></div>
+          <!-- Banner -->
+        <div class="top_red_bar">
+          <div id="site-breadcrumbs">
+                <!-- Breadcrumbs -->
+<a href="index.html">Apache Camel</a>&nbsp;&gt;&nbsp;<a href="site.html">Site</a>&nbsp;&gt;&nbsp;<a href="includes.html">Includes</a>&nbsp;&gt;&nbsp;<a href="component-list.html">Component List</a>&nbsp;&gt;&nbsp;<a href="mongodb-gridfs.html">MongoDB GridFS</a>
+          </div>
+          <!-- Quicklinks -->
+<div id="site-quicklinks"><p><a shape="rect" href="download.html">Download</a> | <a shape="rect" href="javadoc.html">JavaDoc</a> | <a shape="rect" href="source.html">Source</a> | <a shape="rect" href="discussion-forums.html">Forums</a> | <a shape="rect" href="support.html">Support</a></p></div>
+          <!-- Quicklinks -->
+        </div>
+
+	<table border="0">
+	<tbody>
+        <tr>
+        <td valign="top" width="100%">
+<div class="wiki-content maincontent"><h2 id="MongoDBGridFS-CamelMongoDBGridFScomponent">Camel MongoDB GridFS component</h2><p><strong>Available as of Camel 2.17</strong></p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+    &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
+    &lt;artifactId&gt;camel-mongodb-gridfs&lt;/artifactId&gt;
+    &lt;version&gt;x.y.z&lt;/version&gt;
+    &lt;!-- use the same version as your Camel core version --&gt;
+&lt;/dependency&gt;
+]]></script>
+</div></div><h2 id="MongoDBGridFS-URIformat">URI format</h2><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[gridfs:connectionBean?database=databaseName&amp;bucket=bucketName[&amp;moreOptions...]
+]]></script>
+</div></div><h2 id="MongoDBGridFS-Endpointoptions">Endpoint options</h2><p>GridFS endpoints support the following options, depending on whether they are acting like a Producer or as a Consumer (options vary based on the consumer type too).</p><p>&#160;</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Producer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Consumer</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>database</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>none</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Required.</strong> The name of the database to which this endpoint will be bound. All operations will be execu
 ted against this database.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>bucket</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>fs</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the GridFS bucket within the Database. The default is the GridFS.DEFAULT_BUCKET value ("fs").</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><img class="emoticon emoticon-tick" src="https://cwiki
 .apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>operation</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>create</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The id of the operation this endpoint will execute. Pick from the following:</p><ul><li>Query operations: <code>findOne</code>, <code>listAll</code>, <code>count</code></li><li>Write operations: <code>create</code></li><li>Delete operations: <code>remove</code></li></ul></td><td colspan="1" rowspan="1" class="confluenceTd"><p><img class="emoticon emoti
 con-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">query</td><td colspan="1" rowspan="1" class="confluenceTd">none</td><td colspan="1" rowspan="1" class="confluenceTd">Combined with the query strategy parameters to create the query used to search for new files.</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">queryStrategy</td><td colspan="1" rowspan="1" class="confluenceTd">TimeStamp</td><td c
 olspan="1" rowspan="1" class="confluenceTd"><p>The strategy that is used to find new files. Can be one of:</p><ul><li>TimeStamp - files that are uploaded after the Consumer starts are processed</li><li>PersistentTimestamp - Like TimeStamp, but the last timestamp used is persisted to a collection so when the Consumer restarts, it can resume where it left off</li><li>FileAttribute - finds files that do NOT have the give attribute. After processing, it adds the attribute.</li><li>TimestampAndFileAttribute - finds files that are newer than the TimeStamp and are missing the attribute</li><li>PersistentTimestampAndFileAttribute</li></ul></td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr><tr><td colspan="1" rowspa
 n="1" class="confluenceTd">persistentTSCollection</td><td colspan="1" rowspan="1" class="confluenceTd">camel-timestamps</td><td colspan="1" rowspan="1" class="confluenceTd">When using persistent timestamps, this is the Collection that the timestamp is stored into.</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">persistenTSObject</td><td colspan="1" rowspan="1" class="confluenceTd">camel-timestamp</td><td colspan="1" rowspan="1" class="confluenceTd">When using persistent timestamps, this is the object ID for the timestamp object. Each consumer can have it's own timestamp ID stored in a common Collection</td><td colspan="1" rowspan="1" class="confluenceTd
 ">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">fileAttributeName</td><td colspan="1" rowspan="1" class="confluenceTd">camel-processed</td><td colspan="1" rowspan="1" class="confluenceTd">When using FileAttribute, this is the name of the attribute that is used. When a file is about to be processed, the attribute is set to "processing" and then set to "done" when the file processing is done.</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick
 )"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">delay</td><td colspan="1" rowspan="1" class="confluenceTd">500 (ms)</td><td colspan="1" rowspan="1" class="confluenceTd">The delay between polling GridFS for new files</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">initialDelay</td><td colspan="1" rowspan="1" class="confluenceTd">1000 (ms)</td><td colspan="1" rowspan="1" class="confluenceTd">The initial delay before the first poll</td><td colspan="1" rowspan="1" class="confluenceTd">&#160;</td><td colspan="1" rowspan="1" class="confluenceTd"><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb
 3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"></td></tr></tbody></table></div><h2 id="MongoDBGridFS-ConfigurationofdatabaseinSpringXML">Configuration of database in Spring XML</h2><p>The following Spring XML creates a bean defining the connection to a MongoDB instance.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
+    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
+    xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&quot;&gt;
+    &lt;bean id=&quot;mongoBean&quot; class=&quot;com.mongodb.Mongo&quot;&gt;
+        &lt;constructor-arg name=&quot;host&quot; value=&quot;${mongodb.host}&quot; /&gt;
+        &lt;constructor-arg name=&quot;port&quot; value=&quot;${mongodb.port}&quot; /&gt;
+    &lt;/bean&gt;
+&lt;/beans&gt;]]></script>
+</div></div><h3 id="MongoDBGridFS-Sampleroute">Sample route</h3><p>The following route defined in Spring XML executes the operation <a shape="rect" href="#MongoDBGridFS-findOne"> <strong>findOne</strong> </a> on a collection.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Get a file from GridFS</b></div><div class="codeContent panelContent pdl">
+<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[&lt;route&gt;
+  &lt;from uri=&quot;direct:start&quot; /&gt;
+  &lt;!-- using bean &#39;mongoBean&#39; defined above --&gt;
+  &lt;to uri=&quot;gridfs:mongoBean?database=${mongodb.database}&amp;amp;operation=findOne&quot; /&gt;
+  &lt;to uri=&quot;direct:result&quot; /&gt;
+&lt;/route&gt;]]></script>
+</div></div><p>&#160;</p><h2 id="MongoDBGridFS-GridFSoperations-producerendpoint">GridFS operations - producer endpoint</h2><h4 id="MongoDBGridFS-count">count</h4><p>Returns the total number of file in the collection, returning an Integer as the OUT message body.<br clear="none"><br clear="none"></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[// from(&quot;direct:count&quot;).to(&quot;gridfs?database=tickets&amp;operation=count&quot;);
+Integer result = template.requestBodyAndHeader(&quot;direct:count&quot;, &quot;irrelevantBody&quot;);
+assertTrue(&quot;Result is not of type Long&quot;, result instanceof Integer);
+]]></script>
+</div></div><p>You can provide a filename header to provide a count of files matching that filename.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[Map&lt;String, Object&gt; headers = new HashMap&lt;String, Object&gt;();
+headers.put(Exchange.FILE_NAME, &quot;filename.txt&quot;);
+Integer count = template.requestBodyAndHeaders(&quot;direct:count&quot;, query, headers);
+]]></script>
+</div></div><h4 id="MongoDBGridFS-listAll">listAll</h4><p>Returns an Reader that lists all the filenames and their IDs in a tab separated stream.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[// from(&quot;direct:listAll&quot;).to(&quot;gridfs?database=tickets&amp;operation=listAll&quot;);
+Reader result = template.requestBodyAndHeader(&quot;direct:listAll&quot;, &quot;irrelevantBody&quot;);
+
+filename1.txt	1252314321
+filename2.txt	2897651254]]></script>
+</div></div><p>&#160;</p><h4 id="MongoDBGridFS-findOne"><strong>findOne</strong></h4><p>Finds a file in the GridFS system and sets the body to an InputStream of the content. &#160; Also provides the metadata has headers. &#160;It uses Exchange.FILE_NAME from the incoming headers to determine the file to find.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[// from(&quot;direct:findOne&quot;).to(&quot;gridfs?database=tickets&amp;operation=findOne&quot;);
+Map&lt;String, Object&gt; headers = new HashMap&lt;String, Object&gt;();
+headers.put(Exchange.FILE_NAME, &quot;filename.txt&quot;);
+InputStream result = template.requestBodyAndHeaders(&quot;direct:findOne&quot;, &quot;irrelevantBody&quot;, headers);
+
+]]></script>
+</div></div><p>&#160;</p><h4 id="MongoDBGridFS-create">create</h4><p>Creates a new file in the GridFs database. It uses the Exchange.FILE_NAME from the incoming headers for the name and the body contents (as an InputStream) as the content.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[// from(&quot;direct:create&quot;).to(&quot;gridfs?database=tickets&amp;operation=create&quot;);
+Map&lt;String, Object&gt; headers = new HashMap&lt;String, Object&gt;();
+headers.put(Exchange.FILE_NAME, &quot;filename.txt&quot;);
+InputStream stream = ... the data for the file ...
+template.requestBodyAndHeaders(&quot;direct:create&quot;, stream, headers);]]></script>
+</div></div><h4 id="MongoDBGridFS-remove">remove</h4><p>Removes a file from the GridFS database.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[// from(&quot;direct:remove&quot;).to(&quot;gridfs?database=tickets&amp;operation=remove&quot;);
+Map&lt;String, Object&gt; headers = new HashMap&lt;String, Object&gt;();
+headers.put(Exchange.FILE_NAME, &quot;filename.txt&quot;);
+template.requestBodyAndHeaders(&quot;direct:remove&quot;, &quot;&quot;, headers);]]></script>
+</div></div><h3 id="MongoDBGridFS-GridFSConsumer">GridFS Consumer</h3><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>See also</p><ul><li><a shape="rect" class="external-link" href="http://www.mongodb.org/" rel="nofollow">MongoDB website</a></li><li><a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/NoSQL" rel="nofollow">NoSQL Wikipedia article</a></li><li><a shape="rect" class="external-link" href="http://api.mongodb.org/java/current/" rel="nofollow">MongoDB Java driver API docs - current version</a></li><li><a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/components/camel-mongodb/src/test/">Unit tests</a> for more examples of usage</li></ul></div>
+        </td>
+        <td valign="top">
+          <div class="navigation">
+            <div class="navigation_top">
+                <!-- NavigationBar -->
+<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">
+    <input type="text" name="q" size="21">
+    <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-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>
+        </td>
+        </tr>
+	</tbody>
+        </table>
+
+
+        <div class="bottom_red_bar"></div>
+      </div>
+    </div>
+  </div>
+</div>
+<div class="black_box">
+<div class="footer">
+  <div class="footer_l">
+    <div class="footer_r">
+      <div>
+        <a href="$base/privacy-policy.html">Privacy Policy</a> -
+        (<a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=62685622">edit page</a>)
+   	 (<a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=62685622&amp;showComments=true&amp;showCommentArea=true#addcomment">add comment</a>)
+      </div>
+    </div>
+  </div>
+</div>
+</div>
+</div>
+<div class="design_attribution">
+&copy; 2004-2015 The Apache Software Foundation.
+<br>          
+Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation.  All other marks mentioned may be trademarks or registered trademarks of their respective owners.
+<br>
+<a href="http://hiramchirino.com">Graphic Design By Hiram</a>
+</div>
+
+<!-- Camel committers that would like access to the Analytics, send a note to private@camel.apache.org -->
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-25976253-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
+
+</body>
+</html>
+
+