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; } }