You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/02/21 21:16:40 UTC

svn commit: r379573 - in /maven/components/branches/maven-2.0.x: maven-core-it/it0095/ maven-core-it/it0095/parent/ maven-core-it/it0095/sub1/ maven-core-it/it0095/sub1/src/ maven-core-it/it0095/sub1/src/test/ maven-core-it/it0095/sub1/src/test/verifie...

Author: jdcasey
Date: Tue Feb 21 12:16:35 2006
New Revision: 379573

URL: http://svn.apache.org/viewcvs?rev=379573&view=rev
Log:
(merging in 379572.)

Original URL: http://svn.apache.org/viewcvs?rev=379572&view=rev

[MNG-2006] Fixing url rewriting for child POMs in sibling directories of parent POM (or anything other than subdir). First guess is based on parent POM file, but if parent POM is built from repository, will use the module artifactId as a basis instead.

Added:
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/goals.txt
      - copied unchanged from r379572, maven/components/trunk/maven-core-it/it0095/goals.txt
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/parent/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/parent/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/parent/pom.xml
      - copied unchanged from r379572, maven/components/trunk/maven-core-it/it0095/parent/pom.xml
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/pom.xml
      - copied unchanged from r379572, maven/components/trunk/maven-core-it/it0095/pom.xml
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/sub1/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/pom.xml
      - copied unchanged from r379572, maven/components/trunk/maven-core-it/it0095/sub1/pom.xml
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/src/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/sub1/src/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/src/test/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/sub1/src/test/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/src/test/verifier/
      - copied from r379572, maven/components/trunk/maven-core-it/it0095/sub1/src/test/verifier/
    maven/components/branches/maven-2.0.x/maven-core-it/it0095/sub1/src/test/verifier/verifications.xml
      - copied unchanged from r379572, maven/components/trunk/maven-core-it/it0095/sub1/src/test/verifier/verifications.xml
Modified:
    maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
    maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
    maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java

Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=379573&r1=379572&r2=379573&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Tue Feb 21 12:16:35 2006
@@ -136,7 +136,7 @@
 
     private boolean executionRoot;
     
-    private Map moduleFiles;
+    private Map moduleAdjustments;
 
     public MavenProject( Model model )
     {
@@ -193,40 +193,57 @@
     
     public String getModulePathAdjustment( MavenProject moduleProject ) throws IOException
     {
-        File module = moduleProject.getFile();
+        // FIXME: This is hacky. What if module directory doesn't match artifactid, and parent
+        // is coming from the repository??
+        String module = moduleProject.getArtifactId();
         
-        if ( module == null )
+        File moduleFile = moduleProject.getFile();
+        
+        if ( moduleFile != null )
         {
-            return null;
+            File moduleDir = moduleFile.getCanonicalFile().getParentFile();
+            
+            module = moduleDir.getName();
         }
         
-        module = module.getCanonicalFile();
-        
-        if ( moduleFiles == null )
+        if ( moduleAdjustments == null )
         {
-            moduleFiles = new HashMap();
+            moduleAdjustments = new HashMap();
             
             List modules = getModules();
-            File myFile = getFile();
-            
-            if ( myFile != null )
+            if ( modules != null )
             {
-                File myDir = myFile.getCanonicalFile().getParentFile();
-                if ( modules != null )
+                for ( Iterator it = modules.iterator(); it.hasNext(); )
                 {
-                    for ( Iterator it = modules.iterator(); it.hasNext(); )
+                    String modulePath = (String) it.next();
+                    String moduleName = modulePath;
+                    
+                    if ( moduleName.endsWith( "/" ) || moduleName.endsWith( "\\" ) )
                     {
-                        String modulePath = (String) it.next();
-
-                        File moduleFile = new File( myDir, modulePath ).getCanonicalFile();
-
-                        moduleFiles.put( moduleFile, modulePath );
+                        moduleName = moduleName.substring( 0, moduleName.length() - 1 );
                     }
+                    
+                    int lastSlash = moduleName.lastIndexOf( '/' );
+                    
+                    if ( lastSlash < 0 )
+                    {
+                        lastSlash = moduleName.lastIndexOf( '\\' );
+                    }
+                    
+                    String adjustment = null;
+                    
+                    if ( lastSlash > -1 )
+                    {
+                        moduleName = moduleName.substring( lastSlash + 1 );
+                        adjustment = modulePath.substring( 0, lastSlash );
+                    }
+
+                    moduleAdjustments.put( moduleName, adjustment );
                 }
-            }            
+            }
         }
         
-        return (String) moduleFiles.get( module );
+        return (String) moduleAdjustments.get( module );
     }
 
     // ----------------------------------------------------------------------

Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java?rev=379573&r1=379572&r2=379573&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java Tue Feb 21 12:16:35 2006
@@ -506,7 +506,10 @@
                 pathFragments.add( pathAdjustment );
             }
 
-            pathFragments.add( childPath );
+            if ( childPath != null )
+            {
+                pathFragments.add( childPath );
+            }            
         }
 
         StringBuffer cleanedPath = new StringBuffer();
@@ -548,7 +551,18 @@
             }
         }
 
-        if ( !childPath.endsWith( "/" ) && appendPaths )
+        String lastPathPart = childPath;
+        if ( lastPathPart == null )
+        {
+            lastPathPart = pathAdjustment;
+        }
+        
+        if ( lastPathPart == null )
+        {
+            lastPathPart = parentPath;
+        }
+        
+        if ( appendPaths && lastPathPart != null && !lastPathPart.endsWith( "/" ) )
         {
             cleanedPath.setLength( cleanedPath.length() - 1 );
         }

Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java?rev=379573&r1=379572&r2=379573&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/MavenProjectTest.java Tue Feb 21 12:16:35 2006
@@ -17,6 +17,9 @@
  */
 
 import java.io.File;
+import java.io.IOException;
+
+import org.apache.maven.model.Model;
 
 public class MavenProjectTest
     extends AbstractMavenProjectTestCase
@@ -28,5 +31,23 @@
 
         MavenProject clonedProject = new MavenProject(projectToClone);
         assertEquals("maven-core", clonedProject.getArtifactId());
+    }
+    
+    public void testGetModulePathAdjustment() throws IOException
+    {
+        Model moduleModel = new Model();
+        
+        MavenProject module = new MavenProject( moduleModel );
+        module.setFile( new File( "module-dir/pom.xml" ) );
+        
+        Model parentModel = new Model();
+        parentModel.addModule( "../module-dir" );
+        
+        MavenProject parent = new MavenProject( parentModel );
+        parent.setFile( new File( "parent-dir/pom.xml" ) );
+        
+        String pathAdjustment = parent.getModulePathAdjustment( module );
+        
+        assertEquals( "..", pathAdjustment );
     }
 }

Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java
URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java?rev=379573&r1=379572&r2=379573&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java Tue Feb 21 12:16:35 2006
@@ -48,6 +48,20 @@
 {
     private ModelInheritanceAssembler assembler = new DefaultModelInheritanceAssembler();
 
+    public void testShouldAppendChildPathAdjustmentWithNoChildPart()
+    {
+        String parentPath = "http://maven.apache.org/shared/maven-shared-parent";
+        String childPath = null;
+        String pathAdjustment = "../file-management";
+
+        String result =
+            ( (DefaultModelInheritanceAssembler) assembler ).appendPath( parentPath, childPath, pathAdjustment, true );
+
+        System.out.println( "Resulting path is: \'" + result + "\'" );
+
+        assertEquals( "Append with path adjustment failed.", "http://maven.apache.org/shared/file-management", result );
+    }
+
     public void testShouldAppendPathWithChildPathAdjustment()
     {
         String parentPath = "http://maven.apache.org/shared/maven-shared-parent";