Author: bentmann
Date: Sat Jan  8 14:46:27 2011
New Revision: 1056720

URL: http://svn.apache.org/viewvc?rev=1056720&view=rev
Log:
[MNG-4966] Preserve double slashes in the scm connection url - identifies 
absolute repository paths for mercurial

Modified:
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
    
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/path/DefaultUrlNormalizerTest.java

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java?rev=1056720&r1=1056719&r2=1056720&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/path/DefaultUrlNormalizer.java
 Sat Jan  8 14:46:27 2011
@@ -37,8 +37,6 @@ public class DefaultUrlNormalizer
 
         if ( result != null )
         {
-            result = result.replaceAll( "(?<![:/])/+", "/" );
-
             while ( true )
             {
                 int idx = result.indexOf( "/../" );
@@ -46,7 +44,12 @@ public class DefaultUrlNormalizer
                 {
                     break;
                 }
-                int parent = result.lastIndexOf( '/', idx - 1 );
+                int parent = idx - 1;
+                while ( parent >= 0 && result.charAt( parent ) == '/' )
+                {
+                    parent--;
+                }
+                parent = result.lastIndexOf( '/', parent );
                 if ( parent < 0 )
                 {
                     break;

Modified: 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/path/DefaultUrlNormalizerTest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/path/DefaultUrlNormalizerTest.java?rev=1056720&r1=1056719&r2=1056720&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/path/DefaultUrlNormalizerTest.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/path/DefaultUrlNormalizerTest.java
 Sat Jan  8 14:46:27 2011
@@ -69,13 +69,14 @@ public class DefaultUrlNormalizerTest
     {
         assertEquals( "http://server.org/child";, normalize( 
"http://server.org/parent/../child"; ) );
         assertEquals( "http://server.org/child";, normalize( 
"http://server.org/grand/parent/../../child"; ) );
+
+        assertEquals( "http://server.org//child";, normalize( 
"http://server.org/parent/..//child"; ) );
+        assertEquals( "http://server.org/child";, normalize( 
"http://server.org/parent//../child"; ) );
     }
 
-    public void testRemovalOfDoubleSlashes()
+    public void testPreservationOfDoubleSlashes()
     {
-        assertEquals( "http://server.org/dir/";, normalize( 
"http://server.org/dir//"; ) );
-        assertEquals( "http://server.org/parent/child";, normalize( 
"http://server.org/parent//child"; ) );
-
+        assertEquals( "scm:hg:ssh://localhost//home/user", normalize( 
"scm:hg:ssh://localhost//home/user" ) );
         assertEquals( "file:////UNC/server", normalize( "file:////UNC/server" 
) );
         assertEquals( "[fetch=]http://server.org/[push=]ssh://server.org/";,
                       normalize( 
"[fetch=]http://server.org/[push=]ssh://server.org/"; ) );


Reply via email to