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) {