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 2009/03/11 09:53:56 UTC
svn commit: r752410 - in /camel/branches/camel-1.x/components:
camel-ftp/src/main/java/org/apache/camel/component/file/remote/
camel-ftp/src/test/java/org/apache/camel/component/file/remote/
camel-osgi/src/main/java/org/apache/camel/osgi/
Author: davsclaus
Date: Wed Mar 11 08:53:56 2009
New Revision: 752410
URL: http://svn.apache.org/viewvc?rev=752410&view=rev
Log:
CAMEL-1448: FTP component now delete/move file AFTER it have processed it.
Added:
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDoNotDeleteFileIfProcessFailTest.java
- copied, changed from r752405, camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java
Removed:
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerDeleteNoWritePermissionTest.java
Modified:
camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePostfixTest.java
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePrefixTest.java
camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFileTest.java
camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java
Modified: camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpConsumer.java Wed Mar 11 08:53:56 2009
@@ -206,47 +206,56 @@
exchange.getIn().setHeader(FileComponent.HEADER_FILE_NAME, relativePath);
}
- if (deleteFile) {
- // delete file after consuming
- if (log.isDebugEnabled()) {
- log.debug("Deleteing file: " + ftpFile.getName() + " from: " + remoteServer());
- }
- boolean deleted = client.deleteFile(ftpFile.getName());
- if (!deleted) {
- String message = "Can not delete file: " + ftpFile.getName() + " from: " + remoteServer();
- throw new FtpOperationFailedException(client.getReplyCode(), client.getReplyString(), message);
- }
- } else if (isMoveFile()) {
- String fromName = ftpFile.getName();
- String toName = getMoveFileName(fromName, exchange);
+
+ // all success so lets process it
+ getProcessor().process(exchange);
+
+ if (exchange.isFailed()) {
if (log.isDebugEnabled()) {
- log.debug("Moving file: " + fromName + " to: " + toName);
+ log.debug("Processing of exchange failed, so cannot do FTP post command such as move or delete: " + exchange);
}
+ } else {
+ // after processing then do post command such as delete or move
+ if (deleteFile) {
+ // delete file after consuming
+ if (log.isDebugEnabled()) {
+ log.debug("Deleteing file: " + ftpFile.getName() + " from: " + remoteServer());
+ }
+ boolean deleted = client.deleteFile(ftpFile.getName());
+ if (!deleted) {
+ String message = "Can not delete file: " + ftpFile.getName() + " from: " + remoteServer();
+ throw new FtpOperationFailedException(client.getReplyCode(), client.getReplyString(), message);
+ }
+ } else if (isMoveFile()) {
+ String fromName = ftpFile.getName();
+ String toName = getMoveFileName(fromName, exchange);
+ if (log.isDebugEnabled()) {
+ log.debug("Moving file: " + fromName + " to: " + toName);
+ }
- // delete any existing file
- boolean deleted = client.deleteFile(toName);
- if (!deleted) {
- // if we could not delete any existing file then maybe the folder is missing
- // build folder if needed
- int lastPathIndex = toName.lastIndexOf('/');
- if (lastPathIndex != -1) {
- String directory = toName.substring(0, lastPathIndex);
- if (!FtpUtils.buildDirectory(client, directory)) {
- log.warn("Can not build directory: " + directory + " (maybe because of denied permissions)");
+ // delete any existing file
+ boolean deleted = client.deleteFile(toName);
+ if (!deleted) {
+ // if we could not delete any existing file then maybe the folder is missing
+ // build folder if needed
+ int lastPathIndex = toName.lastIndexOf('/');
+ if (lastPathIndex != -1) {
+ String directory = toName.substring(0, lastPathIndex);
+ if (!FtpUtils.buildDirectory(client, directory)) {
+ log.warn("Can not build directory: " + directory + " (maybe because of denied permissions)");
+ }
}
}
- }
- // try to rename
- boolean success = client.rename(fromName, toName);
- if (!success) {
- String message = "Can not move file: " + fromName + " to: " + toName;
- throw new FtpOperationFailedException(client.getReplyCode(), client.getReplyString(), message);
+ // try to rename
+ boolean success = client.rename(fromName, toName);
+ if (!success) {
+ String message = "Can not move file: " + fromName + " to: " + toName;
+ throw new FtpOperationFailedException(client.getReplyCode(), client.getReplyString(), message);
+ }
}
}
- // all success so lets process it
- getProcessor().process(exchange);
}
}
Modified: camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpConsumer.java Wed Mar 11 08:53:56 2009
@@ -202,43 +202,51 @@
exchange.getIn().setHeader(FileComponent.HEADER_FILE_NAME, relativePath);
}
- if (deleteFile) {
- // delete file after consuming
- if (log.isDebugEnabled()) {
- log.debug("Deleteing file: " + sftpFile.getFilename() + " from: " + remoteServer());
- }
- deleteFile(sftpFile.getFilename());
- } else if (isMoveFile()) {
- String fromName = sftpFile.getFilename();
- String toName = getMoveFileName(fromName, exchange);
+ // all success so lets process it
+ getProcessor().process(exchange);
+
+ if (exchange.isFailed()) {
if (log.isDebugEnabled()) {
- log.debug("Moving file: " + fromName + " to: " + toName);
+ log.debug("Processing of exchange failed, so cannot do FTP post command such as move or delete: " + exchange);
}
+ } else {
+ // after processing then do post command such as delete or move
+ if (deleteFile) {
+ // delete file after consuming
+ if (log.isDebugEnabled()) {
+ log.debug("Deleteing file: " + sftpFile.getFilename() + " from: " + remoteServer());
+ }
+ deleteFile(sftpFile.getFilename());
+ } else if (isMoveFile()) {
+ String fromName = sftpFile.getFilename();
+ String toName = getMoveFileName(fromName, exchange);
+ if (log.isDebugEnabled()) {
+ log.debug("Moving file: " + fromName + " to: " + toName);
+ }
- // delete any existing file
- boolean deleted = deleteFile(toName);
- if (!deleted) {
- // if we could not delete any existing file then maybe the folder is missing
- // build folder if needed
- int lastPathIndex = toName.lastIndexOf('/');
- if (lastPathIndex != -1) {
- String directory = toName.substring(0, lastPathIndex);
- if (!SftpUtils.buildDirectory(channel, directory)) {
- log.warn("Can not build directory: " + directory + " (maybe because of denied permissions)");
+ // delete any existing file
+ boolean deleted = deleteFile(toName);
+ if (!deleted) {
+ // if we could not delete any existing file then maybe the folder is missing
+ // build folder if needed
+ int lastPathIndex = toName.lastIndexOf('/');
+ if (lastPathIndex != -1) {
+ String directory = toName.substring(0, lastPathIndex);
+ if (!SftpUtils.buildDirectory(channel, directory)) {
+ log.warn("Can not build directory: " + directory + " (maybe because of denied permissions)");
+ }
}
}
- }
- // try to rename
- try {
- channel.rename(fromName, toName);
- } catch (SftpException e) {
- // ignore just log a warning
- log.warn("Can not move file: " + fromName + " to: " + toName);
+ // try to rename
+ try {
+ channel.rename(fromName, toName);
+ } catch (SftpException e) {
+ // ignore just log a warning
+ log.warn("Can not move file: " + fromName + " to: " + toName);
+ }
}
}
-
- getProcessor().process(exchange);
}
}
Modified: camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java Wed Mar 11 08:53:56 2009
@@ -68,6 +68,9 @@
mock.assertIsSatisfied();
+ // give time to delete file
+ Thread.sleep(200);
+
// assert the file is deleted
File file = new File("./res/home/deletefile/hello.txt");
file = file.getAbsoluteFile();
Copied: camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDoNotDeleteFileIfProcessFailTest.java (from r752405, camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java)
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDoNotDeleteFileIfProcessFailTest.java?p2=camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDoNotDeleteFileIfProcessFailTest.java&p1=camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java&r1=752405&r2=752410&rev=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDeleteFileTest.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpDoNotDeleteFileIfProcessFailTest.java Wed Mar 11 08:53:56 2009
@@ -20,6 +20,7 @@
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.file.FileComponent;
@@ -28,9 +29,9 @@
/**
* Unit test to test consumer.deleteFile option.
*/
-public class FromFtpDeleteFileTest extends FtpServerTestSupport {
+public class FromFtpDoNotDeleteFileIfProcessFailTest extends FtpServerTestSupport {
- private int port = 20022;
+ private int port = 20055;
private String ftpUrl = "ftp://admin@localhost:" + port + "/deletefile?password=admin&binary=false&consumer.deleteFile=true";
public int getPort() {
@@ -48,7 +49,7 @@
// test that we can pool and store as a local file
Endpoint endpoint = context.getEndpoint(ftpUrl);
Exchange exchange = endpoint.createExchange();
- exchange.getIn().setBody("Hello World this file will be deleted");
+ exchange.getIn().setBody("Hello World this file will NOT be deleted");
exchange.getIn().setHeader(FileComponent.HEADER_FILE_NAME, "hello.txt");
Producer producer = endpoint.createProducer();
producer.start();
@@ -62,24 +63,33 @@
}
public void testPollFileAndShouldBeDeleted() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
+ MockEndpoint mock = getMockEndpoint("mock:error");
mock.expectedMessageCount(1);
- mock.expectedBodiesReceived("Hello World this file will be deleted");
+ mock.expectedBodiesReceived("Hello World this file will NOT be deleted");
mock.assertIsSatisfied();
+ // give time to NOT delete file
+ Thread.sleep(200);
+
// assert the file is deleted
File file = new File("./res/home/deletefile/hello.txt");
file = file.getAbsoluteFile();
- assertFalse("The file should have been deleted", file.exists());
+ assertTrue("The file should NOT have been deleted", file.exists());
}
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
- from(ftpUrl).to("mock:result");
+ errorHandler(deadLetterChannel("mock:error").maximumRedeliveries(2).initialRedeliveryDelay(100));
+
+ from(ftpUrl).process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ throw new IllegalArgumentException("Forced by unittest");
+ }
+ });
}
};
}
-}
+}
\ No newline at end of file
Modified: camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePostfixTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePostfixTest.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePostfixTest.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePostfixTest.java Wed Mar 11 08:53:56 2009
@@ -70,6 +70,9 @@
mock.assertIsSatisfied();
+ // give time to delete file
+ Thread.sleep(200);
+
// assert the file is deleted
File file = new File("./res/home/movefile/hello.txt.old");
file = file.getAbsoluteFile();
Modified: camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePrefixTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePrefixTest.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePrefixTest.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFilePrefixTest.java Wed Mar 11 08:53:56 2009
@@ -70,6 +70,9 @@
mock.assertIsSatisfied();
+ // give time to delete file
+ Thread.sleep(200);
+
// assert the file is deleted
File file = new File("./res/home/movefile/done/hello.txt");
file = file.getAbsoluteFile();
Modified: camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFileTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFileTest.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFileTest.java (original)
+++ camel/branches/camel-1.x/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FromFtpMoveFileTest.java Wed Mar 11 08:53:56 2009
@@ -70,6 +70,9 @@
mock.assertIsSatisfied();
+ // give time to move file
+ Thread.sleep(200);
+
// assert the file is deleted
File file = new File("./res/home/movefile/done/sub2/hello.txt.old");
file = file.getAbsoluteFile();
Modified: camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java?rev=752410&r1=752409&r2=752410&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java (original)
+++ camel/branches/camel-1.x/components/camel-osgi/src/main/java/org/apache/camel/osgi/OsgiLanguageResolver.java Wed Mar 11 08:53:56 2009
@@ -17,11 +17,10 @@
package org.apache.camel.osgi;
import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.NoFactoryAvailableException;
import org.apache.camel.NoSuchLanguageException;
import org.apache.camel.spi.Language;
import org.apache.camel.spi.LanguageResolver;
+import org.apache.camel.util.NoFactoryAvailableException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -83,8 +82,6 @@
throw new NoSuchLanguageException(name);
}
-
-
protected Class getLanaguage(String name) throws Exception {
return Activator.getLanguage(name);
}