You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2008/03/22 22:57:25 UTC

svn commit: r640091 - in /maven/shared/trunk/maven-doxia-tools/src: main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java test/java/org/apache/maven/doxia/tools/SiteToolTest.java

Author: dennisl
Date: Sat Mar 22 14:57:24 2008
New Revision: 640091

URL: http://svn.apache.org/viewvc?rev=640091&view=rev
Log:
[MSITE-284] getRelativePath fails on non-normalized inputs
Submitted by: Benjamin Bentmann
Reviewed by: Dennis Lundberg

Modified:
    maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
    maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java

Modified: maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java?rev=640091&r1=640090&r2=640091&view=diff
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java (original)
+++ maven/shared/trunk/maven-doxia-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java Sat Mar 22 14:57:24 2008
@@ -19,22 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.StringTokenizer;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -57,6 +41,7 @@
 import org.apache.maven.reporting.MavenReport;
 import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
@@ -66,6 +51,22 @@
 import org.codehaus.plexus.util.interpolation.RegexBasedInterpolator;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.StringTokenizer;
+
 /**
  * Default implementation of the site tool.
  *
@@ -184,6 +185,16 @@
         return getSkinArtifactFromRepository( localRepository, remoteArtifactRepositories, new DecorationModel() );
     }
 
+    protected String getNormalizedPath( String path )
+    {
+        String normalized = null;
+        if ( path != null )
+        {
+            normalized = FileUtils.normalize( path.replace( '\\', '/' ) );
+        }
+        return ( normalized == null ) ? path : normalized;
+    }
+
     /** {@inheritDoc} */
     public String getRelativePath( String to, String from )
     {
@@ -210,7 +221,7 @@
         {
             try
             {
-                toUrl = new File( to ).toURL();
+                toUrl = new File( getNormalizedPath( to ) ).toURL();
             }
             catch ( MalformedURLException e1 )
             {
@@ -226,7 +237,7 @@
         {
             try
             {
-                fromUrl = new File( from ).toURL();
+                fromUrl = new File( getNormalizedPath( from ) ).toURL();
             }
             catch ( MalformedURLException e1 )
             {
@@ -724,6 +735,7 @@
                     {
                         pomFile = new File( pomFile, "pom.xml" );
                     }
+                    pomFile = new File( getNormalizedPath( pomFile.getPath() ) );
 
                     MavenProject mavenProject = mavenProjectBuilder.build( pomFile, localRepository, null );
 

Modified: maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java?rev=640091&r1=640090&r2=640091&view=diff
==============================================================================
--- maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java (original)
+++ maven/shared/trunk/maven-doxia-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java Sat Mar 22 14:57:24 2008
@@ -166,6 +166,14 @@
         from = "/myproject/myproject";
         assertEquals( "Sibling directory with similar name",
                       ".." + File.separator + "myproject-module1", tool.getRelativePath( to, from ) );
+
+        // Normalized paths as described in MSITE-284
+        assertEquals( ".." + File.separator + "project-module-1" + File.separator + "src" + File.separator + "site",
+                      tool.getRelativePath( "Z:\\dir\\project\\project-module-1\\src\\site",
+                                            "Z:\\dir\\project\\project-module-1\\..\\project-parent") );
+        assertEquals( ".." + File.separator + ".." + File.separator + ".." + File.separator + "project-parent",
+                      tool.getRelativePath( "Z:\\dir\\project\\project-module-1\\..\\project-parent",
+                                            "Z:\\dir\\project\\project-module-1\\src\\site") );
     }
 
     /**