You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2012/09/23 17:31:55 UTC

svn commit: r1389080 - in /camel/branches/camel-2.9.x/camel-core/src: main/java/org/apache/camel/util/FileUtil.java test/java/org/apache/camel/util/FileUtilTest.java

Author: cmueller
Date: Sun Sep 23 15:31:55 2012
New Revision: 1389080

URL: http://svn.apache.org/viewvc?rev=1389080&view=rev
Log:
fixed a regression in camel-ftp which was introduced with rev 1388906

Modified:
    camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
    camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java

Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java?rev=1389080&r1=1389079&r2=1389080&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/util/FileUtil.java Sun Sep 23 15:31:55 2012
@@ -218,6 +218,9 @@ public final class FileUtil {
         // preserve ending slash if given in input path
         boolean endsWithSlash = path.endsWith("/") || path.endsWith("\\");
 
+        // preserve starting slash if given in input path
+        boolean startsWithSlash = path.startsWith("/") || path.startsWith("\\");
+        
         Stack<String> stack = new Stack<String>();
         
         String separatorRegex = File.separator;
@@ -230,7 +233,7 @@ public final class FileUtil {
                 // only pop if there is a previous path, which is not a ".." path either
                 stack.pop();
             } else if (part.equals(".") || part.isEmpty()) {
-                // do nothing because we don't want a path like foo/./bar
+                // do nothing because we don't want a path like foo/./bar or foo//bar
             } else {
                 stack.push(part);
             }
@@ -238,6 +241,11 @@ public final class FileUtil {
 
         // build path based on stack
         StringBuilder sb = new StringBuilder();
+        
+        if (startsWithSlash) {
+            sb.append(File.separator);
+        }
+        
         for (Iterator<String> it = stack.iterator(); it.hasNext();) {
             sb.append(it.next());
             if (it.hasNext()) {

Modified: camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java?rev=1389080&r1=1389079&r2=1389080&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/util/FileUtilTest.java Sun Sep 23 15:31:55 2012
@@ -146,6 +146,7 @@ public class FileUtilTest extends TestCa
             assertEquals("..\\foo\\bar", FileUtil.compactPath("..\\foo\\bar"));
             assertEquals("foo\\bar\\baz", FileUtil.compactPath("foo\\bar\\.\\baz"));
             assertEquals("foo\\bar\\baz", FileUtil.compactPath("foo\\bar\\\\baz"));
+            assertEquals("\\foo\\bar\\baz", FileUtil.compactPath("\\foo\\bar\\baz"));
         } else {
             assertEquals("../foo", FileUtil.compactPath("../foo"));
             assertEquals("../../foo", FileUtil.compactPath("../../foo"));
@@ -160,6 +161,7 @@ public class FileUtilTest extends TestCa
             assertEquals("../foo/bar", FileUtil.compactPath("../foo/bar"));
             assertEquals("foo/bar/baz", FileUtil.compactPath("foo/bar/./baz"));
             assertEquals("foo/bar/baz", FileUtil.compactPath("foo/bar//baz"));
+            assertEquals("/foo/bar/baz", FileUtil.compactPath("/foo/bar/baz"));
         }
     }