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/07/19 18:45:24 UTC

svn commit: r678183 - in /maven/plugins/trunk/maven-idea-plugin/src: main/java/org/apache/maven/plugin/idea/ test/java/org/apache/maven/plugin/idea/

Author: dennisl
Date: Sat Jul 19 09:45:24 2008
New Revision: 678183

URL: http://svn.apache.org/viewvc?rev=678183&view=rev
Log:
o Change toRelative() to take a String parameter instead of a File. This was necessary to be able to make the tests work across different operating systems.

Modified:
    maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
    maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java
    maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java
    maven/plugins/trunk/maven-idea-plugin/src/test/java/org/apache/maven/plugin/idea/IdeaMojoTestCase.java

Modified: maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java?rev=678183&r1=678182&r2=678183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java (original)
+++ maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/AbstractIdeaMojo.java Sat Jul 19 09:45:24 2008
@@ -210,26 +210,38 @@
      * @param absolutePath The absolute path that must be translated to relative path.
      * @return relative  Relative path of the parameter absolute path.
      */
-    protected String toRelative( File basedir, String absolutePath )
+    protected String toRelative( String basedir, String absolutePath )
     {
         String relative;
-        String convertedBasedirAbsolutePath = convertDriveLetter( basedir.getAbsolutePath() );
+
+        // Convert drive letter
+        String convertedBasedir = convertDriveLetter( basedir );
         String convertedAbsolutePath = convertDriveLetter( absolutePath );
 
-        if ( convertedAbsolutePath.startsWith( convertedBasedirAbsolutePath )
-            && convertedAbsolutePath.length() > convertedBasedirAbsolutePath.length() )
+        // Normalize path separators
+        convertedBasedir = StringUtils.replace( convertedBasedir, "\\", "/" );
+        convertedAbsolutePath = StringUtils.replace( convertedAbsolutePath, "\\", "/" );
+
+        // Strip trailing slash
+        if( convertedBasedir.endsWith( "/" ) )
+        {
+            convertedBasedir = convertedBasedir.substring( 0, convertedBasedir.length() - 1 );
+        }
+        if( convertedAbsolutePath.endsWith( "/" ) )
+        {
+            convertedAbsolutePath = convertedAbsolutePath.substring( 0, convertedAbsolutePath.length() - 1 );
+        }
+
+        if ( convertedAbsolutePath.startsWith( convertedBasedir )
+            && convertedAbsolutePath.length() > convertedBasedir.length() )
         {
             // Simple case, path starts with basepath
-            relative = convertedAbsolutePath.substring( convertedBasedirAbsolutePath.length() + 1 );
-            relative = StringUtils.replace( relative, "\\", "/" );
+            relative = convertedAbsolutePath.substring( convertedBasedir.length() + 1 );
         }
         else
         {
             // It's more complex...
-            convertedAbsolutePath = StringUtils.replace( convertedAbsolutePath, "\\", "/" );
-            convertedBasedirAbsolutePath = StringUtils.replace( convertedBasedirAbsolutePath, "\\", "/" );
-
-            StringTokenizer baseTokens = new StringTokenizer( convertedBasedirAbsolutePath, "/", false );
+            StringTokenizer baseTokens = new StringTokenizer( convertedBasedir, "/", false );
 
             int baseCount = baseTokens.countTokens();
             List baseTokenList = new ArrayList( baseCount );

Modified: maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java?rev=678183&r1=678182&r2=678183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java (original)
+++ maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaModuleMojo.java Sat Jul 19 09:45:24 2008
@@ -866,7 +866,7 @@
      */
     private String getModuleFileUrl( File basedir, String path )
     {
-        return "file://$MODULE_DIR$/" + toRelative( basedir, path );
+        return "file://$MODULE_DIR$/" + toRelative( basedir.getAbsolutePath(), path );
     }
 
     private String getModuleFileUrl( String file )

Modified: maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java?rev=678183&r1=678182&r2=678183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java (original)
+++ maven/plugins/trunk/maven-idea-plugin/src/main/java/org/apache/maven/plugin/idea/IdeaProjectMojo.java Sat Jul 19 09:45:24 2008
@@ -175,7 +175,7 @@
                     new File( executedProject.getBasedir(),
                               executedProject.getArtifactId() + ".iml" ).getAbsolutePath();
                 m.addAttribute( "filepath",
-                                "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir(), projectPath ) );
+                                "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir().getAbsolutePath(), projectPath ) );
 
                 for ( Iterator i = executedProject.getCollectedProjects().iterator(); i.hasNext(); )
                 {
@@ -184,7 +184,7 @@
                     m = createElement( modules, "module" );
                     String modulePath = new File( p.getBasedir(), p.getArtifactId() + ".iml" ).getAbsolutePath();
                     m.addAttribute( "filepath",
-                                    "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir(), modulePath ) );
+                                    "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir().getAbsolutePath(), modulePath ) );
                 }
             }
             else
@@ -193,7 +193,7 @@
                 String modulePath =
                     new File( executedProject.getBasedir(),
                               executedProject.getArtifactId() + ".iml" ).getAbsolutePath();
-                m.addAttribute( "filepath", "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir(), modulePath ) );
+                m.addAttribute( "filepath", "$PROJECT_DIR$/" + toRelative( executedProject.getBasedir().getAbsolutePath(), modulePath ) );
             }
 
             // add any PathMacros we've come across

Modified: maven/plugins/trunk/maven-idea-plugin/src/test/java/org/apache/maven/plugin/idea/IdeaMojoTestCase.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-idea-plugin/src/test/java/org/apache/maven/plugin/idea/IdeaMojoTestCase.java?rev=678183&r1=678182&r2=678183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-idea-plugin/src/test/java/org/apache/maven/plugin/idea/IdeaMojoTestCase.java (original)
+++ maven/plugins/trunk/maven-idea-plugin/src/test/java/org/apache/maven/plugin/idea/IdeaMojoTestCase.java Sat Jul 19 09:45:24 2008
@@ -41,12 +41,36 @@
     {
         String relativePath;
 
-        relativePath = mojo.toRelative( new File( "C:/dev/voca/gateway/" ),
-                                               "C:/dev/voca/gateway/parser/gateway-parser.iml" );
-        assertEquals( "Test toRelative child", "parser/gateway-parser.iml", relativePath );
-
-        relativePath = mojo.toRelative( new File( "C:\\foo\\master " ),
-                                               "C:\\foo\\child" );
-        assertEquals( "Test toRelative sibling", "../child", relativePath );
+        relativePath = mojo.toRelative( "C:\\dev\\voca\\gateway",
+                                        "C:/dev/voca/gateway/parser/gateway-parser.iml" );
+        assertEquals( "Test toRelative child, backslash", "parser/gateway-parser.iml", relativePath );
+
+        relativePath = mojo.toRelative( "C:\\dev\\voca\\gateway\\",
+                                        "C:/dev/voca/gateway/parser/gateway-parser.iml" );
+        assertEquals( "Test toRelative child, trailing backslash", "parser/gateway-parser.iml", relativePath );
+
+        relativePath = mojo.toRelative( "C:/dev/voca/gateway",
+                                        "C:/dev/voca/gateway/parser/gateway-parser.iml" );
+        assertEquals( "Test toRelative child, slash", "parser/gateway-parser.iml", relativePath );
+
+        relativePath = mojo.toRelative( "C:/dev/voca/gateway/",
+                                        "C:/dev/voca/gateway/parser/gateway-parser.iml" );
+        assertEquals( "Test toRelative child, trailing slash", "parser/gateway-parser.iml", relativePath );
+
+        relativePath = mojo.toRelative( "C:\\foo\\master",
+                                        "C:\\foo\\child" );
+        assertEquals( "Test toRelative sibling, no trailing backspace", "../child", relativePath );
+
+        relativePath = mojo.toRelative( "C:\\foo\\master\\",
+                                        "C:\\foo\\child" );
+        assertEquals( "Test toRelative sibling, first trailing backspace", "../child", relativePath );
+
+        relativePath = mojo.toRelative( "C:\\foo\\master",
+                                        "C:\\foo\\child\\" );
+        assertEquals( "Test toRelative sibling, second trailing backspace", "../child", relativePath );
+
+        relativePath = mojo.toRelative( "C:\\foo\\master\\",
+                                        "C:\\foo\\child\\" );
+        assertEquals( "Test toRelative sibling, both trailing backspace", "../child", relativePath );
     }
 }
\ No newline at end of file