You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/07/22 15:43:11 UTC

svn commit: r220318 - in /maven/components/trunk/maven-project/src: main/java/org/apache/maven/project/ main/java/org/apache/maven/project/artifact/ main/java/org/apache/maven/project/validation/ test/java/org/apache/maven/project/validation/ test/reso...

Author: brett
Date: Fri Jul 22 06:42:55 2005
New Revision: 220318

URL: http://svn.apache.org/viewcvs?rev=220318&view=rev
Log:
PR: MNG-518
fix up validation

Added:
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml   (with props)
    maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml   (with props)
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/artifact/MavenMetadataSource.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.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=220318&r1=220317&r2=220318&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 Fri Jul 22 06:42:55 2005
@@ -438,10 +438,7 @@
             project.setParentArtifact( parentArtifact );
         }
 
-        project.setRemoteArtifactRepositories( remoteRepositories );
-        project.setDependencyArtifacts( createArtifacts( project.getDependencies() ) );
-        project.setPluginArtifacts( createPluginArtifacts( project.getBuildPlugins() ) );
-
+        // Must validate before artifact construction to make sure dependencies are good
         ModelValidationResult validationResult = validator.validate( model );
 
         if ( validationResult.getMessageCount() > 0 )
@@ -449,6 +446,10 @@
             throw new ProjectBuildingException( "Failed to validate POM for \'" + pomLocation +
                 "\'.\n\n  Reason(s):\n" + validationResult.render( "  " ) );
         }
+
+        project.setRemoteArtifactRepositories( remoteRepositories );
+        project.setDependencyArtifacts( createArtifacts( project.getDependencies() ) );
+        project.setPluginArtifacts( createPluginArtifacts( project.getBuildPlugins() ) );
 
         return project;
     }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=220318&r1=220317&r2=220318&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Fri Jul 22 06:42:55 2005
@@ -145,7 +145,6 @@
         {
             Dependency d = (Dependency) i.next();
 
-            // TODO: validate
             VersionRange versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
             Artifact artifact = artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
                                                                           versionRange, d.getType(), d.getScope(),

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=220318&r1=220317&r2=220318&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 Fri Jul 22 06:42:55 2005
@@ -18,8 +18,11 @@
 
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.Reporting;
 
 import java.util.Iterator;
 import java.util.List;
@@ -60,7 +63,51 @@
 
             validateStringNotEmpty( "dependencies.dependency.version", result, d.getVersion() );
         }
-        
+
+        DependencyManagement mgmt = model.getDependencyManagement();
+        if ( mgmt != null )
+        {
+            for ( Iterator it = mgmt.getDependencies().iterator(); it.hasNext(); )
+            {
+                Dependency d = (Dependency) it.next();
+
+                validateStringNotEmpty( "dependencyManagement.dependencies.dependency.artifactId", result,
+                                        d.getArtifactId() );
+
+                validateStringNotEmpty( "dependencyManagement.dependencies.dependency.groupId", result,
+                                        d.getGroupId() );
+
+                validateStringNotEmpty( "dependencyManagement.dependencies.dependency.version", result,
+                                        d.getVersion() );
+            }
+        }
+
+        Build build = model.getBuild();
+        if ( build != null )
+        {
+            for ( Iterator it = build.getPlugins().iterator(); it.hasNext(); )
+            {
+                Plugin p = (Plugin) it.next();
+
+                validateStringNotEmpty( "build.plugins.plugin.artifactId", result, p.getArtifactId() );
+
+                validateStringNotEmpty( "build.plugins.plugin.groupId", result, p.getGroupId() );
+            }
+        }
+
+        Reporting reporting = model.getReporting();
+        if ( reporting != null )
+        {
+            for ( Iterator it = reporting.getPlugins().iterator(); it.hasNext(); )
+            {
+                ReportPlugin p = (ReportPlugin) it.next();
+
+                validateStringNotEmpty( "reporting.plugins.plugin.artifactId", result, p.getArtifactId() );
+
+                validateStringNotEmpty( "reporting.plugins.plugin.groupId", result, p.getGroupId() );
+            }
+        }
+
         forcePluginExecutionIdCollision( model, result );
 
         return result;
@@ -69,17 +116,17 @@
     private void forcePluginExecutionIdCollision( Model model, ModelValidationResult result )
     {
         Build build = model.getBuild();
-    
+
         if ( build != null )
         {
             List plugins = build.getPlugins();
-    
+
             if ( plugins != null )
             {
                 for ( Iterator it = plugins.iterator(); it.hasNext(); )
                 {
                     Plugin plugin = (Plugin) it.next();
-    
+
                     // this will force an IllegalStateException, even if we don't have to do inheritance assembly.
                     try
                     {
@@ -93,7 +140,7 @@
             }
         }
     }
-    
+
     ///////////////////////////////////////////////////////////////////////////
     // Field validator
 

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java?rev=220318&r1=220317&r2=220318&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/validation/DefaultModelValidatorTest.java Fri Jul 22 06:42:55 2005
@@ -85,6 +85,66 @@
         assertEquals( "'version' is missing.", result.getMessage( 0 ) );
     }
 
+    public void testMissingDependencyArtifactId()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-artifactId-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencies.dependency.artifactId' is missing.", result.getMessage( 0 ) );
+    }
+
+    public void testMissingDependencyGroupId()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-groupId-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencies.dependency.groupId' is missing.", result.getMessage( 0 ) );
+    }
+
+    public void testMissingDependencyVersion()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-version-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencies.dependency.version' is missing.", result.getMessage( 0 ) );
+    }
+
+    public void testMissingDependencyManagementArtifactId()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencyManagement.dependencies.dependency.artifactId' is missing.", result.getMessage( 0 ) );
+    }
+
+    public void testMissingDependencyManagementGroupId()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencyManagement.dependencies.dependency.groupId' is missing.", result.getMessage( 0 ) );
+    }
+
+    public void testMissingDependencyManagementVersion()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-dependency-mgmt-version-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'dependencyManagement.dependencies.dependency.version' is missing.", result.getMessage( 0 ) );
+    }
+
     public void testMissingAll()
         throws Exception
     {
@@ -99,6 +159,16 @@
         assertTrue( messages.contains( "\'artifactId\' is missing." ) );
         assertTrue( messages.contains( "\'version\' is missing." ) );
         // type is inherited from the super pom
+    }
+
+    public void testMissingPluginArtifactId()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "missing-plugin-artifactId-pom.xml" );
+
+        assertEquals( 1, result.getMessageCount() );
+
+        assertEquals( "'build.plugins.plugin.artifactId' is missing.", result.getMessage( 0 ) );
     }
 
     private ModelValidationResult validate( String testName )

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,13 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>groupId</groupId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,13 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencies>
+    <dependency>
+      <artifactId>artifactId</artifactId>
+      <version>1.0</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-groupId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,15 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>groupId</groupId>
+        <version>version</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,15 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <artifactId>artifactId</artifactId>
+        <version>version</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-groupId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,15 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <artifactId>artifactId</artifactId>
+        <groupId>groupId</groupId>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-mgmt-version-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,13 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <dependencies>
+    <dependency>
+      <artifactId>artifactId</artifactId>
+      <groupId>groupId</groupId>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-dependency-version-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,14 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <build>
+    <plugins>
+      <plugin>
+
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-plugin-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml?rev=220318&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml Fri Jul 22 06:42:55 2005
@@ -0,0 +1,14 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>foo</artifactId>
+  <groupId>foo</groupId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+  <reporting>
+    <plugins>
+      <plugin>
+
+      </plugin>
+    </plugins>
+  </reporting>
+</project>

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project/src/test/resources/validation/missing-report-artifactId-pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org