You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by lt...@apache.org on 2011/09/24 21:16:18 UTC

svn commit: r1175226 - /maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java

Author: ltheussl
Date: Sat Sep 24 19:16:18 2011
New Revision: 1175226

URL: http://svn.apache.org/viewvc?rev=1175226&view=rev
Log:
encode URIs for use with URIPathDescriptor

Modified:
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java?rev=1175226&r1=1175225&r2=1175226&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/AbstractDeployMojo.java Sat Sep 24 19:16:18 2011
@@ -20,6 +20,7 @@ package org.apache.maven.plugins.site;
  */
 
 import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.doxia.site.decoration.inheritance.URIPathDescriptor;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.DistributionManagement;
@@ -68,7 +69,6 @@ import java.net.URL;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
-import org.apache.maven.doxia.site.decoration.inheritance.URIPathDescriptor;
 
 /**
  * Abstract base class for deploy mojos.
@@ -847,8 +847,8 @@ public abstract class AbstractDeployMojo
             }
 
             // MSITE-600
-            URIPathDescriptor siteURI = new URIPathDescriptor( site.getUrl(), "" );
-            URIPathDescriptor oldSiteURI = new URIPathDescriptor( oldSite.getUrl(), "" );
+            URIPathDescriptor siteURI = new URIPathDescriptor( URIEncoder.encodeURI( site.getUrl() ), "" );
+            URIPathDescriptor oldSiteURI = new URIPathDescriptor( URIEncoder.encodeURI( oldSite.getUrl() ), "" );
 
             if ( !siteURI.sameSite( oldSiteURI.getBaseURI() ) )
             {
@@ -858,4 +858,32 @@ public abstract class AbstractDeployMojo
 
         return site;
     }
+
+    private static class URIEncoder
+    {
+        private static final String mark = "-_.!~*'()";
+        private static final String reserved = ";/?:@&=+$,";
+
+        public static String encodeURI( final String uriString )
+        {
+            final char[] chars = uriString.toCharArray();
+            final StringBuilder uri = new StringBuilder( chars.length );
+
+            for ( int i = 0; i < chars.length; i++ )
+            {
+                final char c = chars[i];
+                if ( ( c >= '0' && c <= '9' ) || ( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' )
+                        || mark.indexOf( c ) != -1  || reserved.indexOf( c ) != -1 )
+                {
+                    uri.append( c );
+                }
+                else
+                {
+                    uri.append( '%' );
+                    uri.append( Integer.toHexString( (int) c ) );
+                }
+            }
+            return uri.toString();
+        }
+    }
 }