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

svn commit: r379324 - in /maven/components/trunk/maven-project/src: main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java

Author: brett
Date: Mon Feb 20 19:57:23 2006
New Revision: 379324

URL: http://svn.apache.org/viewcvs?rev=379324&view=rev
Log:
[MNG-1856] fix inheritance of the distribution management section and add tests

Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java?rev=379324&r1=379323&r2=379324&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java Mon Feb 20 19:57:23 2006
@@ -107,10 +107,6 @@
             }
         }
 
-        // ----------------------------------------------------------------------
-        // Distribution
-        // ----------------------------------------------------------------------
-
         assembleDistributionInheritence( child, parent, childPathAdjustment, appendPaths );
 
         // issueManagement
@@ -177,8 +173,6 @@
 
         assembleDependencyManagementInheritance( child, parent );
 
-        assembleDistributionManagementInheritance( child, parent );
-
         Properties props = new Properties();
         props.putAll( parent.getProperties() );
         props.putAll( child.getProperties() );
@@ -186,46 +180,6 @@
         child.setProperties( props );
     }
 
-    private void assembleDistributionManagementInheritance( Model child, Model parent )
-    {
-        DistributionManagement cDistMgmt = child.getDistributionManagement();
-        DistributionManagement pDistMgmt = parent.getDistributionManagement();
-
-        if ( cDistMgmt == null )
-        {
-            child.setDistributionManagement( pDistMgmt );
-        }
-        else if ( pDistMgmt != null )
-        {
-            if ( cDistMgmt.getRepository() == null )
-            {
-                cDistMgmt.setRepository( pDistMgmt.getRepository() );
-            }
-
-            if ( cDistMgmt.getSnapshotRepository() == null )
-            {
-                cDistMgmt.setSnapshotRepository( pDistMgmt.getSnapshotRepository() );
-            }
-
-            if ( StringUtils.isEmpty( cDistMgmt.getDownloadUrl() ) )
-            {
-                cDistMgmt.setDownloadUrl( pDistMgmt.getDownloadUrl() );
-            }
-
-            if ( cDistMgmt.getRelocation() == null )
-            {
-                cDistMgmt.setRelocation( pDistMgmt.getRelocation() );
-            }
-
-            if ( cDistMgmt.getSite() == null )
-            {
-                cDistMgmt.setSite( pDistMgmt.getSite() );
-            }
-
-            // NOTE: We SHOULD NOT be inheriting status, since this is an assessment of the POM quality.
-        }
-    }
-
     private void assembleDependencyManagementInheritance( Model child, Model parent )
     {
         DependencyManagement parentDepMgmt = parent.getDependencyManagement();
@@ -486,17 +440,8 @@
             {
                 if ( parentDistMgmt.getRepository() != null )
                 {
-                    DeploymentRepository repository = new DeploymentRepository();
-
+                    DeploymentRepository repository = copyDistributionRepository( parentDistMgmt.getRepository() );
                     childDistMgmt.setRepository( repository );
-
-                    repository.setId( parentDistMgmt.getRepository().getId() );
-
-                    repository.setName( parentDistMgmt.getRepository().getName() );
-
-                    repository.setUrl( parentDistMgmt.getRepository().getUrl() );
-
-                    repository.setUniqueVersion( parentDistMgmt.getRepository().isUniqueVersion() );
                 }
             }
 
@@ -504,20 +449,37 @@
             {
                 if ( parentDistMgmt.getSnapshotRepository() != null )
                 {
-                    DeploymentRepository repository = new DeploymentRepository();
-
+                    DeploymentRepository repository =
+                        copyDistributionRepository( parentDistMgmt.getSnapshotRepository() );
                     childDistMgmt.setSnapshotRepository( repository );
+                }
+            }
+
+            if ( StringUtils.isEmpty( childDistMgmt.getDownloadUrl() ) )
+            {
+                childDistMgmt.setDownloadUrl( parentDistMgmt.getDownloadUrl() );
+            }
 
-                    repository.setId( parentDistMgmt.getSnapshotRepository().getId() );
+            // NOTE: We SHOULD NOT be inheriting status, since this is an assessment of the POM quality.
+            // NOTE: We SHOULD NOT be inheriting relocation, since this relates to a single POM
+        }
+    }
 
-                    repository.setName( parentDistMgmt.getSnapshotRepository().getName() );
+    private static DeploymentRepository copyDistributionRepository( DeploymentRepository parentRepository )
+    {
+        DeploymentRepository repository = new DeploymentRepository();
 
-                    repository.setUrl( parentDistMgmt.getSnapshotRepository().getUrl() );
+        repository.setId( parentRepository.getId() );
 
-                    repository.setUniqueVersion( parentDistMgmt.getSnapshotRepository().isUniqueVersion() );
-                }
-            }
-        }
+        repository.setName( parentRepository.getName() );
+
+        repository.setUrl( parentRepository.getUrl() );
+
+        repository.setLayout( parentRepository.getLayout() );
+
+        repository.setUniqueVersion( parentRepository.isUniqueVersion() );
+
+        return repository;
     }
 
     protected String appendPath( String parentPath, String childPath, String pathAdjustment, boolean appendPaths )

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java?rev=379324&r1=379323&r2=379324&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssemblerTest.java Mon Feb 20 19:57:23 2006
@@ -18,16 +18,21 @@
 
 import junit.framework.TestCase;
 import org.apache.maven.model.Build;
+import org.apache.maven.model.DeploymentRepository;
+import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
+import org.apache.maven.model.Relocation;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.ReportSet;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Repository;
+import org.apache.maven.model.RepositoryBase;
 import org.apache.maven.model.Resource;
 import org.apache.maven.model.Scm;
+import org.apache.maven.model.Site;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -57,6 +62,69 @@
         assertEquals( "Append with path adjustment failed.", "http://maven.apache.org/shared/file-management", result );
     }
 
+    public void testDistributionManagementInheritance()
+    {
+        Model parent = makeBaseModel( "parent" );
+        Model child = makeBaseModel( "child" );
+
+        DistributionManagement distributionManagement = new DistributionManagement();
+        distributionManagement.setDownloadUrl( "downloadUrl" );
+        distributionManagement.setRelocation( new Relocation() );
+        distributionManagement.setStatus( "deployed" );
+
+        DeploymentRepository repository = new DeploymentRepository();
+        repository.setId( "apache.releases" );
+        repository.setUrl( "scp://minotaur.apache.org/www/www.apache.org/dist/java-repository" );
+        repository.setName( "name" );
+        repository.setLayout( "legacy" );
+        distributionManagement.setRepository( repository );
+
+        DeploymentRepository snapshotRepository = new DeploymentRepository();
+        snapshotRepository.setId( "apache.snapshots" );
+        snapshotRepository.setUrl( "scp://minotaur.apache.org/www/cvs.apache.org/repository" );
+        snapshotRepository.setName( "name" );
+        snapshotRepository.setLayout( "legacy" );
+        snapshotRepository.setUniqueVersion( false );
+        distributionManagement.setSnapshotRepository( snapshotRepository );
+
+        Site site = new Site();
+        site.setId( "apache.website" );
+        site.setUrl( "scp://minotaur.apache.org/www/maven.apache.org/" );
+        site.setName( "name3" );
+        distributionManagement.setSite( site );
+
+        parent.setDistributionManagement( distributionManagement );
+
+        assembler.assembleModelInheritance( child, parent );
+
+        DistributionManagement childDistMgmt = child.getDistributionManagement();
+        assertNotNull( "Check distMgmt inherited", childDistMgmt );
+        assertNull( "Check status NOT inherited", childDistMgmt.getStatus() );
+        assertNull( "Check relocation NOT inherited", childDistMgmt.getRelocation() );
+        assertEquals( "Check downloadUrl inherited", distributionManagement.getDownloadUrl(),
+                      childDistMgmt.getDownloadUrl() );
+
+        Site childSite = childDistMgmt.getSite();
+        assertNotNull( "Check site inherited", childSite );
+        assertEquals( "Check id matches", site.getId(), childSite.getId() );
+        assertEquals( "Check name matches", site.getName(), childSite.getName() );
+        assertEquals( "Check url matches with appended path", site.getUrl() + "child", childSite.getUrl() );
+
+        assertRepositoryBase( childDistMgmt.getRepository(), repository );
+        assertRepositoryBase( childDistMgmt.getSnapshotRepository(), snapshotRepository );
+        assertEquals( "Check uniqueVersion is inherited", snapshotRepository.isUniqueVersion(),
+                      childDistMgmt.getSnapshotRepository().isUniqueVersion() );
+    }
+
+    private static void assertRepositoryBase( RepositoryBase childRepository, RepositoryBase repository )
+    {
+        assertNotNull( "Check repository inherited", childRepository );
+        assertEquals( "Check id matches", repository.getId(), childRepository.getId() );
+        assertEquals( "Check name matches", repository.getName(), childRepository.getName() );
+        assertEquals( "Check url matches", repository.getUrl(), childRepository.getUrl() );
+        assertEquals( "Check layout matches", repository.getLayout(), childRepository.getLayout() );
+    }
+
     public void testShouldOverrideUnitTestExcludesOnly()
     {
         Model parent = new Model();
@@ -659,13 +727,19 @@
     {
         Model model = makeBaseModel( artifactId );
 
-        Repository repository = new Repository();
-        repository.setId( id );
-        repository.setUrl( url );
+        Repository repository = makeRepository( id, url );
 
         model.setRepositories( new ArrayList( Collections.singletonList( repository ) ) );
 
         return model;
+    }
+
+    private static Repository makeRepository( String id, String url )
+    {
+        Repository repository = new Repository();
+        repository.setId( id );
+        repository.setUrl( url );
+        return repository;
     }
 
     private void assertRepositories( List expected, List actual )