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