Author: bentmann
Date: Wed Nov 24 21:36:06 2010
New Revision: 1038838

URL: http://svn.apache.org/viewvc?rev=1038838&view=rev
Log:
[MNG-4915] Versions in pom.xml are not checked for invalid characters

Modified:
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
    
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
    
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml
    
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml

Modified: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=1038838&r1=1038837&r2=1038838&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
 Wed Nov 24 21:36:06 2010
@@ -764,39 +764,47 @@ public class DefaultModelValidator
             return true;
         }
 
-        if ( !hasExpression( string ) )
+        if ( hasExpression( string ) )
         {
-            return true;
+            addViolation( problems, severity, fieldName, sourceHint,
+                          "must be a valid version but is '" + string + "'.", 
tracker );
+            return false;
         }
 
-        addViolation( problems, severity, fieldName, sourceHint, "must be a 
valid version but is '" + string + "'.",
-                      tracker );
+        if ( !validateBannedCharacters( fieldName, problems, severity, string, 
sourceHint, tracker,
+                                        ILLEGAL_VERSION_CHARS ) )
+        {
+            return false;
+        }
 
-        return false;
+        return true;
     }
 
     private boolean validatePluginVersion( String fieldName, 
ModelProblemCollector problems, String string,
                                            String sourceHint, 
InputLocationTracker tracker,
                                            ModelBuildingRequest request )
     {
-        Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
-
         if ( string == null )
         {
             // NOTE: The check for missing plugin versions is handled directly 
by the model builder
             return true;
         }
 
-        if ( string.length() > 0 && !hasExpression( string ) && 
!"RELEASE".equals( string )
-            && !"LATEST".equals( string ) )
+        Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
+
+        if ( !validateVersion( fieldName, problems, errOn30, string, 
sourceHint, tracker ) )
         {
-            return true;
+            return false;
         }
 
-        addViolation( problems, errOn30, fieldName, sourceHint, "must be a 
valid version but is '" + string + "'.",
-                      tracker );
+        if ( string.length() <= 0 || "RELEASE".equals( string ) || 
"LATEST".equals( string ) )
+        {
+            addViolation( problems, errOn30, fieldName, sourceHint, "must be a 
valid version but is '" + string + "'.",
+                          tracker );
+            return false;
+        }
 
-        return false;
+        return true;
     }
 
     private static void addViolation( ModelProblemCollector problems, Severity 
severity, String fieldName,

Modified: 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java?rev=1038838&r1=1038837&r2=1038838&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
 Wed Nov 24 21:36:06 2010
@@ -349,9 +349,12 @@ public class DefaultModelValidatorTest
     {
         SimpleProblemCollector result = validate( "bad-dependency-version.xml" 
);
 
-        assertViolations( result, 0, 1, 0 );
+        assertViolations( result, 0, 2, 0 );
 
-        assertTrue( result.getErrors().get( 0 ).contains( "test:b" ) );
+        assertContains( result.getErrors().get( 0 ),
+                        "'dependencies.dependency.version' for test:b:jar must 
be a valid version" );
+        assertContains( result.getErrors().get( 1 ),
+                        "'dependencies.dependency.version' for test:c:jar must 
not contain any of these characters" );
     }
 
     public void testDuplicateModule()
@@ -379,11 +382,16 @@ public class DefaultModelValidatorTest
     {
         SimpleProblemCollector result = validate( "bad-plugin-version.xml" );
 
-        assertViolations( result, 0, 3, 0 );
+        assertViolations( result, 0, 4, 0 );
 
-        assertTrue( result.getErrors().get( 0 ).contains( "test:mip" ) );
-        assertTrue( result.getErrors().get( 1 ).contains( "test:rmv" ) );
-        assertTrue( result.getErrors().get( 2 ).contains( "test:lmv" ) );
+        assertContains( result.getErrors().get( 0 ),
+                        "'build.plugins.plugin.version' for test:mip must be a 
valid version" );
+        assertContains( result.getErrors().get( 1 ),
+                        "'build.plugins.plugin.version' for test:rmv must be a 
valid version" );
+        assertContains( result.getErrors().get( 2 ),
+                        "'build.plugins.plugin.version' for test:lmv must be a 
valid version" );
+        assertContains( result.getErrors().get( 3 ),
+                        "'build.plugins.plugin.version' for test:ifsc must not 
contain any of these characters" );
     }
 
     public void testDistributionManagementStatus()

Modified: 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml?rev=1038838&r1=1038837&r2=1038838&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml
 Wed Nov 24 21:36:06 2010
@@ -34,5 +34,10 @@ under the License.
       <artifactId>b</artifactId>
       <version>${missing.property}</version>
     </dependency>
+    <dependency>
+      <groupId>test</groupId>
+      <artifactId>c</artifactId>
+      <version>1/1</version>
+    </dependency>
   </dependencies>
 </project>

Modified: 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml?rev=1038838&r1=1038837&r2=1038838&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml
 (original)
+++ 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml
 Wed Nov 24 21:36:06 2010
@@ -45,6 +45,11 @@ under the License.
         <artifactId>lmv</artifactId>
         <version>LATEST</version>
       </plugin>
+      <plugin>
+        <groupId>test</groupId>
+        <artifactId>ifsc</artifactId>
+        <version>1/1</version>
+      </plugin>
     </plugins>
   </build>
 </project>


Reply via email to