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(); + } + } }