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