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 2005/12/06 17:50:26 UTC

svn commit: r354473 - in /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project: DefaultMavenProjectBuilder.java validation/DefaultModelValidator.java

Author: jdcasey
Date: Tue Dec  6 08:50:22 2005
New Revision: 354473

URL: http://svn.apache.org/viewcvs?rev=354473&view=rev
Log:
PR: MNG-1355
Submitted By: Edwin Punzalan
Reviewed By: John Casey

Applied patch, with small logical fix (used getArtifactId() where getGroupId() was the intention).

This patch will guard against overwriting cached models in the project builder (check for pre-existing model in cache before adding), and will validate that a POM's parent has a different groupId:artifactId than the current POM.


Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=354473&r1=354472&r2=354473&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Dec  6 08:50:22 2005
@@ -290,7 +290,14 @@
         // Always cache files in the source tree over those in the repository
         MavenProject p = new MavenProject( model );
         p.setFile( projectDescriptor );
-        modelCache.put( createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ), p );
+        
+        String modelKey = createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() );
+        if ( modelCache.containsKey( modelKey ) )
+        {
+            throw new ProjectBuildingException( model.getGroupId() + ":" + model.getArtifactId(), 
+                    "Duplicate project ID found in " + projectDescriptor.getAbsolutePath() );
+        }
+        modelCache.put( modelKey, p );
 
         MavenProject project = build( projectDescriptor.getAbsolutePath(), model, localRepository,
                                       buildArtifactRepositories( getSuperModel() ),
@@ -851,6 +858,12 @@
             else if ( StringUtils.isEmpty( parentModel.getArtifactId() ) )
             {
                 throw new ProjectBuildingException( projectId, "Missing artifactId element from parent element" );
+            }
+            else if ( parentModel.getGroupId().equals( model.getGroupId() ) &&  
+                    parentModel.getArtifactId().equals( model.getArtifactId() ) )
+            {
+                throw new ProjectBuildingException( projectId, "Parent element is a duplicate of " +
+                        "the current project " );
             }
             else if ( StringUtils.isEmpty( parentModel.getVersion() ) )
             {

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=354473&r1=354472&r2=354473&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Tue Dec  6 08:50:22 2005
@@ -21,6 +21,7 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.Model;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.Reporting;
@@ -59,6 +60,16 @@
         {
             result.addMessage( "Packaging '" + model.getPackaging() + "' is invalid. Aggregator projects " +
                     "require 'pom' as packaging." );
+        }
+        
+        Parent parent = model.getParent();
+        if ( parent != null )
+        {
+            if ( parent.getGroupId().equals( model.getGroupId() ) && 
+                    parent.getArtifactId().equals( model.getArtifactId() ) )
+            {
+                result.addMessage( "The parent element cannot have the same ID as the project." );
+            }
         }
 
         validateStringNotEmpty( "version", result, model.getVersion() );