You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2014/03/07 15:19:23 UTC

svn commit: r900457 - in /websites/production/camel/content: aggregator2.html cache/main.pageCache file2.html

Author: buildbot
Date: Fri Mar  7 14:19:23 2014
New Revision: 900457

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/aggregator2.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/file2.html

Modified: websites/production/camel/content/aggregator2.html
==============================================================================
--- websites/production/camel/content/aggregator2.html (original)
+++ websites/production/camel/content/aggregator2.html Fri Mar  7 14:19:23 2014
@@ -110,18 +110,18 @@ class StringAggregationStrategy implemen
 class ArrayListAggregationStrategy implements AggregationStrategy {
 
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-	Object newBody = newExchange.getIn().getBody();
-	ArrayList<Object> list = null;
+		Object newBody = newExchange.getIn().getBody();
+		ArrayList<Object> list = null;
         if (oldExchange == null) {
-		list = new ArrayList<Object>();
-		list.add(newBody);
-		newExchange.getIn().setBody(list);
-		return newExchange;
+			list = new ArrayList<Object>();
+			list.add(newBody);
+			newExchange.getIn().setBody(list);
+			return newExchange;
         } else {
 	        list = oldExchange.getIn().getBody(ArrayList.class);
-		list.add(newBody);
-		return oldExchange;
-	}
+			list.add(newBody);
+			return oldExchange;
+		}
     }
 }
 ]]></script>
@@ -353,7 +353,7 @@ public final class MyListOfNumbersStrate
                             <p>You can use POJOs as AggregationStrategy with the other <a shape="rect" href="eip.html">EIP</a>s that supports aggregation, such as <a shape="rect" href="splitter.html">Splitter</a>, <a shape="rect" href="recipient-list.html">Recipient List</a>, etc.</p>
                     </div>
     </div>
-<p>To use the <code>AggregationStrategy</code> you had to implement the <code>org.apache.camel.processor.aggregate.AggregationStrategy</code> interface, which means your logic would be tied to the Camel API. From <strong>Camel 2.12</strong> onwards you can use a POJO for the logic and let Camel adapt to your POJO. To use a POJO a convention must be followed:</p><ul class="alternate"><li>there must be a public method to use</li><li>the method must not be void</li><li>the method can be static or non-static</li><li>the method must have 2 or more parameters</li><li>the parameters is paired so the first 50% is applied to the <code>oldExchnage</code> and the reminder 50% is for the <code>newExchange</code></li><li>.. meaning that there must be an equal number of parameters, eg 2, 4, 6 etc.</li></ul><p>The paired methods is expected to be ordered as follows:</p><ul class="alternate"><li>the first parameter is the message body</li><li>the 2nd parameter is a Map of the headers</li><li>the 3r
 d parameter is a Map of the Exchange properties</li></ul><p>This convention is best explained with some examples.</p><p>In the method below, we have only 2 parameters, so the 1st parameter is the body of the <code>oldExchange</code>, and the 2nd is paired to the body of the <code>newExchange</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>To use the <code>AggregationStrategy</code> you had to implement the <code>org.apache.camel.processor.aggregate.AggregationStrategy</code> interface, which means your logic would be tied to the Camel API. From <strong>Camel 2.12</strong> onwards you can use a POJO for the logic and let Camel adapt to your POJO. To use a POJO a convention must be followed:</p><ul class="alternate"><li>there must be a public method to use</li><li>the method must not be void</li><li>the method can be static or non-static</li><li>the method must have 2 or more parameters</li><li>the parameters is paired so the first 50% is applied to the <code>oldExchange</code> and the reminder 50% is for the <code>newExchange</code></li><li>.. meaning that there must be an equal number of parameters, eg 2, 4, 6 etc.</li></ul><p>The paired methods is expected to be ordered as follows:</p><ul class="alternate"><li>the first parameter is the message body</li><li>the 2nd parameter is a Map of the headers</li><li>the 3r
 d parameter is a Map of the Exchange properties</li></ul><p>This convention is best explained with some examples.</p><p>In the method below, we have only 2 parameters, so the 1st parameter is the body of the <code>oldExchange</code>, and the 2nd is paired to the body of the <code>newExchange</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[public String append(String existing, String next) {
   return existing + next;
 }

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

Modified: websites/production/camel/content/file2.html
==============================================================================
--- websites/production/camel/content/file2.html (original)
+++ websites/production/camel/content/file2.html Fri Mar  7 14:19:23 2014
@@ -296,7 +296,7 @@ private static class ProcessReport imple
 }
 ]]></script>
 </div></div><h4 id="File2-WritetosubdirectoryusingExchange.FILE_NAME">Write to subdirectory using <code>Exchange.FILE_NAME</code></h4><p>Using a single route, it is possible to write a file to any number of subdirectories. If you have a route setup as such:</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[  &lt;route&gt;
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;route&gt;
     &lt;from uri=&quot;bean:myBean&quot;/&gt;
     &lt;to uri=&quot;file:/rootDirectory&quot;/&gt;
   &lt;/route&gt;
@@ -305,7 +305,11 @@ private static class ProcessReport imple
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[Exchange.FILE_NAME = hello.txt =&gt; /rootDirectory/hello.txt
 Exchange.FILE_NAME = foo/bye.txt =&gt; /rootDirectory/foo/bye.txt
 ]]></script>
-</div></div><p>This allows you to have a single route to write files to multiple destinations.</p><h4 id="File2-Usingexpressionforfilenames">Using expression for filenames</h4><p>In this sample we want to move consumed files to a backup folder using today's date as a sub-folder name:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>This allows you to have a single route to write files to multiple destinations.</p><h4 id="File2-Writingfilethroughthetemporarydirectoryrelativetothefinaldestination">Writing file through the temporary directory relative to the final destination</h4><p>Sometime you need to temporarily write the files to some directory relative to the destination directory. Such situation usually happens when some external process with limited filtering capabilities is reading from the directory you are writing to. In the example below files will be written to the&#160; <code>/var/myapp/filesInProgress</code> directory and after data transfer is done, they will be atomically moved to the<code>&#160;/var/myapp/finalDirectory </code>directory.</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[from(&quot;direct:start&quot;).
+  to(&quot;file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/&quot;);
+]]></script>
+</div></div><h4 id="File2-Usingexpressionforfilenames">Using expression for filenames</h4><p>In this sample we want to move consumed files to a backup folder using today's date as a sub-folder name:</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[from(&quot;file://inbox?move=backup/${date:now:yyyyMMdd}/${file:name}&quot;).to(&quot;...&quot;);
 ]]></script>
 </div></div><p>See <a shape="rect" href="file-language.html">File Language</a> for more samples.</p><h3 id="File2-Avoidingreadingthesamefilemorethanonce(idempotentconsumer)">Avoiding reading the same file more than once (idempotent consumer)</h3><p>Camel supports <a shape="rect" href="idempotent-consumer.html">Idempotent Consumer</a> directly within the component so it will skip already processed files. This feature can be enabled by setting the <code>idempotent=true</code> option.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">