Do things right
diff --git a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/EncodingUtil.java b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/EncodingUtil.java
index 1794288..fd654e0 100644
--- a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/EncodingUtil.java
+++ b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/EncodingUtil.java
@@ -24,6 +24,9 @@
import java.net.URISyntaxException;
import java.net.URL;
+import org.apache.http.client.utils.URLEncodedUtils;
+import org.codehaus.plexus.util.StringUtils;
+
/**
* Encoding utility.
*
@@ -86,20 +89,17 @@ public static String encodeURLToString( String baseUrl, String... paths )
{
StringBuilder url = new StringBuilder( baseUrl );
- String[] parts = paths == null ? //
+ String[] segments = paths == null ? //
new String[0] : //
paths.length == 1 ? paths[0].split( "/" ) : paths;
- for ( String part : parts )
- {
- if ( !url.toString().endsWith( "/" ) )
- {
- url.append( '/' );
- }
+ String path = URLEncodedUtils.formatSegments(segments);
- url.append( part );
- }
+ if (url.toString().endsWith("/") && StringUtils.isNotEmpty(path))
+ url.deleteCharAt(url.length() - 1);
- return encodeURLToString( url.toString() );
+ url.append(path);
+
+ return url.toString();
}
}
diff --git a/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/EncodingUtilTest.java b/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/EncodingUtilTest.java
index f20f35f..af9b5e5 100644
--- a/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/EncodingUtilTest.java
+++ b/wagon-providers/wagon-http-shared/src/test/java/org/apache/maven/wagon/shared/http/EncodingUtilTest.java
@@ -46,7 +46,7 @@ public void testEncodeURLWithSpacesInPath()
public void testEncodeURLWithSpacesInBothBaseAndPath()
throws URISyntaxException, MalformedURLException
{
- String encodedURL = EncodingUtil.encodeURLToString( "file://host:1/with a", "path with spaces" );
+ String encodedURL = EncodingUtil.encodeURLToString( "file://host:1/with%20a", "path with spaces" );
assertEquals( "file://host:1/with%20a/path%20with%20spaces", encodedURL );
}