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/07 11:21:41 UTC
svn commit: r751237 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/util/
components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/
components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/
Author: davsclaus
Date: Sat Mar 7 10:21:41 2009
New Revision: 751237
URL: http://svn.apache.org/viewvc?rev=751237&view=rev
Log:
CAMEL-1428: SFTP problems
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConfiguration.java
camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java Sat Mar 7 10:21:41 2009
@@ -308,4 +308,11 @@
return results;
}
+ public static String stripLeadingSeparator(String name) {
+ if (name.startsWith("/") || name.startsWith(File.separator)) {
+ return name.substring(1);
+ }
+ return name;
+ }
+
}
Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java Sat Mar 7 10:21:41 2009
@@ -119,6 +119,9 @@
}
public boolean deleteFile(FTPClient client, String name) throws GenericFileOperationFailedException {
+ // for FTP we can not use leading / for refering to files
+ name = FileUtil.stripLeadingSeparator(name);
+
if (LOG.isDebugEnabled()) {
LOG.debug("Deleteing file: " + name);
}
@@ -130,6 +133,10 @@
}
public boolean renameFile(String from, String to) throws GenericFileOperationFailedException {
+ // for FTP we can not use leading / for refering to files
+ from = FileUtil.stripLeadingSeparator(from);
+ to = FileUtil.stripLeadingSeparator(to);
+
if (LOG.isDebugEnabled()) {
LOG.debug("Renaming file: " + from + " to: " + to);
}
@@ -141,6 +148,9 @@
}
public boolean buildDirectory(String directory, boolean absolute) throws GenericFileOperationFailedException {
+ // for FTP we can not use leading / for refering to files
+ directory = FileUtil.stripLeadingSeparator(directory);
+
if (LOG.isTraceEnabled()) {
LOG.trace("Building directory: " + directory);
}
Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConfiguration.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConfiguration.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/RemoteFileConfiguration.java Sat Mar 7 10:21:41 2009
@@ -19,6 +19,7 @@
import java.net.URI;
import org.apache.camel.component.file.GenericFileConfiguration;
+import org.apache.camel.util.FileUtil;
/**
* Configuration of the FTP server
@@ -60,9 +61,7 @@
super.setDirectory(directory);
// for FTP we must not start with a / root, so skip it if its there
- if (getDirectory().startsWith("/")) {
- setDirectory(getDirectory().substring(1));
- }
+ super.setDirectory(FileUtil.stripLeadingSeparator(getDirectory()));
}
/**
Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpOperations.java Sat Mar 7 10:21:41 2009
@@ -39,6 +39,7 @@
import org.apache.camel.component.file.GenericFileOperationFailedException;
import org.apache.camel.util.ExchangeHelper;
import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.FileUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import static org.apache.camel.util.ObjectHelper.isNotEmpty;
@@ -144,6 +145,9 @@
}
public boolean deleteFile(String name) throws GenericFileOperationFailedException {
+ // for FTP we can not use leading / for refering to files
+ name = FileUtil.stripLeadingSeparator(name);
+
if (LOG.isDebugEnabled()) {
LOG.debug("Deleteing file: " + name);
}
@@ -156,6 +160,10 @@
}
public boolean renameFile(String from, String to) throws GenericFileOperationFailedException {
+ // for FTP we can not use leading / for refering to files
+ from = FileUtil.stripLeadingSeparator(from);
+ to = FileUtil.stripLeadingSeparator(to);
+
if (LOG.isDebugEnabled()) {
LOG.debug("Renaming file: " + from + " to: " + to);
}
@@ -168,8 +176,10 @@
}
public boolean buildDirectory(String directory, boolean absolute) throws GenericFileOperationFailedException {
- // ignore absolute as all dirs are relative with FTP
+ // for FTP we can not use leading / for refering to files
+ directory = FileUtil.stripLeadingSeparator(directory);
+ // ignore absolute as all dirs are relative with FTP
boolean success = false;
String originalDirectory = getCurrentDirectory();
Modified: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java (original)
+++ camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerMultipleDirectoriesTest.java Sat Mar 7 10:21:41 2009
@@ -49,19 +49,19 @@
RemoteFileExchange exchange = (RemoteFileExchange) mock.getExchanges().get(0);
RemoteFile file = (RemoteFile) exchange.getGenericFile();
- assertDirectoryEquals("/multidir/bye.txt", file.getAbsoluteFileName());
+ assertDirectoryEquals("multidir/bye.txt", file.getAbsoluteFileName());
assertDirectoryEquals("bye.txt", file.getRelativeFileName());
assertEquals("bye.txt", file.getFileName());
exchange = (RemoteFileExchange) mock.getExchanges().get(1);
file = (RemoteFile) exchange.getGenericFile();
- assertDirectoryEquals("/multidir/sub/hello.txt", file.getAbsoluteFileName());
+ assertDirectoryEquals("multidir/sub/hello.txt", file.getAbsoluteFileName());
assertDirectoryEquals("sub/hello.txt", file.getRelativeFileName());
assertEquals("hello.txt", file.getFileName());
exchange = (RemoteFileExchange) mock.getExchanges().get(2);
file = (RemoteFile) exchange.getGenericFile();
- assertDirectoryEquals("/multidir/sub/sub2/godday.txt", file.getAbsoluteFileName());
+ assertDirectoryEquals("multidir/sub/sub2/godday.txt", file.getAbsoluteFileName());
assertDirectoryEquals("sub/sub2/godday.txt", file.getRelativeFileName());
assertEquals("godday.txt", file.getFileName());
}
Modified: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java?rev=751237&r1=751236&r2=751237&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java (original)
+++ camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/UriConfigurationTest.java Sat Mar 7 10:21:41 2009
@@ -90,17 +90,17 @@
assertRemoteFileEndpointFile("ftp://hostname/foo", "foo");
assertRemoteFileEndpointFile("ftp://hostname/", "");
assertRemoteFileEndpointFile("ftp://hostname", "");
- assertRemoteFileEndpointFile("ftp://hostname//", "");
- assertRemoteFileEndpointFile("ftp://hostname//foo/bar", "foo/bar");
- assertRemoteFileEndpointFile("sftp://user@hostname:123//foo/bar?password=secret", "foo/bar");
+ assertRemoteFileEndpointFile("ftp://hostname//", "/");
+ assertRemoteFileEndpointFile("ftp://hostname//foo/bar", "/foo/bar");
+ assertRemoteFileEndpointFile("sftp://user@hostname:123//foo/bar?password=secret", "/foo/bar");
assertRemoteFileEndpointFile("sftp://user@hostname:123?password=secret", "");
assertRemoteFileEndpointFile("sftp://hostname/foo/bar", "foo/bar");
assertRemoteFileEndpointFile("sftp://hostname/foo/", "foo/");
assertRemoteFileEndpointFile("sftp://hostname/foo", "foo");
assertRemoteFileEndpointFile("sftp://hostname/", "");
assertRemoteFileEndpointFile("sftp://hostname", "");
- assertRemoteFileEndpointFile("sftp://hostname//", "");
- assertRemoteFileEndpointFile("sftp://hostname//foo/bar", "foo/bar");
+ assertRemoteFileEndpointFile("sftp://hostname//", "/");
+ assertRemoteFileEndpointFile("sftp://hostname//foo/bar", "/foo/bar");
}
private void assertRemoteFileEndpointFile(String endpointUri, String expectedFile) {