You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/12/17 10:12:45 UTC

svn commit: r1422808 - in /camel/branches/camel-2.10.x: ./ camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java

Author: davsclaus
Date: Mon Dec 17 09:12:44 2012
New Revision: 1422808

URL: http://svn.apache.org/viewvc?rev=1422808&view=rev
Log:
CAMEL-5883: File/ftp consumer - When using done file name then delete the file when batch is complete.

Modified:
    camel/branches/camel-2.10.x/   (props changed)
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java
    camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1422807

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java?rev=1422808&r1=1422807&r2=1422808&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/component/file/GenericFileOnCompletion.java Mon Dec 17 09:12:44 2012
@@ -109,8 +109,10 @@ public class GenericFileOnCompletion<T> 
             endpoint.getIdempotentRepository().add(absoluteFileName);
         }
 
+        // must be last in batch to delete the done file name
         // delete done file if used (and not noop=true)
-        if (endpoint.getDoneFileName() != null && !endpoint.isNoop()) {
+        boolean complete = exchange.getProperty(Exchange.BATCH_COMPLETE, false, Boolean.class);
+        if (endpoint.getDoneFileName() != null && !endpoint.isNoop() && complete) {
             // done file must be in same path as the original input file
             String doneFileName = endpoint.createDoneFileName(absoluteFileName);
             ObjectHelper.notEmpty(doneFileName, "doneFileName", endpoint);

Modified: camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java?rev=1422808&r1=1422807&r2=1422808&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/component/file/FileConsumeDoneFileIssueTest.java Mon Dec 17 09:12:44 2012
@@ -16,8 +16,11 @@
  */
 package org.apache.camel.component.file;
 
+import java.io.File;
+
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.builder.NotifyBuilder;
 import org.apache.camel.builder.RouteBuilder;
 
 /**
@@ -26,6 +29,8 @@ import org.apache.camel.builder.RouteBui
 public class FileConsumeDoneFileIssueTest extends ContextTestSupport {
 
     public void testFileConsumeDoneFileIssue() throws Exception {
+        NotifyBuilder notify = new NotifyBuilder(context).whenDone(5).create();
+
         template.sendBodyAndHeader("file:target/done", "A", Exchange.FILE_NAME, "foo-a.txt");
         template.sendBodyAndHeader("file:target/done", "B", Exchange.FILE_NAME, "foo-b.txt");
         template.sendBodyAndHeader("file:target/done", "C", Exchange.FILE_NAME, "foo-c.txt");
@@ -33,11 +38,19 @@ public class FileConsumeDoneFileIssueTes
         template.sendBodyAndHeader("file:target/done", "E", Exchange.FILE_NAME, "foo-e.txt");
         template.sendBodyAndHeader("file:target/done", "E", Exchange.FILE_NAME, "foo.done");
 
+        assertTrue("Done file should exists", new File("target/done/foo.done").exists());
+
         getMockEndpoint("mock:result").expectedBodiesReceivedInAnyOrder("A", "B", "C", "D", "E");
 
         context.startRoute("foo");
 
         assertMockEndpointsSatisfied();
+        assertTrue(notify.matchesMockWaitTime());
+
+        Thread.sleep(250);
+
+        // the done file should be deleted
+        assertFalse("Done file should be deleted", new File("target/done/foo.done").exists());
     }
 
     @Override