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() );