Author: bentmann Date: Mon Oct 5 12:30:09 2009 New Revision: 821772 URL: http://svn.apache.org/viewvc?rev=821772&view=rev Log: [MNG-4383] Uninterpolated expressions should cause an error
Added: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml (with props) 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 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=821772&r1=821771&r2=821772&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 Mon Oct 5 12:30:09 2009 @@ -139,8 +139,7 @@ validateStringNotEmpty( "version", problems, false, model.getVersion() ); - boolean warnOnBadBoolean = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0; - boolean warnOnBadDependencyScope = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0; + boolean warnOnly = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0; for ( Dependency d : model.getDependencies() ) { @@ -178,12 +177,15 @@ if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 ) { - validateBoolean( "dependencies.dependency.optional", problems, warnOnBadBoolean, d.getOptional(), + validateVersion( "dependencies.dependency.version", problems, warnOnly, d.getVersion(), + d.getManagementKey() ); + + validateBoolean( "dependencies.dependency.optional", problems, warnOnly, d.getOptional(), d.getManagementKey() ); /* * TODO: Extensions like Flex Mojos use custom scopes like "merged", "internal", "external", etc. In - * order to don't break backward-compat with those, only warn but don't error our. + * order to don't break backward-compat with those, only warn but don't error out. */ validateEnum( "dependencies.dependency.scope", problems, true, d.getScope(), d.getManagementKey(), "provided", "compile", "runtime", "test", "system" ); @@ -227,8 +229,8 @@ if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 ) { - validateBoolean( "dependencyManagement.dependencies.dependency.optional", problems, - warnOnBadBoolean, d.getOptional(), d.getManagementKey() ); + validateBoolean( "dependencyManagement.dependencies.dependency.optional", problems, warnOnly, + d.getOptional(), d.getManagementKey() ); } } } @@ -250,16 +252,16 @@ validateStringNotEmpty( "build.plugins.plugin.version", problems, warnOnMissingPluginVersion, p.getVersion(), p.getKey() ); - validateBoolean( "build.plugins.plugin.inherited", problems, warnOnBadBoolean, p.getInherited(), + validateBoolean( "build.plugins.plugin.inherited", problems, warnOnly, p.getInherited(), p.getKey() ); - validateBoolean( "build.plugins.plugin.extensions", problems, warnOnBadBoolean, p.getExtensions(), + validateBoolean( "build.plugins.plugin.extensions", problems, warnOnly, p.getExtensions(), p.getKey() ); for ( Dependency d : p.getDependencies() ) { validateEnum( "build.plugins.plugin[" + p.getKey() + "].dependencies.dependency.scope", - problems, warnOnBadDependencyScope, d.getScope(), d.getManagementKey(), + problems, warnOnly, d.getScope(), d.getManagementKey(), "compile", "runtime", "system" ); } } @@ -578,11 +580,12 @@ if ( sourceHint != null ) { - addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false' for " + sourceHint ); + addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false' for " + sourceHint + + " but is '" + string + "'." ); } else { - addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false'." ); + addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false' but is '" + string + "'." ); } return false; @@ -605,11 +608,39 @@ if ( sourceHint != null ) { - addViolation( problems, warning, "'" + fieldName + "' must be one of " + values + " for " + sourceHint ); + addViolation( problems, warning, "'" + fieldName + "' must be one of " + values + " for " + sourceHint + + " but is '" + string + "'." ); + } + else + { + addViolation( problems, warning, "'" + fieldName + "' must be one of " + values + " but is '" + string + + "'." ); + } + + return false; + } + + private boolean validateVersion( String fieldName, ModelProblemCollector problems, boolean warning, String string, + String sourceHint ) + { + if ( string == null || string.length() <= 0 ) + { + return true; + } + + if ( !hasExpression( string ) ) + { + return true; + } + + if ( sourceHint != null ) + { + addViolation( problems, warning, "'" + fieldName + "' must be a valid version for " + sourceHint + + " but is '" + string + "'." ); } else { - addViolation( problems, warning, "'" + fieldName + "' must be one of " + values ); + addViolation( problems, warning, "'" + fieldName + "' must be a valid version but is '" + string + "'." ); } return false; 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=821772&r1=821771&r2=821772&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 Mon Oct 5 12:30:09 2009 @@ -334,4 +334,14 @@ assertTrue( result.getWarnings().get( 1 ).contains( "test:g" ) ); } + public void testBadDependencyVersion() + throws Exception + { + SimpleProblemCollector result = validate( "bad-dependency-version.xml" ); + + assertViolations( result, 1, 0 ); + + assertTrue( result.getErrors().get( 0 ).contains( "test:b" ) ); + } + } Added: 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=821772&view=auto ============================================================================== --- maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml (added) +++ maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml Mon Oct 5 12:30:09 2009 @@ -0,0 +1,38 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project> + <modelVersion>4.0.0</modelVersion> + <artifactId>aid</artifactId> + <groupId>gid</groupId> + <version>0.1</version> + + <dependencies> + <dependency> + <groupId>test</groupId> + <artifactId>a</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>b</artifactId> + <version>${missing.property}</version> + </dependency> + </dependencies> +</project> Propchange: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-dependency-version.xml ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision