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 2011/01/30 15:09:00 UTC

svn commit: r1065278 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/util/ camel-core/src/test/java/org/apache/camel/util/ components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/

Author: davsclaus
Date: Sun Jan 30 14:09:00 2011
New Revision: 1065278

URL: http://svn.apache.org/viewvc?rev=1065278&view=rev
Log:
CAMEL-3595: Improved existFile check to cater for / and \ mixed separators in file names when compating.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.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/SftpOperations.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=1065278&r1=1065277&r2=1065278&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 Sun Jan 30 14:09:00 2011
@@ -141,10 +141,10 @@ public final class FileUtil {
         if (name == null) {
             return null;
         }
-        int pos = name.lastIndexOf('/');
-        if (pos == -1) {
-            pos = name.lastIndexOf(File.separator);
-        }
+        int posUnix = name.lastIndexOf('/');
+        int posWin = name.lastIndexOf('\\');
+        int pos = Math.max(posUnix, posWin);
+
         if (pos != -1) {
             return name.substring(pos + 1);
         }
@@ -169,10 +169,11 @@ public final class FileUtil {
         if (name == null) {
             return null;
         }
-        int pos = name.lastIndexOf('/');
-        if (pos == -1) {
-            pos = name.lastIndexOf(File.separator);
-        }
+
+        int posUnix = name.lastIndexOf('/');
+        int posWin = name.lastIndexOf('\\');
+        int pos = Math.max(posUnix, posWin);
+
         if (pos > 0) {
             return name.substring(0, pos);
         } else if (pos == 0) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java?rev=1065278&r1=1065277&r2=1065278&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java Sun Jan 30 14:09:00 2011
@@ -86,6 +86,16 @@ public class FileUtilTest extends TestCa
         assertEquals("bar", FileUtil.stripPath("/foo/bar"));
     }
 
+    public void testStripPathWithMixedSeparators() {
+        assertEquals(null, FileUtil.stripPath(null));
+        assertEquals("", FileUtil.stripPath("/"));
+        assertEquals("foo.xml", FileUtil.stripPath("/foo.xml"));
+        assertEquals("foo", FileUtil.stripPath("foo"));
+        assertEquals("baz", FileUtil.stripPath("foo/bar\\baz"));
+        assertEquals("bar", FileUtil.stripPath("\\foo\\bar"));
+        assertEquals("baz", FileUtil.stripPath("/foo\\bar/baz"));
+    }
+
     public void testStripExt() {
         assertEquals(null, FileUtil.stripExt(null));
         assertEquals("foo", FileUtil.stripExt("foo"));
@@ -104,6 +114,17 @@ public class FileUtilTest extends TestCa
         assertEquals("/bar", FileUtil.onlyPath("/bar/foo.xml"));
     }
 
+    public void testOnlyPathWithMixedSeparators() {
+        assertEquals(null, FileUtil.onlyPath(null));
+        assertEquals(null, FileUtil.onlyPath("foo"));
+        assertEquals(null, FileUtil.onlyPath("foo.xml"));
+        assertEquals("foo", FileUtil.onlyPath("foo/bar.xml"));
+        assertEquals("/foo", FileUtil.onlyPath("/foo\\bar.xml"));
+        assertEquals("\\foo\\bar", FileUtil.onlyPath("\\foo\\bar/baz.xml"));
+        assertEquals("\\", FileUtil.onlyPath("\\foo.xml"));
+        assertEquals("/bar", FileUtil.onlyPath("/bar\\foo.xml"));
+    }
+
     public void testCompactPath() {
         assertEquals(null, FileUtil.compactPath(null));
         if (FileUtil.isWindows()) {

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=1065278&r1=1065277&r2=1065278&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 Sun Jan 30 14:09:00 2011
@@ -528,7 +528,11 @@ public class FtpOperations implements Re
                 return false;
             }
             for (String existing : names) {
-                if (existing.equals(onlyName)) {
+                if (log.isTraceEnabled()) {
+                    log.trace("Existing file: " + existing + ", target file: " + name);
+                }
+                existing = FileUtil.stripPath(existing);
+                if (existing != null && existing.equals(onlyName)) {
                     return true;
                 }
             }

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=1065278&r1=1065277&r2=1065278&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 Sun Jan 30 14:09:00 2011
@@ -706,7 +706,12 @@ public class SftpOperations implements R
             }
             for (Object file : files) {
                 ChannelSftp.LsEntry entry = (ChannelSftp.LsEntry) file;
-                if (entry.getFilename().equals(onlyName)) {
+                String existing = entry.getFilename();
+                if (LOG.isTraceEnabled()) {
+                    LOG.trace("Existing file: " + existing + ", target file: " + name);
+                }
+                existing = FileUtil.stripPath(existing);
+                if (existing != null && existing.equals(onlyName)) {
                     return true;
                 }
             }