Author: joakime
Date: Sat Aug 25 20:16:11 2007
New Revision: 569758

URL: http://svn.apache.org/viewvc?rev=569758&view=rev
Log:
Fixing subtle bug in PathUtil.toRelative() encountered during Metadata work.

Modified:
    
maven/archiva/trunk/archiva-base/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/PathUtil.java
    
maven/archiva/trunk/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/PathUtilTest.java

Modified: 
maven/archiva/trunk/archiva-base/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/PathUtil.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/PathUtil.java?rev=569758&r1=569757&r2=569758&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/PathUtil.java
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/PathUtil.java
 Sat Aug 25 20:16:11 2007
@@ -39,7 +39,7 @@
         {
             return path;
         }
-        
+
         return toUrl( new File( path ) );
     }
 
@@ -61,13 +61,32 @@
         }
     }
 
+    /**
+     * Given a basedir and a child file, return the relative path to the child.
+     * 
+     * @param basedir the basedir.
+     * @param file the file to get the relative path for.
+     * @return the relative path to the child. (NOTE: this path will NOT start 
with a [EMAIL PROTECTED] File#separator} character)
+     */
     public static String getRelative( String basedir, File file )
     {
         return getRelative( basedir, file.getAbsolutePath() );
     }
 
+    /**
+     * Given a basedir and a child file, return the relative path to the child.
+     * 
+     * @param basedir the basedir.
+     * @param child the child path (can be a full path)
+     * @return the relative path to the child. (NOTE: this path will NOT start 
with a [EMAIL PROTECTED] File#separator} character)
+     */
     public static String getRelative( String basedir, String child )
     {
+        if ( basedir.endsWith( File.separator ) )
+        {
+            basedir = basedir.substring( 0, basedir.length() - 1 );
+        }
+
         if ( child.startsWith( basedir ) )
         {
             // simple solution.

Modified: 
maven/archiva/trunk/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/PathUtilTest.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/PathUtilTest.java?rev=569758&r1=569757&r2=569758&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/PathUtilTest.java
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/PathUtilTest.java
 Sat Aug 25 20:16:11 2007
@@ -34,9 +34,15 @@
 public class PathUtilTest
     extends TestCase
 {
-    public void testToRelative()
+    public void testToRelativeWithoutSlash()
     {
         assertEquals( "path/to/resource.xml", PathUtil.getRelative( 
"/home/user/foo/repository",
+                                                                    
"/home/user/foo/repository/path/to/resource.xml" ) );
+    }
+    
+    public void testToRelativeWithSlash()
+    {
+        assertEquals( "path/to/resource.xml", PathUtil.getRelative( 
"/home/user/foo/repository/",
                                                                     
"/home/user/foo/repository/path/to/resource.xml" ) );
     }
 


Reply via email to