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 2005/10/08 19:12:52 UTC

svn commit: r307314 - in /maven/components/trunk/maven-project/src: main/java/org/apache/maven/project/validation/ test/java/org/apache/maven/project/validation/ test/resources/validation/

Author: brett
Date: Sat Oct  8 10:12:41 2005
New Revision: 307314

URL: http://svn.apache.org/viewcvs?rev=307314&view=rev
Log:
PR: MNG-801
validate ids in model

Added:
    maven/components/trunk/maven-project/src/test/resources/validation/invalid-ids-pom.xml   (with props)
Modified:
    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/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=307314&r1=307313&r2=307314&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 Sat Oct  8 10:12:41 2005
@@ -37,6 +37,8 @@
 public class DefaultModelValidator
     implements ModelValidator
 {
+    private static final String ID_REGEX = "[A-Za-z0-9_\\-.]+";
+
     ///////////////////////////////////////////////////////////////////////////
     // ModelValidator Implementation
 
@@ -46,9 +48,9 @@
 
         validateStringNotEmpty( "modelVersion", result, model.getModelVersion() );
 
-        validateStringNotEmpty( "groupId", result, model.getGroupId() );
+        validateId( "groupId", result, model.getGroupId() );
 
-        validateStringNotEmpty( "artifactId", result, model.getArtifactId() );
+        validateId( "artifactId", result, model.getArtifactId() );
 
         validateStringNotEmpty( "packaging", result, model.getPackaging() );
 
@@ -58,13 +60,13 @@
         {
             Dependency d = (Dependency) it.next();
 
-            validateSubElementStringNotEmpty( d, "dependencies.dependency.artifactId", result, d.getArtifactId() );
+            validateId( "dependencies.dependency.artifactId", result, d.getArtifactId() );
 
-            validateSubElementStringNotEmpty( d, "dependencies.dependency.groupId", result, d.getGroupId() );
+            validateId( "dependencies.dependency.groupId", result, d.getGroupId() );
 
-            validateSubElementStringNotEmpty( d, "dependencies.dependency.type", result, d.getType() );
+            validateStringNotEmpty( "dependencies.dependency.type", result, d.getType() );
 
-            validateSubElementStringNotEmpty( d, "dependencies.dependency.version", result, d.getVersion() );
+            validateStringNotEmpty( "dependencies.dependency.version", result, d.getVersion() );
 
             if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && StringUtils.isEmpty( d.getSystemPath() ) )
             {
@@ -136,6 +138,23 @@
         forcePluginExecutionIdCollision( model, result );
 
         return result;
+    }
+
+    private boolean validateId( String fieldName, ModelValidationResult result, String id )
+    {
+        if ( !validateStringNotEmpty( fieldName, result, id ) )
+        {
+            return false;
+        }
+        else
+        {
+            boolean match = id.matches( ID_REGEX );
+            if ( !match )
+            {
+                result.addMessage( "'" + fieldName + "' with value '" + id + "' does not match a valid id pattern." );
+            }
+            return match;
+        }
     }
 
     private void validateRepositories( ModelValidationResult result, List repositories, String prefix )

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=307314&r1=307313&r2=307314&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 Sat Oct  8 10:12:41 2005
@@ -65,6 +65,18 @@
         assertEquals( "'groupId' is missing.", result.getMessage( 0 ) );
     }
 
+    public void testInvalidIds()
+        throws Exception
+    {
+        ModelValidationResult result = validate( "invalid-ids-pom.xml" );
+
+        assertEquals( 2, result.getMessageCount() );
+
+        assertEquals( "'groupId' with value 'o/a/m' does not match a valid id pattern.", result.getMessage( 0 ) );
+
+        assertEquals( "'artifactId' with value 'm$-do$' does not match a valid id pattern.", result.getMessage( 1 ) );
+    }
+
     public void testMissingType()
         throws Exception
     {

Added: maven/components/trunk/maven-project/src/test/resources/validation/invalid-ids-pom.xml
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/resources/validation/invalid-ids-pom.xml?rev=307314&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources/validation/invalid-ids-pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources/validation/invalid-ids-pom.xml Sat Oct  8 10:12:41 2005
@@ -0,0 +1,7 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>o/a/m</groupId>
+  <artifactId>m$-do$</artifactId>
+  <version>99.44</version>
+  <packaging>bleh</packaging>
+</project>

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

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