Modified: websites/production/camel/content/file-language.html ============================================================================== --- websites/production/camel/content/file-language.html (original) +++ websites/production/camel/content/file-language.html Sat Aug 8 10:20:10 2015 @@ -85,66 +85,66 @@ <tbody> <tr> <td valign="top" width="100%"> -<div class="wiki-content maincontent"><h2 id="FileLanguage-FileExpressionLanguage">File Expression Language</h2><div class="confluence-information-macro confluence-information-macro-information"><p class="title">File language is now merged with Simple language</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>From Camel 2.2 onwards, the file language is now merged with <a shape="rect" href="simple.html">Simple</a> language which means you can use all the file syntax directly within the simple language.</p></div></div><p>The File Expression Language is an extension to the <a shape="rect" href="simple.html">Simple</a> language, adding file related capabilities. These capabilities are related to common use cases working with file path and names. The goal is to allow expressions to be used with the <a shape="rect" href="file2.html">File</a> and <a shape="rect" href="ftp.html">FTP</a> comp onents for setting dynamic file patterns for both consumer and producer.</p><h3 id="FileLanguage-Syntax">Syntax</h3><p>This language is an <strong>extension</strong> to the <a shape="rect" href="simple.html">Simple</a> language so the <a shape="rect" href="simple.html">Simple</a> syntax applies also. So the table below only lists the additional. <br clear="none"> As opposed to <a shape="rect" href="simple.html">Simple</a> language <a shape="rect" href="file-language.html">File Language</a> also supports <a shape="rect" href="constant.html">Constant</a> expressions so you can enter a fixed filename.</p><p>All the file tokens use the same expression name as the method on the <code>java.io.File</code> object, for instance <code>file:absolute</code> refers to the <code>java.io.File.getAbsolute()</code> method. Notice that not all expressions are supported by the current Exchange. For instance the <a shape="rect" href="ftp.html">FTP</a> component supports some of the options, where as th e <a shape="rect" href="file2.html">File</a> component supports all of them.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>File Consumer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>File Producer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>FTP Consumer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>FTP Producer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"> <p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name (is relative to the starting directory, see note below)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> refers to the file extension only</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p >no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>refers to the file name with no extension (is >relative to the starting directory, see note below)</p></td></tr><tr><td >colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td >colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>refers to the file name only with no leading >paths.</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" >class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" >class="conflue nceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name only with no extension and with no leading paths.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file extension only</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:parent</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan= "1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file parent</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file path</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p>< /td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to whether the file is regarded as absolute or relative</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the absolute file path</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:length</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" class="confluenceTd" ><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>refers to the file length returned as a Long >type</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd">file:size</td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p><strong>Camel 2.5:</strong> refers to the file length >returned as a Long type</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd">file:modified</td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Date</p></td><td colspan ="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>efers to the file last modified returned as a Date type</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>date:<em>command:pattern</em></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>for date formatting using the <code>java.text.SimpleDateFormat</code> patterns. Is an <strong>extension</strong> to the <a shape="rect" href="simple.html">Simple</a > language. Additional command is: <strong>file</strong> (consumers only) for > the last modified timestamp of the file. Notice: all the commands from the > <a shape="rect" href="simple.html">Simple</a> language can also be > used.</p></td></tr></tbody></table></div></div><h3 > id="FileLanguage-Filetokenexample">File token example</h3><h4 > id="FileLanguage-Relativepaths">Relative paths</h4><p>We have a > <code>java.io.File</code> handle for the file <code>hello.txt</code> in the > following <strong>relative</strong> directory: > <code>.\filelanguage\test</code>. And we configure our endpoint to use this > starting directory <code>.\filelanguage</code>. The file tokens will return > as:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th > colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p></th><th > colspan="1" rowspan="1" class="confluenceTh"><p>Returns</p></th></tr><tr><td > colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" > rowspan="1" class="conflu enceTd"><p>test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:parent</td><td colspan="1" rowspan="1" class="confluenceTd"><p>filelanguage\test</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowsp an="1" class="confluenceTd"><p>filelanguage\test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr></tbody></table></div><h4 id="FileLanguage-Absolutepaths">Absolute paths</h4><p>We have a <code>java.io.File</code> handle for the file <code>hello.txt</code> in the following <strong>absolute</strong> directory: <code>\workspace\camel\camel-core\target\filelanguage\test</code>. And we configure out endpoint to use the absolute starting directory <code>\workspace\camel\camel-core\target\filelanguage</code>. The file tokens will return as:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p>< /th><th colspan="1" rowspan="1" class="confluenceTh"><p>Returns</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">fi le:parent</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr></tbody></table></div><h3 id="FileLanguage-Samples">Samples</h3><p>You can enter a fixed <a shape="rect" href="constant.html">Constant</a> expression such as <code>myfile.txt</code>:</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;">fileName="myfile.txt" -</pre> +<div class="wiki-content maincontent"><h2 id="FileLanguage-FileExpressionLanguage">File Expression Language</h2><div class="confluence-information-macro confluence-information-macro-information"><p class="title">File language is now merged with Simple language</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>From Camel 2.2 onwards, the file language is now merged with <a shape="rect" href="simple.html">Simple</a> language which means you can use all the file syntax directly within the simple language.</p></div></div><p>The File Expression Language is an extension to the <a shape="rect" href="simple.html">Simple</a> language, adding file related capabilities. These capabilities are related to common use cases working with file path and names. The goal is to allow expressions to be used with the <a shape="rect" href="file2.html">File</a> and <a shape="rect" href="ftp.html">FTP</a> comp onents for setting dynamic file patterns for both consumer and producer.</p><h3 id="FileLanguage-Syntax">Syntax</h3><p>This language is an <strong>extension</strong> to the <a shape="rect" href="simple.html">Simple</a> language so the <a shape="rect" href="simple.html">Simple</a> syntax applies also. So the table below only lists the additional. <br clear="none"> As opposed to <a shape="rect" href="simple.html">Simple</a> language <a shape="rect" href="file-language.html">File Language</a> also supports <a shape="rect" href="constant.html">Constant</a> expressions so you can enter a fixed filename.</p><p>All the file tokens use the same expression name as the method on the <code>java.io.File</code> object, for instance <code>file:absolute</code> refers to the <code>java.io.File.getAbsolute()</code> method. Notice that not all expressions are supported by the current Exchange. For instance the <a shape="rect" href="ftp.html">FTP</a> component supports some of the options, where as th e <a shape="rect" href="file2.html">File</a> component supports all of them.</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>File Consumer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>File Producer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>FTP Consumer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>FTP Producer</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"> <p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name (is relative to the starting directory, see note below)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> refers to the file extension only</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.singleext</td><td colspan="1" rowspan="1" class="confluenceTd">String</td><td colspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluenceTd">no</td><td c olspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluenceTd">no</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14.4/2.15.3:</strong> refers to the file extension. If the file extension has mutiple dots, then this expression strips and only returns the last part.</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name with no extension (is relative to the starting directory, see note below)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.nosingleext</td><td colspan="1" rowspan="1" class="confluenceTd">String</td><td colspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluenceTd">no</td><td colspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluenceTd">no</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14.4/2.15.3:</strong><span> <span>refers to the file name with no extension (is relative to the starting directory, see note below)</span>. If the file extension has multiple dots, then this expression strips only the last part, and keep the others.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name only with no leading paths.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file name only with no extension and with no leading paths.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.nosingleext</td><td colspan="1" rowspan="1" class="confluenceTd">String</td><td colspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluenceTd">no</td><td colspan="1" rowspan="1" class="confluenceTd">yes</td><td colspan="1" rowspan="1" class="confluence Td">no</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14.4/2.15.3: </strong>refers to the file name only with no extension and with no leading paths. I<span>f the file extension has multiple dots, then this expression strips only the last part, and keep the others.</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file extension only</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:parent</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td col span="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file parent</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file path</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluen ceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to whether the file is regarded as absolute or relative</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the absolute file path</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:length</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" cla ss="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>refers to the file length returned as a Long type</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:size</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.5:</strong> refers to the file length returned as a Long type</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:modified</td><td colspan="1" rowspan="1" class="confluenceTd"><p>Date</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>yes</p ></td><td colspan="1" rowspan="1" class="confluenceTd"><p>no</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>no</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>efers to the file last modified returned as a Date >type</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>date:<em>command:pattern</em></p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>yes</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>for date formatting using the ><code>java.text.SimpleDateFormat</code> patterns. Is an ><strong>extension</strong> to the <a shape="rect" >href="simple.html">Simple</a> language. Additional command is: <strong>file </strong> (consumers only) for the last modified timestamp of the file. Notice: all the commands from the <a shape="rect" href="simple.html">Simple</a> language can also be used.</p></td></tr></tbody></table></div></div><h3 id="FileLanguage-Filetokenexample">File token example</h3><h4 id="FileLanguage-Relativepaths">Relative paths</h4><p>We have a <code>java.io.File</code> handle for the file <code>hello.txt</code> in the following <strong>relative</strong> directory: <code>.\filelanguage\test</code>. And we configure our endpoint to use this starting directory <code>.\filelanguage</code>. The file tokens will return as:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Returns</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:parent</td><td colspan="1" rowspan="1" class="confluenceTd"><p>filelanguage\test</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>filelanguage\tes t\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr></tbody></table></div><h4 id="FileLanguage-Absolutepaths">Absolute paths</h4><p>We have a <code>java.io.File</code> handle for the file <code>hello.txt</code> in the following <strong>absolute</strong> directory: <code>\workspace\camel\camel-core\target\filelanguage\test</code>. And we configure out endpoint to use the absolute starting directory <code>\workspace\camel\camel-core\target\filelanguage</code>. The file tokens will return as:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Expression</p></th><th colspan="1" rowspan="1" class="confluen ceTh"><p>Returns</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:name.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>test\hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:onlyname.noext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>hello</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:ext</td><td colspan="1" rowspan="1" class="confluenceTd"><p>txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:parent</td><td colspan="1" rowspan="1" class ="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute</td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">file:absolute.path</td><td colspan="1" rowspan="1" class="confluenceTd"><p>\workspace\camel\camel-core\target\filelanguage\test\hello.txt</p></td></tr></tbody></table></div><h3 id="FileLanguage-Samples">Samples</h3><p>You can enter a fixed <a shape="rect" href="constant.html">Constant</a> expression such as <code>myfile.txt</code>:</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[fileName="myfile.txt" +]]></script> </div></div><p>Lets assume we use the file consumer to read files and want to move the read files to backup folder with the current date as a sub folder. This can be archieved using an expression like:</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;">fileName="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak" -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fileName="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak" +]]></script> </div></div><p>relative folder names are also supported so suppose the backup folder should be a sibling folder then you can append .. as:</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;">fileName="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak" -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fileName="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak" +]]></script> </div></div><p>As this is an extension to the <a shape="rect" href="simple.html">Simple</a> language we have access to all the goodies from this language also, so in this use case we want to use the in.header.type as a parameter in the dynamic expression:</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;">fileName="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak" -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fileName="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak" +]]></script> </div></div><p>If you have a custom Date you want to use in the expression then Camel supports retrieving dates from the message header.</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;">fileName="orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml" -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fileName="orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml" +]]></script> </div></div><p>And finally we can also use a bean expression to invoke a POJO class that generates some String output (or convertible to String) to be used:</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;">fileName="uniquefile-${bean:myguidgenerator.generateid}.txt" -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fileName="uniquefile-${bean:myguidgenerator.generateid}.txt" +]]></script> </div></div><p>And of course all this can be combined in one expression where you can use the <a shape="rect" href="file-language.html">File Language</a>, <a shape="rect" href="simple.html">Simple</a> and the <a shape="rect" href="bean.html">Bean</a> language in one combined expression. This is pretty powerful for those common file path patterns.</p><h3 id="FileLanguage-UsingSpringPropertyPlaceholderConfigurertogetherwiththeFilecomponent">Using Spring PropertyPlaceholderConfigurer together with the <a shape="rect" href="file2.html">File</a> component</h3><p>In Camel you can use the <a shape="rect" href="file-language.html">File Language</a> directly from the <a shape="rect" href="simple.html">Simple</a> language which makes a <a shape="rect" href="content-based-router.html">Content Based Router</a> easier to do in Spring XML, where we can route based on file extensions as shown below:</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;"> <from uri="file://input/orders"/> +<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ <from uri="file://input/orders"/> <choice> <when> - <simple>${file:ext} == 'txt'</simple> - <to uri="bean:orderService?method=handleTextFiles"/> + <simple>${file:ext} == 'txt'</simple> + <to uri="bean:orderService?method=handleTextFiles"/> </when> <when> - <simple>${file:ext} == 'xml'</simple> - <to uri="bean:orderService?method=handleXmlFiles"/> + <simple>${file:ext} == 'xml'</simple> + <to uri="bean:orderService?method=handleXmlFiles"/> </when> <otherwise> - <to uri="bean:orderService?method=handleOtherFiles"/> + <to uri="bean:orderService?method=handleOtherFiles"/> </otherwise> </choice> -</pre> +]]></script> </div></div><p>If you use the <code>fileName</code> option on the <a shape="rect" href="file2.html">File</a> endpoint to set a dynamic filename using the <a shape="rect" href="file-language.html">File Language</a> then make sure you <br clear="none"> use the alternative syntax (available from Camel 2.5 onwards) to avoid clashing with Springs <code>PropertyPlaceholderConfigurer</code>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>bundle-context.xml</b></div><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"><bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> - <property name="location" value="classpath:bundle-context.cfg" /> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[<bean id="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> + <property name="location" value="classpath:bundle-context.cfg" /> </bean> -<bean id="sampleRoute" class="SampleRoute"> - <property name="fromEndpoint" value="${fromEndpoint}" /> - <property name="toEndpoint" value="${toEndpoint}" /> +<bean id="sampleRoute" class="SampleRoute"> + <property name="fromEndpoint" value="${fromEndpoint}" /> + <property name="toEndpoint" value="${toEndpoint}" /> </bean> -</pre> +]]></script> </div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>bundle-context.cfg</b></div><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">fromEndpoint=activemq:queue:test +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[fromEndpoint=activemq:queue:test toEndpoint=file://fileRoute/out?fileName=test-$simple{date:now:yyyyMMdd}.txt -</pre> +]]></script> </div></div><p>Notice how we use the $simple{ } syntax in the <code>toEndpoint</code> above.<br clear="none"> If you don't do this, there is a clash and Spring will throw an exception like</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;">org.springframework.beans.factory.BeanDefinitionStoreException: -Invalid bean definition with name 'sampleRoute' defined in class path resource [bundle-context.xml]: -Could not resolve placeholder 'date:now:yyyyMMdd' -</pre> +<script class="brush: java; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[org.springframework.beans.factory.BeanDefinitionStoreException: +Invalid bean definition with name 'sampleRoute' defined in class path resource [bundle-context.xml]: +Could not resolve placeholder 'date:now:yyyyMMdd' +]]></script> </div></div><h3 id="FileLanguage-Dependencies">Dependencies</h3><p>The File language is part of <strong>camel-core</strong>.</p></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"> @@ -152,7 +152,7 @@ Could not resolve placeholder 'date:now: <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&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&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>