Modified: websites/production/camel/content/intercept.html
==============================================================================
--- websites/production/camel/content/intercept.html (original)
+++ websites/production/camel/content/intercept.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' 
rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' 
rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: Intercept
@@ -86,268 +75,30 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 
id="Intercept-Intercept">Intercept</h2><p>The intercept feature in Camel 
supports intercepting <a shape="rect" href="exchange.html">Exchange</a>s while 
they are <em>en route</em>.&#160; We have overhauled the <a shape="rect" 
href="intercept.html">Intercept</a> in Camel 2.0 so the following information 
is based on Camel 2.0.</p><p>Camel supports three kinds of interceptors:</p><ul 
class="alternate"><li><strong><code>intercept</code></strong> that intercepts 
each and every processing step while routing an <a shape="rect" 
href="exchange.html">Exchange</a> in the 
route.</li><li><strong><code>interceptFrom</code></strong> that intercepts 
incoming <a shape="rect" href="exchange.html">Exchange</a> in the 
route.</li><li><strong><code>interceptSendToEndpoint</code></strong> that 
intercepts when an <a shape="rect" href="exchange.html">Exchange</a> is about 
to be sent to the given <a shape="rect" 
href="endpoint.html">Endpoint</a>.</li></ul><p>These int
 erceptors supports the following features:</p><ul class="alternate"><li><a 
shape="rect" href="predicate.html">Predicate</a> using <code>when</code> to 
only trigger the interceptor in certain 
conditions</li><li><strong><code>stop</code></strong> forces to stop continue 
routing the <a shape="rect" href="exchange.html">Exchange</a> and mark it as 
completed successful. Camel will by default <strong>not 
stop</strong>.</li><li><strong><code>skip</code></strong> when used with 
<strong><code>interceptSendToEndpoint</code></strong> will 
<strong>skip</strong> routing the <a shape="rect" 
href="exchange.html">Exchange</a> to the original endpoint. Camel will by 
default <strong>not 
skip</strong>.</li><li><strong><code>interceptFrom</code></strong> and 
<strong><code>interceptSendToEndpoint</code></strong> supports endpoint URI 
matching by: exact URI, wildcard, regular expression. See advanced 
section.</li><li>The intercepted endpoint URI is stored as message header 
<strong><code>Exchange.INTERCEP
 TED_ENDPOINT</code></strong>.</li></ul><div 
class="confluence-information-macro confluence-information-macro-tip"><span 
class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p><strong><code>stop</code></strong> 
can be used in general, it does not have to be used with an <a shape="rect" 
href="intercept.html">Intercept</a> you can use it in regular routing as 
well.</p><p>You can also instruct Camel to <code>stop</code> continue routing 
your message if you set the <strong><code>Exchange.ROUTE_STOP</code></strong> 
property to <code><strong>true</strong></code> or 
<strong><code>Boolean.TRUE</code></strong> on the <a shape="rect" 
href="exchange.html">Exchange</a>. You can for instance do this from regular 
Java code in a <a shape="rect" href="pojo.html">Pojo</a> or <a shape="rect" 
href="processor.html">Processor</a>.</p></div></div><h3 
id="Intercept-Intercept.1"><code>Intercept</code></h3><p><strong><co
 de>Intercept</code></strong> is like a regular interceptor that is applied on 
each processing step the <a shape="rect" href="exchange.html">Exchange</a> 
undergo while its being routed. You can think of it as a <em>AOP before</em> 
that is applied at each DSL keyword you have defined in your route.</p><p>The 
classic Hello World example is:</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[intercept()
-  .to(&quot;log:hello&quot;);
+<div class="wiki-content maincontent"><h2 
id="Intercept-Intercept">Intercept</h2><p>The intercept feature in Camel 
supports intercepting <a shape="rect" href="exchange.html">Exchange</a>s while 
they are <em>en route</em>.&#160; We have overhauled the <a shape="rect" 
href="intercept.html">Intercept</a> in Camel 2.0 so the following information 
is based on Camel 2.0.</p><p>Camel supports three kinds of interceptors:</p><ul 
class="alternate"><li><strong><code>intercept</code></strong> that intercepts 
each and every processing step while routing an <a shape="rect" 
href="exchange.html">Exchange</a> in the 
route.</li><li><strong><code>interceptFrom</code></strong> that intercepts 
incoming <a shape="rect" href="exchange.html">Exchange</a> in the 
route.</li><li><strong><code>interceptSendToEndpoint</code></strong> that 
intercepts when an <a shape="rect" href="exchange.html">Exchange</a> is about 
to be sent to the given <a shape="rect" 
href="endpoint.html">Endpoint</a>.</li></ul><p>These int
 erceptors supports the following features:</p><ul class="alternate"><li><a 
shape="rect" href="predicate.html">Predicate</a> using <code>when</code> to 
only trigger the interceptor in certain 
conditions</li><li><strong><code>stop</code></strong> forces to stop continue 
routing the <a shape="rect" href="exchange.html">Exchange</a> and mark it as 
completed successful. Camel will by default <strong>not 
stop</strong>.</li><li><strong><code>skip</code></strong> when used with 
<strong><code>interceptSendToEndpoint</code></strong> will 
<strong>skip</strong> routing the <a shape="rect" 
href="exchange.html">Exchange</a> to the original endpoint. Camel will by 
default <strong>not 
skip</strong>.</li><li><strong><code>interceptFrom</code></strong> and 
<strong><code>interceptSendToEndpoint</code></strong> supports endpoint URI 
matching by: exact URI, wildcard, regular expression. See advanced 
section.</li><li>The intercepted endpoint URI is stored as message header 
<strong><code>Exchange.INTERCEP
 TED_ENDPOINT</code></strong>.</li></ul><parameter 
ac:name="tile">stop</parameter><rich-text-body><p><strong><code>stop</code></strong>
 can be used in general, it does not have to be used with an <a shape="rect" 
href="intercept.html">Intercept</a> you can use it in regular routing as 
well.</p><p>You can also instruct Camel to <code>stop</code> continue routing 
your message if you set the <strong><code>Exchange.ROUTE_STOP</code></strong> 
property to <code><strong>true</strong></code> or 
<strong><code>Boolean.TRUE</code></strong> on the <a shape="rect" 
href="exchange.html">Exchange</a>. You can for instance do this from regular 
Java code in a <a shape="rect" href="pojo.html">Pojo</a> or <a shape="rect" 
href="processor.html">Processor</a>.</p></rich-text-body><h3 
id="Intercept-Intercept.1"><code>Intercept</code></h3><p><strong><code>Intercept</code></strong>
 is like a regular interceptor that is applied on each processing step the <a 
shape="rect" href="exchange.html">Exchange</a> underg
 o while its being routed. You can think of it as a <em>AOP before</em> that is 
applied at each DSL keyword you have defined in your route.</p><p>The classic 
Hello World example is:</p><plain-text-body>intercept()
+  .to("log:hello");
 
-from(&quot;jms:queue:order&quot;)
-  .to(&quot;bean:validateOrder&quot;)
-  .to(&quot;bean:processOrder&quot;);
-]]></script>
-</div></div><p>What happens is that the <a shape="rect" 
href="exchange.html">Exchange</a> is intercepted before each processing step, 
that means that it will be intercepted before:</p><ul 
class="alternate"><li><code>.to("bean:validateOrder")</code></li><li><code>.to("bean:processOrder")</code></li></ul><p>So
 in this sample we intercept the <a shape="rect" 
href="exchange.html">Exchange</a> twice.</p><p>The <code>when</code> predicate 
is also support on the <strong><code>intercept</code></strong> so we can attach 
a <a shape="rect" href="predicate.html">Predicate</a> to only trigger the 
interception under certain conditions. For instance in the sample below we only 
intercept if the message body contains the string word 
<strong><code>Hello</code></strong>:</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[
-intercept().when(body().contains(&quot;Hello&quot;)).to(&quot;mock:intercepted&quot;);
-
-from(&quot;direct:start&quot;)
-    .to(&quot;mock:foo&quot;, &quot;mock:bar&quot;, &quot;mock:result&quot;);
-]]></script>
-</div></div>And in the route below we want to stop in certain conditions, when 
the message contains the word 
<strong><strong><code>Hello</code></strong></strong>:<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[
-intercept().when(body().contains(&quot;Hello&quot;)).to(&quot;mock:intercepted&quot;).stop();
-
-from(&quot;direct:start&quot;)
-    .to(&quot;mock:foo&quot;, &quot;mock:bar&quot;, &quot;mock:result&quot;);
-]]></script>
-</div></div><h4 id="Intercept-UsingfromSpringDSL">Using from Spring 
DSL</h4><p>The same hello world sample in Spring DSL would be:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;camelContext&gt;
-    &lt;intercept&gt;
-        &lt;to uri=&quot;log:hello&quot;/&gt;
-    &lt;/intercept&gt;
-
-    &lt;route&gt;
-        &lt;from uri=&quot;jms:queue:order&quot;/&gt;
-        &lt;to uri=&quot;bean:validateOrder&quot;/&gt;
-        &lt;to uri=&quot;bean:handleOrder&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div><p>And the sample for using 
the&#160;<strong><code>when()</code></strong> predicate would be:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-    &lt;!-- here we intercept each processing step in the routing and do a 
detour
-         routing where we route the exhange to the mock:intercepted endpoint.
-         We have applied a when predicate so the interceptor only applies
-         if the message body contains the string word &#39;Hello&#39; --&gt;
-    &lt;intercept&gt;
-        &lt;when&gt;
-            &lt;simple&gt;${in.body} contains &#39;Hello&#39;&lt;/simple&gt;
-        &lt;/when&gt;
-        &lt;to uri=&quot;mock:intercepted&quot;/&gt;
-    &lt;/intercept&gt;
-
-    &lt;!-- here we have a very simple route --&gt;
-    &lt;route&gt;
-        &lt;from uri=&quot;direct:start&quot;/&gt;
-        &lt;to uri=&quot;mock:foo&quot;/&gt;
-        &lt;to uri=&quot;mock:bar&quot;/&gt;
-        &lt;to uri=&quot;mock:result&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div>And the sample for using 
the&#160;<strong><code>when()</code></strong> 
and&#160;<strong><code>stop()</code></strong> would be:<div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
+from("jms:queue:order")
+  .to("bean:validateOrder")
+  .to("bean:processOrder");
+</plain-text-body><p>What happens is that the <a shape="rect" 
href="exchange.html">Exchange</a> is intercepted before each processing step, 
that means that it will be intercepted before:</p><ul 
class="alternate"><li><code>.to("bean:validateOrder")</code></li><li><code>.to("bean:processOrder")</code></li></ul><p>So
 in this sample we intercept the <a shape="rect" 
href="exchange.html">Exchange</a> twice.</p><p>The <code>when</code> predicate 
is also support on the <strong><code>intercept</code></strong> so we can attach 
a <a shape="rect" href="predicate.html">Predicate</a> to only trigger the 
interception under certain conditions. For instance in the sample below we only 
intercept if the message body contains the string word 
<strong><code>Hello</code></strong>:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteWhenTest.java}</plain-text-body>And
 in the route below we want to stop in certain conditi
 ons, when the message contains the word 
<strong><strong><code>Hello</code></strong></strong>:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSimpleRouteWhenStopTest.java}</plain-text-body></p><h4
 id="Intercept-UsingfromSpringDSL">Using from Spring DSL</h4><p>The same hello 
world sample in Spring DSL would be:</p><parameter 
ac:name="">xml</parameter><plain-text-body>&lt;camelContext&gt;
     &lt;intercept&gt;
-        &lt;!-- only trigger this interceptor if the message body contains the 
word Hello --&gt;
-        &lt;when&gt;
-            &lt;simple&gt;${in.body} contains &#39;Hello&#39;&lt;/simple&gt;
-        &lt;/when&gt;
-        &lt;to uri=&quot;mock:intercepted&quot;/&gt;
-        &lt;!-- stop continue routing --&gt;
-        &lt;stop/&gt;
+        &lt;to uri="log:hello"/&gt;
     &lt;/intercept&gt;
 
-    &lt;!-- here we have a very simple route --&gt;
-    &lt;route&gt;
-        &lt;from uri=&quot;direct:start&quot;/&gt;
-        &lt;to uri=&quot;mock:foo&quot;/&gt;
-        &lt;to uri=&quot;mock:bar&quot;/&gt;
-        &lt;to uri=&quot;mock:result&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div><h3 
id="Intercept-InterceptFrom"><code>InterceptFrom</code></h3><p><strong><code>InterceptFrom</code></strong>
 is for intercepting any incoming <a shape="rect" 
href="exchange.html">Exchange</a>, in any route (it intercepts all the 
<code>from</code> DSLs). This allows you to do some custom behavior for 
received <a shape="rect" href="exchange.html">Exchange</a>s. You can provide a 
specific URI for a given <a shape="rect" href="endpoint.html">Endpoint</a> then 
it only applies for that particular route.</p><p>So lets start with the logging 
example. We want to log all the <strong>incoming</strong> requests so we use 
<strong><code>interceptFrom</code></strong> to route to the <a shape="rect" 
href="log.html">Log</a> component. As <code>proceed</code> is default then the 
<a shape="rect" href="exchange.html">Exchange</a> will continue its route, and 
thus it will continue to <strong><code>mock:first</code></strong>.</p><div 
class="code panel pdl" style="border-width: 1px;"><div cl
 ass="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-// intercept all incomming routes and log it
-interceptFrom().to(&quot;log:received&quot;);
-
-// and here we have a couple of routes
-from(&quot;direct:start&quot;).to(&quot;mock:first&quot;).to(&quot;seda:bar&quot;);
-
-from(&quot;seda:bar&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div>You can also attach a <a shape="rect" 
href="predicate.html">Predicate</a> to only trigger if certain conditions is 
meet. For instance in the route below we intercept when a test message is send 
to us, so we can do some custom processing before we continue routing:<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[
-interceptFrom()
-    .when(header(&quot;usertype&quot;).isEqualTo(&quot;test&quot;))
-    .process(new MyTestServiceProcessor())
-    .to(&quot;mock:intercepted&quot;);
-
-// and here is our route
-from(&quot;direct:start&quot;).to(&quot;seda:bar&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div>And if we want to filter out certain messages we can use the 
<strong><code>stop()</code></strong> to instruct Camel to stop continue routing 
the <a shape="rect" href="exchange.html">Exchange</a>:<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[
-interceptFrom()
-    .when(header(&quot;usertype&quot;).isEqualTo(&quot;test&quot;))
-    // here we use stop() to tell Camel to NOT continue routing the message.
-    // this let us act as a filter, to drop certain messages.
-    .stop();
-
-// and here is our route
-from(&quot;direct:start&quot;).to(&quot;seda:bar&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div>And if want to only apply a specific endpoint, as the 
<strong><code>seda:bar</code></strong> endpoint in the sample below, we can do 
it like this:<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[
-// only trigger when incoming from seda:bar endpoint
-interceptFrom(&quot;seda:bar&quot;).to(&quot;mock:bar&quot;);
-
-// and here we have a couple of routes
-from(&quot;direct:start&quot;).to(&quot;mock:first&quot;).to(&quot;seda:bar&quot;);
-
-from(&quot;seda:bar&quot;).to(&quot;mock:result&quot;);
-
-from(&quot;seda:foo&quot;).to(&quot;mock:result&quot;);
-]]></script>
-</div></div><h4 id="Intercept-UsingfromSpringDSL.1">Using from Spring 
DSL</h4><p>Intercept is of course also available using Spring DSL as shown in 
the sample below:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-    &lt;!-- intercept incoming messages and route them to the mock:middle1 
endpoint
-         before we proceed and continue routing from the point of 
interceptions, that
-         is mock:end will be the next target --&gt;
-    &lt;interceptFrom&gt;
-        &lt;to uri=&quot;mock:middle1&quot;/&gt;
-    &lt;/interceptFrom&gt;
-
-    &lt;!-- here we have a very simple route --&gt;
-    &lt;route&gt;
-        &lt;from uri=&quot;direct:start&quot;/&gt;
-        &lt;to uri=&quot;mock:end&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p><strong>Note:</strong> 
<strong><code>stop()</code></strong> is also supported in 
<strong><code>interceptFrom()</code></strong> so you can intercept from certain 
endpoints and route then elsewhere 
and&#160;<strong><code>stop()</code></strong> to not continue routing in the 
original intended route path.</p></div></div><p><span 
class="confluence-anchor-link" 
id="Intercept-InterceptSendToEndpoint"></span></p><h3 
id="Intercept-InterceptSendToEndpoint"><code>InterceptSendToEndpoint</code></h3><p><strong>Available
 as of Camel 2.0</strong></p><p>Intercept send to endpoint is triggered when an 
<a shape="rect" href="exchange.html">Exchange</a> is being sent to the 
intercepted endpoint. This allows you to route the <a shape="rect" 
href="exchange.html">Exchange<
 /a> to a <a shape="rect" href="detour.html">Detour</a> or do some custom 
processing before the <a shape="rect" href="exchange.html">Exchange</a> is sent 
to the original intended destination. You can also skip sending to the intended 
destination. By default Camel will send to the original intended destination 
after the intercepted route completes. And as the regular intercept you can 
also define an <code>when</code> <a shape="rect" 
href="predicate.html">Predicate</a> so we only intercept if the <a shape="rect" 
href="predicate.html">Predicate</a> evaluates to 
<strong><code>true</code></strong>. This allows you do do a bit of filtering, 
to only intercept when certain criteria is meet.</p><p>Let start with a simple 
example, where we want to intercept when an <a shape="rect" 
href="exchange.html">Exchange</a> is being sent to 
<strong><code>mock:foo</code></strong>:</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[
-// we intercept by endpoint, that means that whenever an exchange is about to 
be sent to
-// this endpoint, its intercepted and routed with this detour route beforehand
-// afterwards its send to the original intended destination. So this is kinda 
AOP before.
-// That means mock:foo will receive the message (Bye World).
-interceptSendToEndpoint(&quot;mock:foo&quot;)
-    .to(&quot;mock:detour&quot;).transform(constant(&quot;Bye World&quot;));
-
-from(&quot;direct:first&quot;)
-    .to(&quot;mock:bar&quot;)
-    .to(&quot;mock:foo&quot;)
-    .to(&quot;mock:result&quot;);
-]]></script>
-</div></div>And this time we add the <a shape="rect" 
href="predicate.html">Predicate</a> so its only when the message body is 
<strong><code>Hello World</code></strong> we intercept.<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[
-// we can also attach a predicate to the endpoint interceptor. So in this 
example the exchange is
-// only intercepted if the body is Hello World
-interceptSendToEndpoint(&quot;mock:foo&quot;).when(body().isEqualTo(&quot;Hello
 World&quot;))
-    .to(&quot;mock:detour&quot;).transform(constant(&quot;Bye World&quot;));
-
-from(&quot;direct:second&quot;)
-    .to(&quot;mock:bar&quot;)
-    .to(&quot;mock:foo&quot;)
-    .to(&quot;mock:result&quot;);
-]]></script>
-</div></div>And to skip sending to the <code>mock:foo</code> endpoint we use 
the <strong>*<code>skip()</code></strong> DSL in the route at the end to 
instruct Camel to skip sending to the original intended endpoint.<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[
-// since we use the skipSendToOriginalEndpoint() we instruct Camel to skip
-// sending the exchange to the original intended destination after the 
intercept
-// route is complete.
-// That means that mock:foo will NOT receive the message, but the message
-// is skipped and continued in the original route, so mock:result will receive
-// the message.
-interceptSendToEndpoint(&quot;mock:foo&quot;).skipSendToOriginalEndpoint()
-    .transform(constant(&quot;Bye World&quot;)).to(&quot;mock:detour&quot;);
-
-from(&quot;direct:third&quot;)
-    .to(&quot;mock:bar&quot;)
-    .to(&quot;mock:foo&quot;)
-    .to(&quot;mock:result&quot;);
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><p class="title">Conditional 
skipping</p><span class="aui-icon aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The combination of 
<strong><code>skipSendToEndpoint</code></strong> with a <code>when</code> 
predicate behaves differently depending on the Camel 
version:</p><ul><li><p><strong>Before Camel 2.10:</strong> the skipping is 
applied unconditionally whether the&#160;<strong><code>when()</code></strong> 
predicate is matched or not, i.e. the&#160;<strong><code>when()</code></strong> 
predicate only determines whether the body of the interception will execute, 
but it does not control skipping behavior.</p></li><li><strong>From Camel 
2.10:</strong> the skipping only occurs if 
the&#160;<strong><code>when()</code></strong> predicate is matched, leading to 
more natural logic altogether.</li></ul></div></div><h4 id="Interce
 pt-UsingfromSpringDSL.2">Using from Spring DSL</h4><p>Intercept endpoint is of 
course also available using Spring DSL. We start with the first example from 
above in Spring DSL:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-
-    &lt;!-- we intercept by endpoint, that means that whenever an exchange is 
about to be sent to
-         this endpoint, its intercepted and routed with this detour route 
beforehand
-         afterwards its send to the original intended destination. So this is 
kinda AOP before.
-         That means mock:foo will receive the message (Bye World). --&gt;
-    &lt;interceptSendToEndpoint uri=&quot;mock:foo&quot;&gt;
-        &lt;to uri=&quot;mock:detour&quot;/&gt;
-        &lt;transform&gt;
-            &lt;constant&gt;Bye World&lt;/constant&gt;
-        &lt;/transform&gt;
-    &lt;/interceptSendToEndpoint&gt;
-
-    &lt;route&gt;
-        &lt;from uri=&quot;direct:first&quot;/&gt;
-        &lt;to uri=&quot;mock:bar&quot;/&gt;
-        &lt;to uri=&quot;mock:foo&quot;/&gt;
-        &lt;to uri=&quot;mock:result&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div>And the second. Notice how we can leverage the <a shape="rect" 
href="simple.html">Simple</a> language for the <a shape="rect" 
href="predicate.html">Predicate</a>:<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-
-    &lt;interceptSendToEndpoint uri=&quot;mock:foo&quot;&gt;
-        &lt;when&gt;&lt;simple&gt;${body} == &#39;Hello 
World&#39;&lt;/simple&gt;&lt;/when&gt;
-        &lt;to uri=&quot;mock:detour&quot;/&gt;
-        &lt;transform&gt;
-            &lt;constant&gt;Bye World&lt;/constant&gt;
-        &lt;/transform&gt;
-    &lt;/interceptSendToEndpoint&gt;
-
-    &lt;route&gt;
-        &lt;from uri=&quot;direct:second&quot;/&gt;
-        &lt;to uri=&quot;mock:bar&quot;/&gt;
-        &lt;to uri=&quot;mock:foo&quot;/&gt;
-        &lt;to uri=&quot;mock:result&quot;/&gt;
-    &lt;/route&gt;
-&lt;/camelContext&gt;
-]]></script>
-</div></div>And the third with the <strong><code>skip</code></strong>; notice 
skip is set with the <strong><code>skipSendToOriginalEndpoint</code></strong> 
attribute on the&#160;<strong><code>interceptSendToEndpoint</code></strong> 
tag:<div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-
-    &lt;!-- since we set the skipSendToOriginalEndpoint attribute to true we 
instruct
-         Camel to skip sending the exchange to the original intended 
destination.
-         That means that mock:foo will NOT receive the message, but the message
-         is skipped and continued in the original route, so mock:result will 
receive
-         the message. --&gt;
-    &lt;interceptSendToEndpoint uri=&quot;mock:foo&quot; 
skipSendToOriginalEndpoint=&quot;true&quot;&gt;
-        &lt;transform&gt;
-            &lt;constant&gt;Bye World&lt;/constant&gt;
-        &lt;/transform&gt;
-        &lt;to uri=&quot;mock:detour&quot;/&gt;
-    &lt;/interceptSendToEndpoint&gt;
-
     &lt;route&gt;
-        &lt;from uri=&quot;direct:third&quot;/&gt;
-        &lt;to uri=&quot;mock:bar&quot;/&gt;
-        &lt;to uri=&quot;mock:foo&quot;/&gt;
-        &lt;to uri=&quot;mock:result&quot;/&gt;
+        &lt;from uri="jms:queue:order"/&gt;
+        &lt;to uri="bean:validateOrder"/&gt;
+        &lt;to uri="bean:handleOrder"/&gt;
     &lt;/route&gt;
 &lt;/camelContext&gt;
-]]></script>
-</div></div><h3 id="Intercept-AdvancedusageofIntercept">Advanced usage 
of&#160;<code>Intercept</code></h3><p>The 
<strong><code>interceptFrom</code></strong> and 
<strong><code>interceptSendToEndpoint</code></strong> supports endpoint URI 
matching by the following rules in the given order:</p><ul 
class="alternate"><li>match by exact URI name. This is the sample we have seen 
above.</li><li>match by wildcard</li><li>match by regular 
expression.</li></ul><p>The real endpoint that was intercepted is stored as URI 
in the message IN header with the key 
<strong><code>Exchange.INTERCEPTED_ENDPOINT</code></strong>. This allows you to 
get hold of this information, when you for instance match by wildcard. Then you 
know the real endpoint that was intercepted and can react accordingly.</p><h4 
id="Intercept-MatchbyWildcard">Match by Wildcard</h4><p>Match by wildcard 
allows you to match a range of endpoint or all of a given type. For instance 
use <strong><code>uri="file:*"</code></strong> will match
  all <a shape="rect" href="file2.html">File</a> based endpoints:</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[intercept(&quot;jms:*&quot;)
-  .to(&quot;log:fromjms&quot;);
-]]></script>
-</div></div><p>Wildcards is match that the text before 
the&#160;<strong><code>*</code></strong> is matched against the given endpoint 
and if it also starts with the same characters its a match. For instance you 
can do:</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[intercept(&quot;file://order/inbox/*&quot;)
-  .to(&quot;log:newfileorders&quot;);
-]]></script>
-</div></div><p>To intercept any files received from the 
<strong><code>order/inbox</code></strong> folder.</p><h4 
id="Intercept-MatchbyRegularExpression">Match by Regular 
Expression</h4><p>Match by regular expression is just like match by wildcard 
but using regex instead. So if we want to intercept incoming messages from gold 
and silver JMS queues we can do:</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[intercept(&quot;jms:queue:(gold|silver)&quot;)
-  .to(&quot;seda:handleFast&quot;);
-]]></script>
-</div></div><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">About dynamic and 
static behavior of interceptFrom and interceptSendToEndpoint</p><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The 
<strong><code>interceptSendToEndpoint</code></strong> is dynamic hence it will 
also trigger if a dynamic URI is constructed that Camel was not aware of at 
startup time.<br clear="none"> The <strong><code>interceptFrom</code></strong> 
is not dynamic as it only intercepts input to routes registered as routes in 
<strong><code>CamelContext</code></strong>. So if you dynamic construct a 
<code>Consumer</code> using the Camel API and consumes an <a shape="rect" 
href="endpoint.html">Endpoint</a> then the 
<strong><code>interceptFrom</code></strong> is not 
triggered.</p></div></div><h3 id="Intercept-SeeAlso">See Also</h3><ul 
class="alternate"><li><a shap
 e="rect" href="architecture.html">Architecture</a></li><li><a shape="rect" 
href="aop.html">AOP</a></li></ul></div>
+</plain-text-body><p>And the sample for using 
the&#160;<strong><code>when()</code></strong> predicate would 
be:<plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptSimpleRouteWhenTest.xml}</plain-text-body>And
 the sample for using the&#160;<strong><code>when()</code></strong> 
and&#160;<strong><code>stop()</code></strong> would 
be:<plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptSimpleRouteWhenStopTest.xml}</plain-text-body></p><h3
 
id="Intercept-InterceptFrom"><code>InterceptFrom</code></h3><p><strong><code>InterceptFrom</code></strong>
 is for intercepting any incoming <a shape="rect" 
href="exchange.html">Exchange</a>, in any route (it intercepts all the 
<code>from</code> DSLs). This allows you to do some custom behavior for 
received <a shape="rect" href="exchange.html">Exchange</a>s. You ca
 n provide a specific URI for a given <a shape="rect" 
href="endpoint.html">Endpoint</a> then it only applies for that particular 
route.</p><p>So lets start with the logging example. We want to log all the 
<strong>incoming</strong> requests so we use 
<strong><code>interceptFrom</code></strong> to route to the <a shape="rect" 
href="log.html">Log</a> component. As <code>proceed</code> is default then the 
<a shape="rect" href="exchange.html">Exchange</a> will continue its route, and 
thus it will continue to 
<strong><code>mock:first</code></strong>.<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromSimpleLogTest.java}</plain-text-body>You
 can also attach a <a shape="rect" href="predicate.html">Predicate</a> to only 
trigger if certain conditions is meet. For instance in the route below we 
intercept when a test message is send to us, so we can do some custom 
processing before we continue routing:<plain-text-bo
 
dy>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromSimplePredicateTest.java}</plain-text-body>And
 if we want to filter out certain messages we can use the 
<strong><code>stop()</code></strong> to instruct Camel to stop continue routing 
the <a shape="rect" 
href="exchange.html">Exchange</a>:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromSimplePredicateWithStopTest.java}</plain-text-body>And
 if want to only apply a specific endpoint, as the 
<strong><code>seda:bar</code></strong> endpoint in the sample below, we can do 
it like 
this:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptFromUriSimpleLogTest.java}</plain-text-body></p><h4
 id="Intercept-UsingfromSpringDSL.1">Using from Spring DSL</h4><p>Intercept is 
of course also available using Spring DSL as shown 
 in the sample 
below:<plain-text-body>{snippet:id=example|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringInterceptFromTest.xml}</plain-text-body></p><rich-text-body><p><strong>Note:</strong>
 <strong><code>stop()</code></strong> is also supported in 
<strong><code>interceptFrom()</code></strong> so you can intercept from certain 
endpoints and route then elsewhere 
and&#160;<strong><code>stop()</code></strong> to not continue routing in the 
original intended route path.</p></rich-text-body><p><parameter 
ac:name="">InterceptSendToEndpoint</parameter></p><h3 
id="Intercept-InterceptSendToEndpoint"><code>InterceptSendToEndpoint</code></h3><p><strong>Available
 as of Camel 2.0</strong></p><p>Intercept send to endpoint is triggered when an 
<a shape="rect" href="exchange.html">Exchange</a> is being sent to the 
intercepted endpoint. This allows you to route the <a shape="rect" 
href="exchange.html">Exchange</a> to a <a shape="rect" href=
 "detour.html">Detour</a> or do some custom processing before the <a 
shape="rect" href="exchange.html">Exchange</a> is sent to the original intended 
destination. You can also skip sending to the intended destination. By default 
Camel will send to the original intended destination after the intercepted 
route completes. And as the regular intercept you can also define an 
<code>when</code> <a shape="rect" href="predicate.html">Predicate</a> so we 
only intercept if the <a shape="rect" href="predicate.html">Predicate</a> 
evaluates to <strong><code>true</code></strong>. This allows you do do a bit of 
filtering, to only intercept when certain criteria is meet.</p><p>Let start 
with a simple example, where we want to intercept when an <a shape="rect" 
href="exchange.html">Exchange</a> is being sent to 
<strong><code>mock:foo</code></strong>:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java}</p
 lain-text-body>And this time we add the <a shape="rect" 
href="predicate.html">Predicate</a> so its only when the message body is 
<strong><code>Hello World</code></strong> we 
intercept.<plain-text-body>{snippet:id=e2|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java}</plain-text-body>And
 to skip sending to the <code>mock:foo</code> endpoint we use the 
<strong>*<code>skip()</code></strong> DSL in the route at the end to instruct 
Camel to skip sending to the original intended 
endpoint.<plain-text-body>{snippet:id=e3|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointTest.java}</plain-text-body></p><parameter
 ac:name="title">Conditional skipping</parameter><rich-text-body><p>The 
combination of <strong><code>skipSendToEndpoint</code></strong> with a 
<code>when</code> predicate behaves differently depending on the Camel 
version:</p><ul><li><p><strong>Before Ca
 mel 2.10:</strong> the skipping is applied unconditionally whether 
the&#160;<strong><code>when()</code></strong> predicate is matched or not, i.e. 
the&#160;<strong><code>when()</code></strong> predicate only determines whether 
the body of the interception will execute, but it does not control skipping 
behavior.</p></li><li><strong>From Camel 2.10:</strong> the skipping only 
occurs if the&#160;<strong><code>when()</code></strong> predicate is matched, 
leading to more natural logic altogether.</li></ul></rich-text-body><h4 
id="Intercept-UsingfromSpringDSL.2">Using from Spring DSL</h4><p>Intercept 
endpoint is of course also available using Spring DSL. We start with the first 
example from above in Spring 
DSL:<plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/interceptSendToEndpoint.xml}</plain-text-body>And
 the second. Notice how we can leverage the <a shape="rect" 
href="simple.html">Simple</a> language f
 or the <a shape="rect" 
href="predicate.html">Predicate</a>:<plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/interceptSendToEndpointWhen.xml}</plain-text-body>And
 the third with the <strong><code>skip</code></strong>; notice skip is set with 
the <strong><code>skipSendToOriginalEndpoint</code></strong> attribute on 
the&#160;<strong><code>interceptSendToEndpoint</code></strong> 
tag:<plain-text-body>{snippet:id=e1|lang=xml|url=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/interceptSendToEndpointSkip.xml}</plain-text-body></p><h3
 id="Intercept-AdvancedusageofIntercept">Advanced usage 
of&#160;<code>Intercept</code></h3><p>The 
<strong><code>interceptFrom</code></strong> and 
<strong><code>interceptSendToEndpoint</code></strong> supports endpoint URI 
matching by the following rules in the given order:</p><ul 
class="alternate"><li>match by exact URI name. This is the
  sample we have seen above.</li><li>match by wildcard</li><li>match by regular 
expression.</li></ul><p>The real endpoint that was intercepted is stored as URI 
in the message IN header with the key 
<strong><code>Exchange.INTERCEPTED_ENDPOINT</code></strong>. This allows you to 
get hold of this information, when you for instance match by wildcard. Then you 
know the real endpoint that was intercepted and can react accordingly.</p><h4 
id="Intercept-MatchbyWildcard">Match by Wildcard</h4><p>Match by wildcard 
allows you to match a range of endpoint or all of a given type. For instance 
use <strong><code>uri="file:*"</code></strong> will match all <a shape="rect" 
href="file2.html">File</a> based endpoints:</p><parameter 
ac:name="">java</parameter><plain-text-body>intercept("jms:*")
+  .to("log:fromjms");
+</plain-text-body><p>Wildcards is match that the text before 
the&#160;<strong><code>*</code></strong> is matched against the given endpoint 
and if it also starts with the same characters its a match. For instance you 
can do:</p><parameter 
ac:name="">java</parameter><plain-text-body>intercept("file://order/inbox/*")
+  .to("log:newfileorders");
+</plain-text-body><p>To intercept any files received from the 
<strong><code>order/inbox</code></strong> folder.</p><h4 
id="Intercept-MatchbyRegularExpression">Match by Regular 
Expression</h4><p>Match by regular expression is just like match by wildcard 
but using regex instead. So if we want to intercept incoming messages from gold 
and silver JMS queues we can do:</p><parameter 
ac:name="">java</parameter><plain-text-body>intercept("jms:queue:(gold|silver)")
+  .to("seda:handleFast");
+</plain-text-body><parameter ac:name="title">About dynamic and static behavior 
of interceptFrom and interceptSendToEndpoint</parameter><rich-text-body><p>The 
<strong><code>interceptSendToEndpoint</code></strong> is dynamic hence it will 
also trigger if a dynamic URI is constructed that Camel was not aware of at 
startup time.<br clear="none"> The <strong><code>interceptFrom</code></strong> 
is not dynamic as it only intercepts input to routes registered as routes in 
<strong><code>CamelContext</code></strong>. So if you dynamic construct a 
<code>Consumer</code> using the Camel API and consumes an <a shape="rect" 
href="endpoint.html">Endpoint</a> then the 
<strong><code>interceptFrom</code></strong> is not 
triggered.</p></rich-text-body><h3 id="Intercept-SeeAlso">See Also</h3><ul 
class="alternate"><li><a shape="rect" 
href="architecture.html">Architecture</a></li><li><a shape="rect" 
href="aop.html">AOP</a></li></ul></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/javascript.html
==============================================================================
--- websites/production/camel/content/javascript.html (original)
+++ websites/production/camel/content/javascript.html Fri Aug 25 08:22:01 2017
@@ -41,7 +41,6 @@
   <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
   <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
   <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
   
   <script type="text/javascript">
   SyntaxHighlighter.defaults['toolbar'] = false;
@@ -130,46 +129,19 @@
 ]]></script>
 </div></div>
 
-<h3 id="JavaScript-ScriptContextOptions"><code>ScriptContext</code> 
Options</h3><p>&#160;</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">The&#160;<code>JSR-223</code> 
scripting language's&#160;<strong><code>ScriptContext</code></strong> is 
pre-configured with the following attributes all set at 
<strong><code>ENGINE_SCOPE</code></strong>.</div></div><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><span><code>camelContext</code><br 
clear="none"></span></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.ca
 mel.CamelContext</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The Camel Context.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>context</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be 
used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The current 
Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> 
Function with a <s
 trong><code>resolve</code></strong> method to make it easier to use Camels <a 
shape="rect" href="properties.html">Properties</a> component from scripts. See 
further below for example.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>request</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> 
message.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>response</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: 
The&#160;<strong><code>OUT</code></strong> message. 
The&#160;<strong><code>OUT</code></strong> message 
is&#160;<strong><code>null</code></strong> by default. Use the 
<strong><code>IN</code></strong> message instead.</p></td></tr></tbody
 ></table></div><p>See <a shape="rect" 
 >href="scripting-languages.html">Scripting Languages</a> for the list of 
 >languages with explicit DSL support.</p><h3 
 >id="JavaScript-PassingAdditionalArgumentstotheScriptingEngine">Passing 
 >Additional Arguments to 
 >the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 
 >2.8</strong></p><p>You can provide additional arguments to the 
 ><strong><code>ScriptingEngine</code></strong> using a header on the Camel 
 >message with the key 
 ><strong><code>CamelScriptArguments</code></strong>.</p><p>Example:</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[
-public void testArgumentsExample() throws Exception {
-    getMockEndpoint(&quot;mock:result&quot;).expectedMessageCount(0);
-    getMockEndpoint(&quot;mock:unmatched&quot;).expectedMessageCount(1);
-
-    // additional arguments to ScriptEngine
-    Map&lt;String, Object&gt; arguments = new HashMap&lt;String, Object&gt;();
-    arguments.put(&quot;foo&quot;, &quot;bar&quot;);
-    arguments.put(&quot;baz&quot;, 7);
-
-    // those additional arguments is provided as a header on the Camel Message
-    template.sendBodyAndHeader(&quot;direct:start&quot;, &quot;hello&quot;, 
ScriptBuilder.ARGUMENTS, arguments);
-
-    assertMockEndpointsSatisfied();
-}
-]]></script>
-</div></div><h3 id="JavaScript-UsingPropertiesFunction">Using Properties 
Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to 
use the <a shape="rect" href="properties.html">Properties</a> component from a 
script to lookup property placeholders, then its a bit cumbersome to do so. For 
example, to set a header name&#160;<strong><code>myHeader</code></strong> with 
a value from a property placeholder, whose key is taken from a header named 
<strong><code>foo</code></strong>.</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[.setHeader(&quot;myHeader&quot;).groovy(&quot;context.resolvePropertyPlaceholders(&#39;{{&#39;
 + request.headers.get(&#39;foo&#39;) + &#39;}}&#39;)&quot;)
-]]></script>
-</div></div><p>From <strong>Camel 2.9</strong>: you can now use the properties 
function and the same example is simpler:</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[.setHeader(&quot;myHeader&quot;).groovy(&quot;properties.resolve(request.headers.get(&#39;foo&#39;))&quot;)
-]]></script>
-</div></div><h3 id="JavaScript-LoadingScriptFromExternalResource">Loading 
Script From External Resource</h3><p><strong>Available from Camel 
2.11</strong></p><p>You can externalize the script and have Camel load it from 
a resource such as <strong><code>classpath:</code></strong>, 
<strong><code>file:</code></strong>, or <strong><code>http:</code></strong>. 
This is done using the following syntax: 
<strong><code>resource:scheme:location</code></strong> e.g. to refer to a file 
on the classpath you can do:</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[.setHeader(&quot;myHeader&quot;).groovy(&quot;resource:classpath:mygroovy.groovy&quot;)
-]]></script>
-</div></div><h3 
id="JavaScript-HowtoGettheResultfromMultipleStatementsScript">How to Get the 
Result from Multiple Statements Script</h3><p><strong>Available from Camel 
2.14</strong></p><p>The script engine's eval method returns 
a&#160;<strong><code>null</code></strong> when it runs a multi-statement 
script. However, Camel can look up the value of a script's result by using the 
key <strong><code>result</code></strong> from the value set. When writing a 
multi-statement script set the value of 
the&#160;<strong><code>result</code></strong> variable as the script return 
value.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: text; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[bar = &quot;baz&quot;;
+<h3 id="JavaScript-ScriptContextOptions"><code>ScriptContext</code> 
Options</h3><p>&#160;</p><rich-text-body>The&#160;<code>JSR-223</code> 
scripting language's&#160;<strong><code>ScriptContext</code></strong> is 
pre-configured with the following attributes all set at 
<strong><code>ENGINE_SCOPE</code></strong>.</rich-text-body><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Attribute</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><span><code>camelContext</code><br 
clear="none"></span></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The Camel 
Context.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>context</code></p></td><td c
 olspan="1" rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.CamelContext</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The Camel Context (cannot be 
used in groovy).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>exchange</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Exchange</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The current 
Exchange.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>properties</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.builder.script.PropertiesFunction</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9:</strong> 
Function with a <strong><code>resolve</code></strong> method to make it easier 
to use Camels <a shape="rect" href="properties.html">Properties</a> component 
from scripts. See further below for example.</p></td></tr><tr><td c
 olspan="1" rowspan="1" 
class="confluenceTd"><p><code>request</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p>The&#160;<strong><code>IN</code></strong> 
message.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>response</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>org.apache.camel.Message</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Deprecated</strong>: 
The&#160;<strong><code>OUT</code></strong> message. 
The&#160;<strong><code>OUT</code></strong> message 
is&#160;<strong><code>null</code></strong> by default. Use the 
<strong><code>IN</code></strong> message 
instead.</p></td></tr></tbody></table></div><p>See <a shape="rect" 
href="scripting-languages.html">Scripting Languages</a> for the list of 
languages with explicit DSL support.</p><h3 
id="JavaScript-PassingAdditionalArgumentstotheScript
 ingEngine">Passing Additional Arguments to 
the&#160;<code>ScriptingEngine</code></h3><p><strong>Available from Camel 
2.8</strong></p><p>You can provide additional arguments to the 
<strong><code>ScriptingEngine</code></strong> using a header on the Camel 
message with the key 
<strong><code>CamelScriptArguments</code></strong>.</p><p>Example:<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-script/src/test/java/org/apache/camel/builder/script/JavaScriptExpressionTest.java}</plain-text-body></p><h3
 id="JavaScript-UsingPropertiesFunction">Using Properties 
Function</h3><p><strong>Available from Camel 2.9</strong></p><p>If you need to 
use the <a shape="rect" href="properties.html">Properties</a> component from a 
script to lookup property placeholders, then its a bit cumbersome to do so. For 
example, to set a header name&#160;<strong><code>myHeader</code></strong> with 
a value from a property placeholder, whose key is taken from a header named 
<strong><code>foo</cod
 
e></strong>.</p><plain-text-body>.setHeader("myHeader").groovy("context.resolvePropertyPlaceholders('{{'
 + request.headers.get('foo') + '}}')")
+</plain-text-body><p>From <strong>Camel 2.9</strong>: you can now use the 
properties function and the same example is simpler:</p><parameter 
ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("properties.resolve(request.headers.get('foo'))")
+</plain-text-body><h3 
id="JavaScript-LoadingScriptFromExternalResource">Loading Script From External 
Resource</h3><p><strong>Available from Camel 2.11</strong></p><p>You can 
externalize the script and have Camel load it from a resource such as 
<strong><code>classpath:</code></strong>, <strong><code>file:</code></strong>, 
or <strong><code>http:</code></strong>. This is done using the following 
syntax: <strong><code>resource:scheme:location</code></strong> e.g. to refer to 
a file on the classpath you can do:</p><parameter 
ac:name="language">java</parameter><plain-text-body>.setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
+</plain-text-body><h3 
id="JavaScript-HowtoGettheResultfromMultipleStatementsScript">How to Get the 
Result from Multiple Statements Script</h3><p><strong>Available from Camel 
2.14</strong></p><p>The script engine's eval method returns 
a&#160;<strong><code>null</code></strong> when it runs a multi-statement 
script. However, Camel can look up the value of a script's result by using the 
key <strong><code>result</code></strong> from the value set. When writing a 
multi-statement script set the value of 
the&#160;<strong><code>result</code></strong> variable as the script return 
value.</p><parameter ac:name="language">text</parameter><plain-text-body>bar = 
"baz";
 # some other statements ... 
 # camel take the result value as the script evaluation result
 result = body * 2 + 1
-]]></script>
-</div></div><p>&#160;</p><h3 
id="JavaScript-Dependencies">Dependencies</h3><p>To use scripting languages in 
your camel routes you need to add the a dependency on 
<strong><code>camel-script</code></strong> which integrates the JSR-223 
scripting engine.</p><p>If you use maven you could just add the following to 
your <strong><code>pom.xml</code></strong>, substituting the version number for 
the latest &amp; greatest release (see <a shape="rect" href="download.html">the 
download page for the latest versions</a>).</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
+</plain-text-body><p>&#160;</p><h3 
id="JavaScript-Dependencies">Dependencies</h3><p>To use scripting languages in 
your camel routes you need to add the a dependency on 
<strong><code>camel-script</code></strong> which integrates the JSR-223 
scripting engine.</p><p>If you use maven you could just add the following to 
your <strong><code>pom.xml</code></strong>, substituting the version number for 
the latest &amp; greatest release (see <a shape="rect" href="download.html">the 
download page for the latest versions</a>).</p><parameter 
ac:name="">xml</parameter><plain-text-body>&lt;dependency&gt;
   &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
   &lt;artifactId&gt;camel-script&lt;/artifactId&gt;
   &lt;version&gt;x.x.x&lt;/version&gt;
 &lt;/dependency&gt;
-]]></script>
-</div></div></div>
+</plain-text-body></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/camel/content/jcifs.html
==============================================================================
--- websites/production/camel/content/jcifs.html (original)
+++ websites/production/camel/content/jcifs.html Fri Aug 25 08:22:01 2017
@@ -36,17 +36,6 @@
     <![endif]-->
 
 
-  <link href='//camel.apache.org/styles/highlighter/styles/shCoreCamel.css' 
rel='stylesheet' type='text/css' />
-  <link href='//camel.apache.org/styles/highlighter/styles/shThemeCamel.css' 
rel='stylesheet' type='text/css' />
-  <script src='//camel.apache.org/styles/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
-  <script src='//camel.apache.org/styles/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
-  
-  <script type="text/javascript">
-  SyntaxHighlighter.defaults['toolbar'] = false;
-  SyntaxHighlighter.all();
-  </script>
 
     <title>
     Apache Camel: JCIFS
@@ -92,27 +81,23 @@
 <p>This component provides access to remote file systems over the CIFS/SMB 
networking protocol. The <strong>camel-jcifs</strong> library is provided by 
the <a shape="rect" class="external-link" 
href="http://code.google.com/p/camel-extra/"; rel="nofollow">Camel Extra</a> 
project which hosts all *GPL related components for Camel.</p>
 
 <p>Maven users will need to add the following dependency to their 
<code>pom.xml</code> for this component: </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
+<parameter ac:name="">xml</parameter><plain-text-body> 
 &lt;dependency&gt; 
   &lt;groupId&gt;org.apache-extras.camel-extra&lt;/groupId&gt; 
   &lt;artifactId&gt;camel-jcifs&lt;/artifactId&gt; 
   &lt;version&gt;x.x.x&lt;/version&gt; 
   &lt;!-- use the same version as your Camel core version --&gt; 
 &lt;/dependency&gt; 
-]]></script>
-</div></div> 
+</plain-text-body> 
 
-<div class="confluence-information-macro confluence-information-macro-tip"><p 
class="title">Consuming from remote server</p><span class="aui-icon 
aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>Make sure you read the section titled <em>Default when consuming files</em> 
further below for details related to consuming files. </p></div></div> 
+<parameter ac:name="title">Consuming from remote 
server</parameter><rich-text-body>
+<p>Make sure you read the section titled <em>Default when consuming files</em> 
further below for details related to consuming files. </p></rich-text-body> 
 
 <h3 id="JCIFS-URIformat">URI format </h3>
 
-<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[ 
+<plain-text-body> 
 
smb://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]]]][?options] 
-]]></script>
-</div></div> 
+</plain-text-body> 
 
 <p>Where <strong>share</strong> represents the share to connect to and 
<strong>dir</strong> is optionaly any underlying directory. Can contain nested 
folders. </p>
 
@@ -124,23 +109,18 @@ smb://[[[domain;]username[:password]@]se
 
 <p>The options below are exclusive for the JCIFS component.</p>
 
-<div class="confluenceTableSmall">
+<parameter ac:name="class">confluenceTableSmall</parameter><rich-text-body>
 <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Default Value </p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> <code>password</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 
<strong>Mandatory</strong> Specifies the password to use to log in to the 
remote file system. </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p> <code>localWorkDirectory</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> When consuming, a local work 
directory can be used to store the remote file content directly in local files, 
to avoid loading the content into memory
 . This is beneficial, if you consume a very big remote file and thus can 
conserve memory. See below for more details. 
</p></td></tr></tbody></table></div>
-</div>
-
-
- 
+</rich-text-body> 
 
-<div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">More 
options</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>See <a shape="rect" href="file2.html">File</a> for more options as all the 
options from <a shape="rect" href="file2.html">File</a> is inherited. 
</p></div></div> 
+<parameter ac:name="title">More options</parameter><rich-text-body>
+<p>See <a shape="rect" href="file2.html">File</a> for more options as all the 
options from <a shape="rect" href="file2.html">File</a> is inherited. 
</p></rich-text-body> 
 
 <p>For example to set the <code>localWorkDirectory</code> to ''/tmp'' you can 
do: </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
-from(&quot;smb://[email protected]/sharename?password=secret&amp;localWorkDirectory=/tmp&quot;)
-  .to(&quot;bean:foo&quot;); 
-]]></script>
-</div></div> 
+<parameter ac:name="">java</parameter><plain-text-body> 
+from("smb://[email protected]/sharename?password=secret&amp;localWorkDirectory=/tmp")
+  .to("bean:foo"); 
+</plain-text-body> 
 
 
 <p>You can have as many of these options as you like.</p>
@@ -150,19 +130,16 @@ from(&quot;smb://[email protected]
 <p><code><a shape="rect" 
href="smb://[email protected]/sharename?password=secret" 
rel="nofollow">smb://[email protected]/sharename?password=secret</a></code>
 <br clear="none">
 <code><a shape="rect" 
href="smb://companydomain;[email protected]/sharename?password=secret" 
rel="nofollow">smb://companydomain;[email protected]/sharename?password=secret</a></code>
 </p>
 
-<div class="confluence-information-macro confluence-information-macro-tip"><p 
class="title">More information</p><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>This component is an extension of the <a shape="rect" 
href="file2.html">File</a> component. So there are more samples and details on 
the <a shape="rect" href="file2.html">File</a> component page. </p></div></div> 
+<parameter ac:name="title">More information</parameter><rich-text-body>
+<p>This component is an extension of the <a shape="rect" 
href="file2.html">File</a> component. So there are more samples and details on 
the <a shape="rect" href="file2.html">File</a> component page. 
</p></rich-text-body> 
 
 <h3 id="JCIFS-MessageHeaders">Message Headers </h3>
 
 <p>The following message headers can be used to affect the behavior of the 
component </p>
 
-<div class="confluenceTableSmall">
+<parameter ac:name="class">confluenceTableSmall</parameter><rich-text-body>
 <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Header </p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Description 
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 
<code>CamelFileName</code> </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Specifies the output file name (relative to the 
endpoint directory) to be used for the output message when sending to the 
endpoint. If this is not present and no expression either, then a generated 
message ID is used as the filename instead. </p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> <code>CamelFileNameProduced</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The actual 
absolute filepath (path + name) for the output file that was written. This 
header is set by Camel and its purpose is providing end-users the name of the 
file that was written. </p></td></tr><tr><td colspan="1" rowspa
 n="1" class="confluenceTd"><p> <code>CamelFileBatchIndex</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> Current index out of total 
number of files being consumed in this batch. </p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> <code>CamelFileBatchSize</code> 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Total number of 
files being consumed in this batch. </p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> <code>CamelFileHost</code> </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> The remote hostname. 
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 
<code>CamelFileLocalWorkPath</code> </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Path to the local work file, if local work directory 
is used. </p></td></tr></tbody></table></div>
-</div>
-
-
- 
+</rich-text-body> 
 
 
 <h3 id="JCIFS-UsingLocalWorkDirectory">Using Local Work Directory </h3>
@@ -172,21 +149,18 @@ from(&quot;smb://[email protected]
 <p>Camel JCIFS will store to a local file with the same name as the remote 
file. And finally, when the <a shape="rect" href="exchange.html">Exchange</a> 
is complete the local file is deleted. </p>
 
 <p>So if you want to download files from a remote server and store it as files 
then you need to route to a file endpoint such as: </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
-from(&quot;smb://[email protected]/sharename?password=secret&amp;localWorkDirectory=/tmp&quot;)
-  .to(&quot;file://inbox&quot;); 
-]]></script>
-</div></div> 
+<parameter ac:name="">java</parameter><plain-text-body> 
+from("smb://[email protected]/sharename?password=secret&amp;localWorkDirectory=/tmp")
+  .to("file://inbox"); 
+</plain-text-body> 
 
-<div class="confluence-information-macro confluence-information-macro-tip"><p 
class="title">Optimization by renaming work file</p><span class="aui-icon 
aui-icon-small aui-iconfont-approve 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>The route above is ultra efficient as it avoids reading the entire file 
content into memory. It will download the remote file directly to a local file 
stream. The <code>java.io.File</code> handle is then used as the <a 
shape="rect" href="exchange.html">Exchange</a> body. The file producer 
leverages this fact and can work directly on the work file 
<code>java.io.File</code> handle and perform a <code>java.io.File.rename</code> 
to the target filename. As Camel knows it's a local work file, it can optimize 
and use a rename instead of a file copy, as the work file is meant to be 
deleted anyway. </p></div></div> 
+<parameter ac:name="title">Optimization by renaming work 
file</parameter><rich-text-body>
+<p>The route above is ultra efficient as it avoids reading the entire file 
content into memory. It will download the remote file directly to a local file 
stream. The <code>java.io.File</code> handle is then used as the <a 
shape="rect" href="exchange.html">Exchange</a> body. The file producer 
leverages this fact and can work directly on the work file 
<code>java.io.File</code> handle and perform a <code>java.io.File.rename</code> 
to the target filename. As Camel knows it's a local work file, it can optimize 
and use a rename instead of a file copy, as the work file is meant to be 
deleted anyway. </p></rich-text-body> 
 
 <h3 id="JCIFS-Samples">Samples </h3>
 
 <p>In the sample below we set up Camel to download all the reports from the 
SMB/CIFS server once every hour (60 min) and store it as files on the local 
file system. </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[
+<parameter ac:name="">java</parameter><plain-text-body>
 protected RouteBuilder createRouteBuilder() throws Exception {
   return new RouteBuilder() {
     public void configure() throws Exception {
@@ -196,56 +170,41 @@ protected RouteBuilder createRouteBuilde
       // from the given server we poll (= download) all the files
       // from the public/reports folder and store this as files
       // in a local directory. Camel will use the filenames from the server
-      
from(&quot;smb://[email protected]/public/reports?password=secret&amp;delay=&quot;
 + delay)
-        .to(&quot;file://target/test-reports&quot;);
+      
from("smb://[email protected]/public/reports?password=secret&amp;delay="
 + delay)
+        .to("file://target/test-reports");
     }
   };
 }
 
-from(&quot;smb://[email protected]/sharename?password=secret&amp;amp;delay=60000&quot;)
-  .to(&quot;file://target/test-reports&quot;)
-]]></script>
-</div></div>
+from("smb://[email protected]/sharename?password=secret&amp;amp;delay=60000")
+  .to("file://target/test-reports")
+</plain-text-body>
 
 <p>And the route using Spring DSL: </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
+<parameter ac:name="">xml</parameter><plain-text-body> 
 &lt;route&gt; 
-  &lt;from 
uri=&quot;smb://[email protected]/sharename?password=secret&amp;amp;delay=60000&quot;/&gt;
 
-  &lt;to uri=&quot;file://target/test-reports&quot;/&gt; 
+  &lt;from 
uri="smb://[email protected]/sharename?password=secret&amp;amp;delay=60000"/&gt;
 
+  &lt;to uri="file://target/test-reports"/&gt; 
 &lt;/route&gt; 
-]]></script>
-</div></div> 
+</plain-text-body> 
 
 <h3 
id="JCIFS-Filterusingorg.apache.camel.component.file.GenericFileFilter">Filter 
using <code>org.apache.camel.component.file.GenericFileFilter</code> </h3>
 
 <p>Camel supports pluggable filtering strategies. This strategy it to use the 
build in <code>org.apache.camel.component.file.GenericFileFilter</code> in 
Java. You can then configure the endpoint with such a filter to skip certain 
filters before being processed. </p>
 
 <p>In the sample we have built our own filter that only accepts files starting 
with report in the filename. </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-public class MyFileFilter&lt;T&gt; implements GenericFileFilter&lt;T&gt; {
-
-    public boolean accept(GenericFile&lt;T&gt; file) {
-        // we only want report files 
-        return file.getFileName().startsWith(&quot;report&quot;);
-    }
-}
-]]></script>
-</div></div> 
+<plain-text-body>{snippet:id=e1|lang=java|url=camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpRemoteFileFilterTest.java}</plain-text-body>
 
 
 <p>And then we can configure our route using the <strong>filter</strong> 
attribute to reference our filter (using <code>#</code> notation) that we have 
defined in the spring XML file: </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ 
+<parameter ac:name="">xml</parameter><plain-text-body> 
 &lt;!-- define our sorter as a plain spring bean --&gt; 
-&lt;bean id=&quot;myFilter&quot; 
class=&quot;com.mycompany.MyFileFilter&quot;/&gt; 
+&lt;bean id="myFilter" class="com.mycompany.MyFileFilter"/&gt; 
 
 &lt;route&gt; 
-  &lt;from 
uri=&quot;smb://[email protected]/sharename?password=secret&amp;amp;filter=#myFilter&quot;/&gt;
 
-  &lt;to uri=&quot;bean:processInbox&quot;/&gt; 
+  &lt;from 
uri="smb://[email protected]/sharename?password=secret&amp;amp;filter=#myFilter"/&gt;
 
+  &lt;to uri="bean:processInbox"/&gt; 
 &lt;/route&gt; 
-]]></script>
-</div></div> 
+</plain-text-body> 
 
 
 <h3 id="JCIFS-FilteringusingANTpathmatcher">Filtering using ANT path matcher 
</h3>
@@ -258,32 +217,29 @@ The reason is that we leverage Spring's
 
 
 <p>The sample below demonstrates how to use it:  </p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
-&lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
-  &lt;template id=&quot;camelTemplate&quot;/&gt;
+<parameter ac:name="">xml</parameter><plain-text-body>
+&lt;camelContext xmlns="http://camel.apache.org/schema/spring"&gt;
+  &lt;template id="camelTemplate"/&gt;
 
   &lt;!-- use myFilter as filter to allow setting ANT paths for which files to 
scan for --&gt;
-  &lt;endpoint id=&quot;mySMBEndpoint&quot; 
uri=&quot;smb://[email protected]/sharename?password=secret&amp;amp;recursive=true&amp;amp;filter=#myAntFilter&quot;/&gt;
+  &lt;endpoint id="mySMBEndpoint" 
uri="smb://[email protected]/sharename?password=secret&amp;amp;recursive=true&amp;amp;filter=#myAntFilter"/&gt;
 
   &lt;route&gt;
-    &lt;from ref=&quot;mySMBEndpoint&quot;/&gt;
-    &lt;to uri=&quot;mock:result&quot;/&gt;
+    &lt;from ref="mySMBEndpoint"/&gt;
+    &lt;to uri="mock:result"/&gt;
   &lt;/route&gt;
 &lt;/camelContext&gt;
  
 &lt;!-- we use the AntPathMatcherRemoteFileFilter to use ant paths for 
includes and exclude --&gt;
-&lt;bean id=&quot;myAntFilter&quot; 
class=&quot;org.apache.camel.component.file.AntPathMatcherGenericFileFilter&quot;&gt;
+&lt;bean id="myAntFilter" 
class="org.apache.camel.component.file.AntPathMatcherGenericFileFilter"&gt;
   &lt;!-- include any files in the sub folder that has day in the name --&gt;
-  &lt;property name=&quot;includes&quot; 
value=&quot;**/subfolder/**/*day*&quot;/&gt;
+  &lt;property name="includes" value="**/subfolder/**/*day*"/&gt;
   &lt;!-- exclude all files with bad in name or .xml files. Use comma to 
separate multiple excludes --&gt;
-  &lt;property name=&quot;excludes&quot; 
value=&quot;**/*bad*,**/*.xml&quot;/&gt;
+  &lt;property name="excludes" value="**/*bad*,**/*.xml"/&gt;
 &lt;/bean&gt;
-]]></script>
-</div></div>
+</plain-text-body>
 
-<h3 id="JCIFS-SeeAlso">See Also</h3>
-<ul><li><a shape="rect" href="configuring-camel.html">Configuring 
Camel</a></li><li><a shape="rect" 
href="component.html">Component</a></li><li><a shape="rect" 
href="endpoint.html">Endpoint</a></li><li><a shape="rect" 
href="getting-started.html">Getting Started</a></li></ul> 
+<parameter ac:name=""><a shape="rect" href="endpoint-see-also.html">Endpoint 
See Also</a></parameter> 
 <ul class="alternate"><li><a shape="rect" 
href="file2.html">File2</a></li></ul></div>
         </td>
         <td valign="top">


Reply via email to