Author: buildbot
Date: Tue Sep 23 12:50:14 2014
New Revision: 923235

Log:
Production update by buildbot for camel

Added:
    websites/production/camel/content/cache/main.pageCache   (with props)
Modified:
    websites/production/camel/content/book-component-appendix.html
    websites/production/camel/content/book-dataformat-appendix.html
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/book-languages-appendix.html
    websites/production/camel/content/book-pattern-appendix.html
    websites/production/camel/content/book-tutorials.html
    websites/production/camel/content/building.html
    websites/production/camel/content/camel-30-ideas.html
    websites/production/camel/content/camel-jmx.html
    websites/production/camel/content/community.html
    websites/production/camel/content/component.html
    websites/production/camel/content/csv.html
    websites/production/camel/content/cxf.html
    websites/production/camel/content/download-archives.html
    websites/production/camel/content/elasticsearch.html
    websites/production/camel/content/file-language.html
    websites/production/camel/content/in-progress.html
    websites/production/camel/content/release-guide.html
    websites/production/camel/content/scala-dsl-eip.html
    websites/production/camel/content/siteindex.html
    websites/production/camel/content/sitemap.html
    websites/production/camel/content/spring.html
    websites/production/camel/content/transactional-client.html
    websites/production/camel/content/tutorial-axis-camel.html
    websites/production/camel/content/tutorial-jmsremoting.html
    websites/production/camel/content/user-guide.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Tue Sep 23 
12:50:14 2014
@@ -1529,11 +1529,11 @@ template.send("direct:alias-verify&
                     </div>
     </div>
 <p>The <strong>cxf:</strong> component provides integration with <a 
shape="rect" href="http://cxf.apache.org";>Apache CXF</a> for connecting to 
JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1410837558913 {padding: 0px;}
-div.rbtoc1410837558913 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1410837558913 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411476400748 {padding: 0px;}
+div.rbtoc1411476400748 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411476400748 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1410837558913">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411476400748">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF 
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI 
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#CXF-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a>

Modified: websites/production/camel/content/book-dataformat-appendix.html
==============================================================================
--- websites/production/camel/content/book-dataformat-appendix.html (original)
+++ websites/production/camel/content/book-dataformat-appendix.html Tue Sep 23 
12:50:14 2014
@@ -440,7 +440,7 @@ from(&quot;direct:start&quot;).
 </div></div><p>... you will end up with a String containing this CSV 
message</p><div class="preformatted panel" style="border-width: 1px;"><div 
class="preformattedContent panelContent">
 <pre>abc,123</pre>
 </div></div><p>Sending the Map below through this route will result in a CSV 
message that looks like <code>foo,bar</code></p><h3 
id="BookDataFormatAppendix-UnmarshallingaCSVmessageintoaJavaList">Unmarshalling 
a CSV message into a Java List</h3><p>Unmarshalling will transform a CSV 
messsage into a Java List with CSV file lines (containing another List with all 
the field values).</p><p>An example: we have a CSV file with names of persons, 
their IQ and their current activity.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: sql; gutter: false" 
type="syntaxhighlighter"><![CDATA[
+<script class="theme: Default; brush: text; gutter: false" 
type="syntaxhighlighter"><![CDATA[
 Jack Dalton, 115, mad at Averell
 Joe Dalton, 105, calming Joe
 William Dalton, 105, keeping Joe from killing Averell

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Tue Sep 23 12:50:14 
2014
@@ -4122,11 +4122,11 @@ While not actual tutorials you might fin
                     </div>
     </div>
 <h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the 
reader through the stages of creating a project which uses Camel to facilitate 
the routing of messages from a JMS queue to a <a shape="rect" 
class="external-link" href="http://www.springramework.org"; 
rel="nofollow">Spring</a> service. The route works in a synchronous fashion 
returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1411316266146 {padding: 0px;}
-div.rbtoc1411316266146 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1411316266146 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411476342391 {padding: 0px;}
+div.rbtoc1411476342391 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411476342391 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1411316266146">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411476342391">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</a></li><li><a shape="rect" 
href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a shape="rect" 
href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a 
shape="rect" 
href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a 
shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a 
shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the 
Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update the POM with 
Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing 
the Server</a>
@@ -6312,11 +6312,11 @@ So we completed the last piece in the pi
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1411316266511 {padding: 0px;}
-div.rbtoc1411316266511 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1411316266511 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411476342886 {padding: 0px;}
+div.rbtoc1411476342886 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411476342886 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1411316266511">
+/*]]>*/</style><div class="toc-macro rbtoc1411476342886">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial using 
Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a 
shape="rect" 
href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a 
shape="rect" 
href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a 
shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting 
up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-Maven2">Maven 2</a></li><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a 
shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the 
Example</a></li></ul>
@@ -9467,92 +9467,33 @@ This is done using the following syntax:
 
 <h3 id="BookInOnePage-Dependencies.15">Dependencies</h3>
 <p>The <a shape="rect" href="simple.html">Simple</a> language is part of 
<strong>camel-core</strong>.</p>
-<h2 id="BookInOnePage-FileExpressionLanguage">File Expression Language</h2>
-
-    <div class="aui-message hint shadowed information-macro">
+<h2 id="BookInOnePage-FileExpressionLanguage">File Expression Language</h2>    
<div class="aui-message hint shadowed information-macro">
                     <p class="title">File language is now merged with Simple 
language</p>
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            
-<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>
+                            <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> 
components for setting dynamic file patterns for both consumer and producer. 
</p>
-
-<h3 id="BookInOnePage-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 the <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 colspa
 n="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="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: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="c
 onfluenceTd"><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="confluenc
 eTd"><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 co
 lspan="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.SimepleDataFormat</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="BookInOnePage-Filetokenexample">File token example</h3>
-
-<h4 id="BookInOnePage-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" c
 lass="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\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="BookInOnePage-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" c
 lass="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="BookInOnePage-Samples.4">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="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;myfile.txt&quot;
+<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> 
components for setting dynamic file patterns for both consumer and 
producer.</p><h3 id="BookInOnePage-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 fi
 le 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 the <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 col
 span="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="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: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="confl
 uenceTd"><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" cla
 ss="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="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><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.SimepleDateFormate</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="BookInOnePage-Filetokenexample">File token example</h3><h4 
id="BookInOnePage-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 <co
 de>.\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\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="BookInOnePage-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</stron
 g> 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">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\came
 
l-core\target\filelanguage\test\hello.txt</p></td></tr></tbody></table></div><h3
 id="BookInOnePage-Samples.4">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="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;myfile.txt&quot;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&quot;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&quot;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&quot;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak&quot;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak&quot;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak&quot;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml&quot;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml&quot;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fileName=&quot;uniquefile-${bean:myguidgenerator.generateid}.txt&quot;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fileName=&quot;uniquefile-${bean:myguidgenerator.generateid}.txt&quot;
 ]]></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="BookInOnePage-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">
-<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-  &lt;from uri=&quot;file://input/orders&quot;/&gt;
+</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="BookInOnePage-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
 ">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[  &lt;from 
uri=&quot;file://input/orders&quot;/&gt;
      &lt;choice&gt;
        &lt;when&gt;
            &lt;simple&gt;${file:ext} == &#39;txt&#39;&lt;/simple&gt;
@@ -9567,14 +9508,8 @@ fileName=&quot;uniquefile-${bean:myguidg
        &lt;/otherwise&gt;
     &lt;/choice&gt;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-&lt;bean id=&quot;propertyPlaceholder&quot; 
class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&gt;
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;bean id=&quot;propertyPlaceholder&quot; 
class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&gt;
     &lt;property name=&quot;location&quot; 
value=&quot;classpath:bundle-context.cfg&quot; /&gt;
 &lt;/bean&gt;
 
@@ -9583,28 +9518,16 @@ use the alternative syntax (available fr
     &lt;property name=&quot;toEndpoint&quot; value=&quot;${toEndpoint}&quot; 
/&gt;
 &lt;/bean&gt;
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-fromEndpoint=activemq:queue:test
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[fromEndpoint=activemq:queue:test
 toEndpoint=file://fileRoute/out?fileName=test-$simple{date:now:yyyyMMdd}.txt
 ]]></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">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-org.springframework.beans.factory.BeanDefinitionStoreException:
+</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">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[org.springframework.beans.factory.BeanDefinitionStoreException:
 Invalid bean definition with name &#39;sampleRoute&#39; defined in class path 
resource [bundle-context.xml]:
 Could not resolve placeholder &#39;date:now:yyyyMMdd&#39;
 ]]></script>
-</div></div>
-
-
-<h3 id="BookInOnePage-Dependencies.16">Dependencies</h3>
-<p>The File language is part of <strong>camel-core</strong>.</p> 
+</div></div><h3 id="BookInOnePage-Dependencies.16">Dependencies</h3><p>The 
File language is part of <strong>camel-core</strong>.</p> 
 <h2 id="BookInOnePage-SQLLanguage">SQL Language</h2>
 
 <p>The SQL support is added by <a shape="rect" class="external-link" 
href="http://josql.sourceforge.net/"; rel="nofollow">JoSQL</a> and is primarily 
used for performing SQL queries on in-memory objects. If you prefer to perform 
actual database queries then check out the <a shape="rect" 
href="jpa.html">JPA</a> component.</p>
@@ -10707,7 +10630,7 @@ from(&quot;direct:start&quot;).
 </div></div><p>... you will end up with a String containing this CSV 
message</p><div class="preformatted panel" style="border-width: 1px;"><div 
class="preformattedContent panelContent">
 <pre>abc,123</pre>
 </div></div><p>Sending the Map below through this route will result in a CSV 
message that looks like <code>foo,bar</code></p><h3 
id="BookInOnePage-UnmarshallingaCSVmessageintoaJavaList">Unmarshalling a CSV 
message into a Java List</h3><p>Unmarshalling will transform a CSV messsage 
into a Java List with CSV file lines (containing another List with all the 
field values).</p><p>An example: we have a CSV file with names of persons, 
their IQ and their current activity.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: sql; gutter: false" 
type="syntaxhighlighter"><![CDATA[
+<script class="theme: Default; brush: text; gutter: false" 
type="syntaxhighlighter"><![CDATA[
 Jack Dalton, 115, mad at Averell
 Joe Dalton, 105, calming Joe
 William Dalton, 105, keeping Joe from killing Averell
@@ -17925,7 +17848,7 @@ from(&quot;direct:start&quot;)
                             <p>The redelivery in transacted mode is 
<strong>not</strong> handled by Camel but by the backing system (the 
transaction manager). In such cases you should resort to the backing system how 
to configure the redelivery.</p>
                     </div>
     </div>
-<p>You should use the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html";>SpringRouteBuilder</a>
 to setup the routes since you will need to setup the spring context with the 
<a shape="rect" class="external-link" 
href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html";
 rel="nofollow">TransactionTemplate</a>s that will define the transaction 
manager configuration and policies.</p><p>For inbound endpoint to be 
transacted, they normally need to be configured to use a Spring <a shape="rect" 
class="external-link" 
href="http://www.springframework.org/docs/api/org/springframework/transaction/PlatformTransactionManager.html";
 rel="nofollow">PlatformTransactionManager</a>. In the case of the JMS 
component, this can be done by looking it up in the spring context.</p><p>You 
first define needed object in the spring configuration.</p><div class=
 "code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<p>You should use the <a shape="rect" class="external-link" 
href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html";>SpringRouteBuilder</a>
 to setup the routes since you will need to setup the spring context with the 
TransactionTemplates that will define the transaction manager configuration and 
policies.</p><p>For inbound endpoint to be transacted, they normally need to be 
configured to use a Spring PlatformTransactionManager. In the case of the JMS 
component, this can be done by looking it up in the spring context.</p><p>You 
first define needed object in the spring configuration.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[  &lt;bean 
id=&quot;jmsTransactionManager&quot; 
class=&quot;org.springframework.jms.connection.JmsTransactionManager&quot;&gt;
     &lt;property name=&quot;connectionFactory&quot; 
ref=&quot;jmsConnectionFactory&quot; /&gt;
   &lt;/bean&gt;
@@ -17941,7 +17864,7 @@ from(&quot;direct:start&quot;)
   component.getConfiguration().setConcurrentConsumers(1);
   ctx.addComponent(&quot;activemq&quot;, component);
 ]]></script>
-</div></div><h4 id="BookInOnePage-TransactionPolicies">Transaction 
Policies</h4><p>Outbound endpoints will automatically enlist in the current 
transaction context. But what if you do not want your outbound endpoint to 
enlist in the same transaction as your inbound endpoint? The solution is to add 
a Transaction Policy to the processing route. You first have to define 
transaction policies that you will be using. The policies use a spring <a 
shape="rect" class="external-link" 
href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html";
 rel="nofollow">TransactionTemplate</a> under the covers for declaring the 
transaction demarcation to use. So you will need to add something like the 
following to your spring xml:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h4 id="BookInOnePage-TransactionPolicies">Transaction 
Policies</h4><p>Outbound endpoints will automatically enlist in the current 
transaction context. But what if you do not want your outbound endpoint to 
enlist in the same transaction as your inbound endpoint? The solution is to add 
a Transaction Policy to the processing route. You first have to define 
transaction policies that you will be using. The policies use a spring 
TransactionTemplate under the covers for declaring the transaction demarcation 
to use. So you will need to add something like the following to your spring 
xml:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[  &lt;bean 
id=&quot;PROPAGATION_REQUIRED&quot; 
class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
     &lt;property name=&quot;transactionManager&quot; 
ref=&quot;jmsTransactionManager&quot;/&gt;
   &lt;/bean&gt;
@@ -17980,7 +17903,7 @@ from(&quot;direct:start&quot;)
   &lt;to uri=&quot;activemq:queue:bar&quot;/&gt;
 &lt;/route&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-DatabaseSample">Database Sample</h3><p>In 
this sample we want to ensure that two endpoints is under transaction control. 
These two endpoints inserts data into a database.<br clear="none"> The sample 
is in its full as a <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMinimalConfigurationTest.java?view=log";>unit
 test</a>.</p><p>First of all we setup the usual spring stuff in its 
configuration file. Here we have defined a DataSource to the HSQLDB and a most 
importantly&#160;the Spring DataSource TransactionManager that is doing the 
heavy lifting of ensuring our transactional policies. You are of course free to 
use any&#160;of the Spring based TransactionMananger, eg. if you are in a full 
blown J2EE container you could use JTA or the WebLogic or WebSphere specific 
managers.</p><p>As we use the new convention over co
 nfiguration we do <strong>not</strong> need to configure a transaction policy 
bean, so we do not have any <code>PROPAGATION_REQUIRED</code> beans.&#160;All 
the beans needed to be configured is <strong>standard</strong> Spring beans 
only, eg. there are no Camel specific configuration at all.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><h3 id="BookInOnePage-DatabaseSample">Database Sample</h3><p>In 
this sample we want to ensure that two endpoints is under transaction control. 
These two endpoints inserts data into a database.<br clear="none"> The sample 
is in its full as a <a shape="rect" class="external-link" 
href="http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMinimalConfigurationTest.java?view=log";>unit
 test</a>.</p><p>First of all we setup the usual spring stuff in its 
configuration file. Here we have defined a DataSource to the HSQLDB and a most 
importantly&#160;the Spring DataSource TransactionManager that is doing the 
heavy lifting of ensuring our transactional policies. You are of course free to 
use any&#160;of the Spring based TransactionManager, eg. if you are in a full 
blown J2EE container you could use JTA or the WebLogic or WebSphere specific 
managers.</p><p>As we use the new convention over con
 figuration we do <strong>not</strong> need to configure a transaction policy 
bean, so we do not have any <code>PROPAGATION_REQUIRED</code> beans.&#160;All 
the beans needed to be configured is <strong>standard</strong> Spring beans 
only, eg. there are no Camel specific configuration at all.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[
 &lt;!-- this example uses JDBC so we define a data source --&gt;
 &lt;jdbc:embedded-database id=&quot;dataSource&quot; type=&quot;DERBY&quot;&gt;
@@ -18088,7 +18011,13 @@ from(&quot;direct:start&quot;)
                             <p>When a route is marked as transacted using 
<strong>transacted</strong> Camel will automatic use the <a shape="rect" 
href="transactionerrorhandler.html">TransactionErrorHandler</a> as <a 
shape="rect" href="error-handler.html">Error Handler</a>. It supports basically 
the same feature set as the <a shape="rect" 
href="defaulterrorhandler.html">DefaultErrorHandler</a>, so you can for 
instance use <a shape="rect" href="exception-clause.html">Exception Clause</a> 
as well.</p>
                     </div>
     </div>
-<h2 
id="BookInOnePage-Usingmultiplerouteswithdifferentpropagationbehaviors">Using 
multiple routes with different propagation behaviors</h2><p><strong>Available 
as of Camel 2.2</strong><br clear="none"> Suppose you want to route a message 
through two routes and by which the 2nd route should run in its own 
transaction. How do you do that? You use propagation behaviors for that where 
you configure it as follows:</p><ul class="alternate"><li>The first route use 
<code>PROPAGATION_REQUIRED</code></li><li>The second route use 
<code>PROPAGATION_REQUIRES_NEW</code></li></ul><p>This is configured in the 
Spring XML file:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<h3 id="BookInOnePage-IntegrationTestingwithSpring">Integration Testing with 
Spring</h3>    <div class="aui-message warning shadowed information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>An Integration Test here means a test runner 
class annotated <code>@RunWith(SpringJUnit4ClassRunner.class).</code></p>
+                    </div>
+    </div>
+<p><span style="line-height: 1.4285715;">When following the Spring 
Transactions documentation it is tempting to annotate your integration test 
with&#160;</span><code style="line-height: 
1.4285715;">@Transactional</code><span style="line-height: 1.4285715;"> then 
seed your database before firing up the route to be tested and sending a 
message in. This is incorrect as Spring will have an in-progress transaction, 
and Camel will wait on this before proceeding, leading to the route timing 
out.</span></p><p>Instead, remove the <code>@Transactional</code> annotation 
from the test method and seed the test data within 
a&#160;<code>TransactionTemplate</code> execution which will ensure the data is 
committed to the database before Camel attempts to pick up and use the 
transaction manager. A simple example&#160;<a shape="rect" 
class="external-link" 
href="https://github.com/rajivj2/example2/blob/master/src/test/java/com/example/NotificationRouterIT.java";
 rel="nofollow">can be found on GitHub</a>
 .</p><p>Spring's transactional model ensures each transaction is bound to one 
thread. A Camel route may invoke additional threads which is where the blockage 
may occur. This is not a fault of Camel but as the programmer you must be aware 
of the consequences of beginning a transaction in a test thread and expecting a 
separate thread created by your Camel route to be participate, which it cannot. 
You can, in your test, mock the parts that cause separate threads to avoid this 
issue.</p><h2 
id="BookInOnePage-Usingmultiplerouteswithdifferentpropagationbehaviors">Using 
multiple routes with different propagation behaviors</h2><p><strong>Available 
as of Camel 2.2</strong><br clear="none"> Suppose you want to route a message 
through two routes and by which the 2nd route should run in its own 
transaction. How do you do that? You use propagation behaviors for that where 
you configure it as follows:</p><ul class="alternate"><li>The first route use 
<code>PROPAGATION_REQUIRED</code></li><li>The s
 econd route use <code>PROPAGATION_REQUIRES_NEW</code></li></ul><p>This is 
configured in the Spring XML file:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[
 &lt;bean id=&quot;PROPAGATION_REQUIRED&quot; 
class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
     &lt;property name=&quot;transactionManager&quot; 
ref=&quot;txManager&quot;/&gt;
@@ -19840,11 +19769,11 @@ template.send(&quot;direct:alias-verify&
                     </div>
     </div>
 <p>The <strong>cxf:</strong> component provides integration with <a 
shape="rect" href="http://cxf.apache.org";>Apache CXF</a> for connecting to 
JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1411316275280 {padding: 0px;}
-div.rbtoc1411316275280 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1411316275280 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411476348827 {padding: 0px;}
+div.rbtoc1411476348827 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411476348827 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1411316275280">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411476348827">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF 
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI 
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#CXF-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a>


Reply via email to