You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/08/03 18:20:06 UTC
svn commit: r800451 - in /maven/components/trunk:
maven-compat/src/main/java/org/apache/maven/project/validation/
maven-model-builder/src/main/java/org/apache/maven/model/building/
maven-model-builder/src/main/java/org/apache/maven/model/validation/ ma...
Author: bentmann
Date: Mon Aug 3 16:20:06 2009
New Revision: 800451
URL: http://svn.apache.org/viewvc?rev=800451&view=rev
Log:
o Refactored model validator to use problem collector
Modified:
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java
maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Mon Aug 3 16:20:06 2009
@@ -22,6 +22,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblemCollector;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -34,7 +35,7 @@
public class DefaultModelValidator
implements ModelValidator
{
-
+
@Requirement
private org.apache.maven.model.validation.ModelValidator modelValidator;
@@ -45,12 +46,44 @@
ModelBuildingRequest request =
new DefaultModelBuildingRequest().setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 );
- for ( String message : modelValidator.validateEffectiveModel( model, request ).getErrors() )
+ SimpleModelProblemCollector problems = new SimpleModelProblemCollector( result );
+
+ modelValidator.validateEffectiveModel( model, request, problems );
+
+ return result;
+ }
+
+ private static class SimpleModelProblemCollector
+ implements ModelProblemCollector
+ {
+
+ ModelValidationResult result;
+
+ public SimpleModelProblemCollector( ModelValidationResult result )
+ {
+ this.result = result;
+ }
+
+ public void addError( String message )
{
result.addMessage( message );
}
- return result;
+ public void addError( String message, Exception cause )
+ {
+ result.addMessage( message );
+ }
+
+ public void addWarning( String message )
+ {
+ // not supported
+ }
+
+ public void addWarning( String message, Exception cause )
+ {
+ // not supported
+ }
+
}
}
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Mon Aug 3 16:20:06 2009
@@ -53,7 +53,6 @@
import org.apache.maven.model.resolution.ModelResolver;
import org.apache.maven.model.resolution.UnresolvableModelException;
import org.apache.maven.model.superpom.SuperPomProvider;
-import org.apache.maven.model.validation.ModelValidationResult;
import org.apache.maven.model.validation.ModelValidator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -121,7 +120,7 @@
List<Profile> activeExternalProfiles =
profileSelector.getActiveProfiles( request.getProfiles(), profileActivationContext, problems );
- Model inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems.getProblems() );
+ Model inputModel = readModel( request.getModelSource(), request.getPomFile(), request, problems );
ModelData resultData = new ModelData( inputModel );
@@ -159,7 +158,7 @@
configureResolver( request.getModelResolver(), tmpModel, problems );
- currentData = readParent( tmpModel, request, problems.getProblems() );
+ currentData = readParent( tmpModel, request, problems );
}
ModelData superData = new ModelData( getSuperModel() );
@@ -235,8 +234,7 @@
pluginConfigurationExpander.expandPluginConfiguration( resultModel, request );
}
- ModelValidationResult validationResult = modelValidator.validateEffectiveModel( resultModel, request );
- addProblems( resultModel, validationResult, problems.getProblems() );
+ modelValidator.validateEffectiveModel( resultModel, request, problems );
if ( hasErrors( problems.getProblems() ) )
{
@@ -247,7 +245,7 @@
}
private Model readModel( ModelSource modelSource, File pomFile, ModelBuildingRequest request,
- List<ModelProblem> problems )
+ DefaultModelProblemCollector problems )
throws ModelBuildingException
{
Model model;
@@ -277,19 +275,18 @@
{
problems.add( new ModelProblem( "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(),
ModelProblem.Severity.FATAL, modelSource.getLocation(), e ) );
- throw new ModelBuildingException( problems );
+ throw new ModelBuildingException( problems.getProblems() );
}
catch ( IOException e )
{
problems.add( new ModelProblem( "Non-readable POM " + modelSource.getLocation() + ": " + e.getMessage(),
ModelProblem.Severity.FATAL, modelSource.getLocation(), e ) );
- throw new ModelBuildingException( problems );
+ throw new ModelBuildingException( problems.getProblems() );
}
model.setPomFile( pomFile );
- ModelValidationResult validationResult = modelValidator.validateRawModel( model, request );
- addProblems( model, validationResult, problems );
+ modelValidator.validateRawModel( model, request, problems );
return model;
}
@@ -310,26 +307,6 @@
return false;
}
- private void addProblems( Model model, ModelValidationResult result, List<ModelProblem> problems )
- {
- if ( !result.getWarnings().isEmpty() || !result.getErrors().isEmpty() )
- {
- String source = ModelProblemUtils.toSourceHint( model );
-
- for ( String message : result.getWarnings() )
- {
- problems.add( new ModelProblem( "Invalid POM " + source + ": " + message,
- ModelProblem.Severity.WARNING, source ) );
- }
-
- for ( String message : result.getErrors() )
- {
- problems.add( new ModelProblem( "Invalid POM " + source + ": " + message, ModelProblem.Severity.ERROR,
- source ) );
- }
- }
- }
-
private ProfileActivationContext getProfileActivationContext( ModelBuildingRequest request )
{
ProfileActivationContext context = new DefaultProfileActivationContext();
@@ -394,7 +371,7 @@
}
}
- private ModelData readParent( Model childModel, ModelBuildingRequest request, List<ModelProblem> problems )
+ private ModelData readParent( Model childModel, ModelBuildingRequest request, DefaultModelProblemCollector problems )
throws ModelBuildingException
{
ModelData parentData;
@@ -449,7 +426,8 @@
return parentData;
}
- private ModelData readParentLocally( Model childModel, ModelBuildingRequest request, List<ModelProblem> problems )
+ private ModelData readParentLocally( Model childModel, ModelBuildingRequest request,
+ DefaultModelProblemCollector problems )
throws ModelBuildingException
{
File pomFile = getParentPomFile( childModel );
@@ -514,7 +492,8 @@
return pomFile;
}
- private ModelData readParentExternally( Model childModel, ModelBuildingRequest request, List<ModelProblem> problems )
+ private ModelData readParentExternally( Model childModel, ModelBuildingRequest request,
+ DefaultModelProblemCollector problems )
throws ModelBuildingException
{
Parent parent = childModel.getParent();
@@ -543,7 +522,7 @@
+ ModelProblemUtils.toId( groupId, artifactId, version ) + " for POM "
+ ModelProblemUtils.toSourceHint( childModel ) + ": " + e.getMessage(), ModelProblem.Severity.FATAL,
ModelProblemUtils.toSourceHint( childModel ), e ) );
- throw new ModelBuildingException( problems );
+ throw new ModelBuildingException( problems.getProblems() );
}
Model parentModel = readModel( modelSource, null, request, problems );
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java Mon Aug 3 16:20:06 2009
@@ -74,6 +74,11 @@
return sourceHint;
}
+ public void add( ModelProblem problem )
+ {
+ problems.add( problem );
+ }
+
public void addError( String message )
{
problems.add( new ModelProblem( message, ModelProblem.Severity.ERROR, getSourceHint() ) );
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Mon Aug 3 16:20:06 2009
@@ -36,6 +36,7 @@
import org.apache.maven.model.Repository;
import org.apache.maven.model.Resource;
import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblemCollector;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.util.StringUtils;
@@ -50,78 +51,72 @@
private static final String ID_REGEX = "[A-Za-z0-9_\\-.]+";
- public ModelValidationResult validateRawModel( Model model, ModelBuildingRequest request )
+ public void validateRawModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
{
- ModelValidationResult result = new ModelValidationResult();
-
Parent parent = model.getParent();
if ( parent != null )
{
- validateStringNotEmpty( "parent.groupId", result, false, parent.getGroupId() );
+ validateStringNotEmpty( "parent.groupId", problems, false, parent.getGroupId() );
- validateStringNotEmpty( "parent.artifactId", result, false, parent.getArtifactId() );
+ validateStringNotEmpty( "parent.artifactId", problems, false, parent.getArtifactId() );
- validateStringNotEmpty( "parent.version", result, false, parent.getVersion() );
+ validateStringNotEmpty( "parent.version", problems, false, parent.getVersion() );
if ( parent.getGroupId().equals( model.getGroupId() )
&& parent.getArtifactId().equals( model.getArtifactId() ) )
{
- addViolation( result, false, "The parent element cannot have the same ID as the project." );
+ addViolation( problems, false, "The parent element cannot have the same ID as the project." );
}
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
- validateDependencies( result, model.getDependencies(), "dependencies.dependency", request );
+ validateDependencies( problems, model.getDependencies(), "dependencies.dependency", request );
if ( model.getDependencyManagement() != null )
{
- validateDependencies( result, model.getDependencyManagement().getDependencies(),
+ validateDependencies( problems, model.getDependencyManagement().getDependencies(),
"dependencyManagement.dependencies.dependency", request );
}
- validateRepositories( result, model.getRepositories(), "repositories.repository", request );
+ validateRepositories( problems, model.getRepositories(), "repositories.repository", request );
- validateRepositories( result, model.getPluginRepositories(), "pluginRepositories.pluginRepository", request );
+ validateRepositories( problems, model.getPluginRepositories(), "pluginRepositories.pluginRepository", request );
for ( Profile profile : model.getProfiles() )
{
- validateDependencies( result, profile.getDependencies(), "profiles.profile[" + profile.getId()
+ validateDependencies( problems, profile.getDependencies(), "profiles.profile[" + profile.getId()
+ "].dependencies.dependency", request );
if ( profile.getDependencyManagement() != null )
{
- validateDependencies( result, profile.getDependencyManagement().getDependencies(),
+ validateDependencies( problems, profile.getDependencyManagement().getDependencies(),
"profiles.profile[" + profile.getId()
+ "].dependencyManagement.dependencies.dependency", request );
}
- validateRepositories( result, profile.getRepositories(), "profiles.profile[" + profile.getId()
+ validateRepositories( problems, profile.getRepositories(), "profiles.profile[" + profile.getId()
+ "].repositories.repository", request );
- validateRepositories( result, profile.getPluginRepositories(), "profiles.profile[" + profile.getId()
+ validateRepositories( problems, profile.getPluginRepositories(), "profiles.profile[" + profile.getId()
+ "].pluginRepositories.pluginRepository", request );
}
}
-
- return result;
}
- public ModelValidationResult validateEffectiveModel( Model model, ModelBuildingRequest request )
+ public void validateEffectiveModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
{
- ModelValidationResult result = new ModelValidationResult();
+ validateStringNotEmpty( "modelVersion", problems, false, model.getModelVersion() );
- validateStringNotEmpty( "modelVersion", result, false, model.getModelVersion() );
+ validateId( "groupId", problems, model.getGroupId() );
- validateId( "groupId", result, model.getGroupId() );
+ validateId( "artifactId", problems, model.getArtifactId() );
- validateId( "artifactId", result, model.getArtifactId() );
-
- validateStringNotEmpty( "packaging", result, false, model.getPackaging() );
+ validateStringNotEmpty( "packaging", problems, false, model.getPackaging() );
if ( !model.getModules().isEmpty() && !"pom".equals( model.getPackaging() ) )
{
- addViolation( result, false, "Packaging '" + model.getPackaging() + "' is invalid. Aggregator projects " +
+ addViolation( problems, false, "Packaging '" + model.getPackaging() + "' is invalid. Aggregator projects " +
"require 'pom' as packaging." );
}
@@ -131,21 +126,21 @@
if ( parent.getGroupId().equals( model.getGroupId() ) &&
parent.getArtifactId().equals( model.getArtifactId() ) )
{
- addViolation( result, false, "The parent element cannot have the same ID as the project." );
+ addViolation( problems, false, "The parent element cannot have the same ID as the project." );
}
}
- validateStringNotEmpty( "version", result, false, model.getVersion() );
+ validateStringNotEmpty( "version", problems, false, model.getVersion() );
for ( Dependency d : model.getDependencies() )
{
- validateId( "dependencies.dependency.artifactId", result, d.getArtifactId() );
+ validateId( "dependencies.dependency.artifactId", problems, d.getArtifactId() );
- validateId( "dependencies.dependency.groupId", result, d.getGroupId() );
+ validateId( "dependencies.dependency.groupId", problems, d.getGroupId() );
- validateStringNotEmpty( "dependencies.dependency.type", result, false, d.getType(), d.getManagementKey() );
+ validateStringNotEmpty( "dependencies.dependency.type", problems, false, d.getType(), d.getManagementKey() );
- validateStringNotEmpty( "dependencies.dependency.version", result, false, d.getVersion(),
+ validateStringNotEmpty( "dependencies.dependency.version", problems, false, d.getVersion(),
d.getManagementKey() );
if ( "system".equals( d.getScope() ) )
@@ -154,20 +149,20 @@
if ( StringUtils.isEmpty( systemPath ) )
{
- addViolation( result, false, "For dependency " + d + ": system-scoped dependency must specify systemPath." );
+ addViolation( problems, false, "For dependency " + d + ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
- addViolation( result, false, "For dependency " + d + ": system-scoped dependency must " +
+ addViolation( problems, false, "For dependency " + d + ": system-scoped dependency must " +
"specify an absolute path systemPath." );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
- addViolation( result, false,
+ addViolation( problems, false,
"For dependency " + d + ": only dependency with system scope can specify systemPath." );
}
}
@@ -177,10 +172,10 @@
{
for ( Dependency d : mgmt.getDependencies() )
{
- validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.artifactId", result,
+ validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.artifactId", problems,
d.getArtifactId() );
- validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.groupId", result,
+ validateSubElementStringNotEmpty( d, "dependencyManagement.dependencies.dependency.groupId", problems,
d.getGroupId() );
if ( "system".equals( d.getScope() ) )
@@ -189,21 +184,21 @@
if ( StringUtils.isEmpty( systemPath ) )
{
- addViolation( result, false,
+ addViolation( problems, false,
"For managed dependency " + d + ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
- addViolation( result, false, "For managed dependency " + d + ": system-scoped dependency must " +
+ addViolation( problems, false, "For managed dependency " + d + ": system-scoped dependency must " +
"specify an absolute path systemPath." );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
- addViolation( result, false,
+ addViolation( problems, false,
"For managed dependency " + d + ": only dependency with system scope can specify systemPath." );
}
}
@@ -219,17 +214,17 @@
{
for ( Plugin p : build.getPlugins() )
{
- validateStringNotEmpty( "build.plugins.plugin.artifactId", result, false, p.getArtifactId() );
+ validateStringNotEmpty( "build.plugins.plugin.artifactId", problems, false, p.getArtifactId() );
- validateStringNotEmpty( "build.plugins.plugin.groupId", result, false, p.getGroupId() );
+ validateStringNotEmpty( "build.plugins.plugin.groupId", problems, false, p.getGroupId() );
- validateStringNotEmpty( "build.plugins.plugin.version", result, warnOnMissingPluginVersion,
+ validateStringNotEmpty( "build.plugins.plugin.version", problems, warnOnMissingPluginVersion,
p.getVersion(), p.getKey() );
}
- validateResources( result, build.getResources(), "build.resources.resource" );
+ validateResources( problems, build.getResources(), "build.resources.resource" );
- validateResources( result, build.getTestResources(), "build.testResources.testResource" );
+ validateResources( problems, build.getTestResources(), "build.testResources.testResource" );
}
Reporting reporting = model.getReporting();
@@ -237,24 +232,22 @@
{
for ( ReportPlugin p : reporting.getPlugins() )
{
- validateStringNotEmpty( "reporting.plugins.plugin.artifactId", result, false, p.getArtifactId() );
+ validateStringNotEmpty( "reporting.plugins.plugin.artifactId", problems, false, p.getArtifactId() );
- validateStringNotEmpty( "reporting.plugins.plugin.groupId", result, false, p.getGroupId() );
+ validateStringNotEmpty( "reporting.plugins.plugin.groupId", problems, false, p.getGroupId() );
- validateStringNotEmpty( "reporting.plugins.plugin.version", result, warnOnMissingPluginVersion,
+ validateStringNotEmpty( "reporting.plugins.plugin.version", problems, warnOnMissingPluginVersion,
p.getVersion(), p.getKey() );
}
}
- forcePluginExecutionIdCollision( model, result );
+ forcePluginExecutionIdCollision( model, problems );
}
-
- return result;
}
- private boolean validateId( String fieldName, ModelValidationResult result, String id )
+ private boolean validateId( String fieldName, ModelProblemCollector problems, String id )
{
- if ( !validateStringNotEmpty( fieldName, result, false, id ) )
+ if ( !validateStringNotEmpty( fieldName, problems, false, id ) )
{
return false;
}
@@ -263,13 +256,13 @@
boolean match = id.matches( ID_REGEX );
if ( !match )
{
- addViolation( result, false, "'" + fieldName + "' with value '" + id + "' does not match a valid id pattern." );
+ addViolation( problems, false, "'" + fieldName + "' with value '" + id + "' does not match a valid id pattern." );
}
return match;
}
}
- private void validateDependencies( ModelValidationResult result, List<Dependency> dependencies, String prefix,
+ private void validateDependencies( ModelProblemCollector problems, List<Dependency> dependencies, String prefix,
ModelBuildingRequest request )
{
Map<String, Dependency> index = new HashMap<String, Dependency>();
@@ -281,7 +274,7 @@
if ( "pom".equals( dependency.getType() ) && "import".equals( dependency.getScope() )
&& StringUtils.isNotEmpty( dependency.getClassifier() ) )
{
- addViolation( result, false, "'" + prefix + ".classifier' must be empty for imported POM: " + key );
+ addViolation( problems, false, "'" + prefix + ".classifier' must be empty for imported POM: " + key );
}
Dependency existing = index.get( key );
@@ -290,7 +283,7 @@
{
boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
- addViolation( result, warning, "'" + prefix + ".(groupId:artifactId:type:classifier)' must be unique: "
+ addViolation( problems, warning, "'" + prefix + ".(groupId:artifactId:type:classifier)' must be unique: "
+ key + " -> " + existing.getVersion() + " vs " + dependency.getVersion() );
}
else
@@ -300,16 +293,16 @@
}
}
- private void validateRepositories( ModelValidationResult result, List<Repository> repositories, String prefix,
+ private void validateRepositories( ModelProblemCollector problems, List<Repository> repositories, String prefix,
ModelBuildingRequest request )
{
Map<String, Repository> index = new HashMap<String, Repository>();
for ( Repository repository : repositories )
{
- validateStringNotEmpty( prefix + ".id", result, false, repository.getId() );
+ validateStringNotEmpty( prefix + ".id", problems, false, repository.getId() );
- validateStringNotEmpty( prefix + ".url", result, false, repository.getUrl() );
+ validateStringNotEmpty( prefix + ".url", problems, false, repository.getUrl() );
String key = repository.getId();
@@ -319,7 +312,7 @@
{
boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
- addViolation( result, warning, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
+ addViolation( problems, warning, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
+ existing.getUrl() + " vs " + repository.getUrl() );
}
else
@@ -329,15 +322,15 @@
}
}
- private void validateResources( ModelValidationResult result, List<Resource> resources, String prefix )
+ private void validateResources( ModelProblemCollector problems, List<Resource> resources, String prefix )
{
for ( Resource resource : resources )
{
- validateStringNotEmpty( prefix + ".directory", result, false, resource.getDirectory() );
+ validateStringNotEmpty( prefix + ".directory", problems, false, resource.getDirectory() );
}
}
- private void forcePluginExecutionIdCollision( Model model, ModelValidationResult result )
+ private void forcePluginExecutionIdCollision( Model model, ModelProblemCollector problems )
{
Build build = model.getBuild();
@@ -356,7 +349,7 @@
}
catch ( IllegalStateException collisionException )
{
- addViolation( result, false, collisionException.getMessage() );
+ addViolation( problems, false, collisionException.getMessage() );
}
}
}
@@ -367,9 +360,9 @@
// Field validation
// ----------------------------------------------------------------------
- private boolean validateStringNotEmpty( String fieldName, ModelValidationResult result, boolean warning, String string )
+ private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, boolean warning, String string )
{
- return validateStringNotEmpty( fieldName, result, warning, string, null );
+ return validateStringNotEmpty( fieldName, problems, warning, string, null );
}
/**
@@ -380,10 +373,10 @@
* <li><code>string.length > 0</code>
* </ul>
*/
- private boolean validateStringNotEmpty( String fieldName, ModelValidationResult result, boolean warning,
+ private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, boolean warning,
String string, String sourceHint )
{
- if ( !validateNotNull( fieldName, result, warning, string, sourceHint ) )
+ if ( !validateNotNull( fieldName, problems, warning, string, sourceHint ) )
{
return false;
}
@@ -395,11 +388,11 @@
if ( sourceHint != null )
{
- addViolation( result, false, "'" + fieldName + "' is missing for " + sourceHint );
+ addViolation( problems, false, "'" + fieldName + "' is missing for " + sourceHint );
}
else
{
- addViolation( result, false, "'" + fieldName + "' is missing." );
+ addViolation( problems, false, "'" + fieldName + "' is missing." );
}
return false;
@@ -414,9 +407,9 @@
* </ul>
*/
private boolean validateSubElementStringNotEmpty( Object subElementInstance, String fieldName,
- ModelValidationResult result, String string )
+ ModelProblemCollector problems, String string )
{
- if ( !validateSubElementNotNull( subElementInstance, fieldName, result, string ) )
+ if ( !validateSubElementNotNull( subElementInstance, fieldName, problems, string ) )
{
return false;
}
@@ -426,7 +419,7 @@
return true;
}
- addViolation( result, false, "In " + subElementInstance + ":\n\n -> '" + fieldName + "' is missing." );
+ addViolation( problems, false, "In " + subElementInstance + ":\n\n -> '" + fieldName + "' is missing." );
return false;
}
@@ -438,7 +431,7 @@
* <li><code>string != null</code>
* </ul>
*/
- private boolean validateNotNull( String fieldName, ModelValidationResult result, boolean warning, Object object, String sourceHint )
+ private boolean validateNotNull( String fieldName, ModelProblemCollector problems, boolean warning, Object object, String sourceHint )
{
if ( object != null )
{
@@ -447,11 +440,11 @@
if ( sourceHint != null )
{
- addViolation( result, warning, "'" + fieldName + "' is missing for " + sourceHint );
+ addViolation( problems, warning, "'" + fieldName + "' is missing for " + sourceHint );
}
else
{
- addViolation( result, warning, "'" + fieldName + "' is missing." );
+ addViolation( problems, warning, "'" + fieldName + "' is missing." );
}
return false;
@@ -465,27 +458,27 @@
* </ul>
*/
private boolean validateSubElementNotNull( Object subElementInstance, String fieldName,
- ModelValidationResult result, Object object )
+ ModelProblemCollector problems, Object object )
{
if ( object != null )
{
return true;
}
- addViolation( result, false, "In " + subElementInstance + ":\n\n -> '" + fieldName + "' is missing." );
+ addViolation( problems, false, "In " + subElementInstance + ":\n\n -> '" + fieldName + "' is missing." );
return false;
}
- private void addViolation( ModelValidationResult result, boolean warning, String message )
+ private void addViolation( ModelProblemCollector problems, boolean warning, String message )
{
if ( warning )
{
- result.addWarning( message );
+ problems.addWarning( message );
}
else
{
- result.addError( message );
+ problems.addError( message );
}
}
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/ModelValidator.java Mon Aug 3 16:20:06 2009
@@ -21,6 +21,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblemCollector;
/**
* Checks the model for missing or invalid values.
@@ -37,9 +38,9 @@
*
* @param model The model to validate, must not be {@code null}.
* @param request The model building request that holds further settings, must not be {@code null}.
- * @return The result of the validation, never {@code null}.
+ * @param problems The container used to collect problems that were encountered, must not be {@code null}.
*/
- ModelValidationResult validateRawModel( Model model, ModelBuildingRequest request );
+ void validateRawModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems );
/**
* Checks the specified (effective) model for missing or invalid values. The effective model is fully assembled and
@@ -47,8 +48,8 @@
*
* @param model The model to validate, must not be {@code null}.
* @param request The model building request that holds further settings, must not be {@code null}.
- * @return The result of the validation, never {@code null}.
+ * @param problems The container used to collect problems that were encountered, must not be {@code null}.
*/
- ModelValidationResult validateEffectiveModel( Model model, ModelBuildingRequest request );
+ void validateEffectiveModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems );
}
Modified: maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java?rev=800451&r1=800450&r2=800451&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java (original)
+++ maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java Mon Aug 3 16:20:06 2009
@@ -20,11 +20,13 @@
*/
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.List;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelProblemCollector;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.PlexusTestCase;
@@ -38,6 +40,46 @@
private DefaultModelValidator validator;
+ private static class SimpleProblemCollector
+ implements ModelProblemCollector
+ {
+
+ private List<String> warnings = new ArrayList<String>();
+
+ private List<String> errors = new ArrayList<String>();
+
+ public void addError( String message )
+ {
+ errors.add( message );
+ }
+
+ public void addError( String message, Exception cause )
+ {
+ addError( message );
+ }
+
+ public void addWarning( String message )
+ {
+ warnings.add( message );
+ }
+
+ public void addWarning( String message, Exception cause )
+ {
+ addWarning( message );
+ }
+
+ public List<String> getWarnings()
+ {
+ return warnings;
+ }
+
+ public List<String> getErrors()
+ {
+ return errors;
+ }
+
+ }
+
private Model read( String pom )
throws Exception
{
@@ -47,26 +89,34 @@
return new MavenXpp3Reader().read( is );
}
- private ModelValidationResult validate( String pom )
+ private SimpleProblemCollector validate( String pom )
throws Exception
{
return validateEffective( pom, ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
}
- private ModelValidationResult validateEffective( String pom, int level )
+ private SimpleProblemCollector validateEffective( String pom, int level )
throws Exception
{
ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
- return validator.validateEffectiveModel( read( pom ), request );
+ SimpleProblemCollector problems = new SimpleProblemCollector();
+
+ validator.validateEffectiveModel( read( pom ), request, problems );
+
+ return problems;
}
- private ModelValidationResult validateRaw( String pom, int level )
+ private SimpleProblemCollector validateRaw( String pom, int level )
throws Exception
{
ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
- return validator.validateRawModel( read( pom ), request );
+ SimpleProblemCollector problems = new SimpleProblemCollector();
+
+ validator.validateRawModel( read( pom ), request, problems );
+
+ return problems;
}
@Override
@@ -87,7 +137,7 @@
super.tearDown();
}
- private void assertViolations( ModelValidationResult result, int errors, int warnings )
+ private void assertViolations( SimpleProblemCollector result, int errors, int warnings )
{
assertEquals( errors, result.getErrors().size() );
assertEquals( warnings, result.getWarnings().size() );
@@ -96,7 +146,7 @@
public void testMissingModelVersion()
throws Exception
{
- ModelValidationResult result = validate( "missing-modelVersion-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-modelVersion-pom.xml" );
assertViolations( result, 1, 0 );
@@ -106,7 +156,7 @@
public void testMissingArtifactId()
throws Exception
{
- ModelValidationResult result = validate( "missing-artifactId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-artifactId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -116,7 +166,7 @@
public void testMissingGroupId()
throws Exception
{
- ModelValidationResult result = validate( "missing-groupId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-groupId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -126,7 +176,7 @@
public void testInvalidIds()
throws Exception
{
- ModelValidationResult result = validate( "invalid-ids-pom.xml" );
+ SimpleProblemCollector result = validate( "invalid-ids-pom.xml" );
assertViolations( result, 2, 0 );
@@ -138,7 +188,7 @@
public void testMissingType()
throws Exception
{
- ModelValidationResult result = validate( "missing-type-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-type-pom.xml" );
assertViolations( result, 1, 0 );
@@ -148,7 +198,7 @@
public void testMissingVersion()
throws Exception
{
- ModelValidationResult result = validate( "missing-version-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-version-pom.xml" );
assertViolations( result, 1, 0 );
@@ -158,7 +208,7 @@
public void testInvalidAggregatorPackaging()
throws Exception
{
- ModelValidationResult result = validate( "invalid-aggregator-packaging-pom.xml" );
+ SimpleProblemCollector result = validate( "invalid-aggregator-packaging-pom.xml" );
assertViolations( result, 1, 0 );
@@ -168,7 +218,7 @@
public void testMissingDependencyArtifactId()
throws Exception
{
- ModelValidationResult result = validate( "missing-dependency-artifactId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-dependency-artifactId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -178,7 +228,7 @@
public void testMissingDependencyGroupId()
throws Exception
{
- ModelValidationResult result = validate( "missing-dependency-groupId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-dependency-groupId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -188,7 +238,7 @@
public void testMissingDependencyVersion()
throws Exception
{
- ModelValidationResult result = validate( "missing-dependency-version-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-dependency-version-pom.xml" );
assertViolations( result, 1, 0 );
@@ -198,7 +248,7 @@
public void testMissingDependencyManagementArtifactId()
throws Exception
{
- ModelValidationResult result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -209,7 +259,7 @@
public void testMissingDependencyManagementGroupId()
throws Exception
{
- ModelValidationResult result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -220,7 +270,7 @@
public void testMissingAll()
throws Exception
{
- ModelValidationResult result = validate( "missing-1-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-1-pom.xml" );
assertViolations( result, 4, 0 );
@@ -236,7 +286,7 @@
public void testMissingPluginArtifactId()
throws Exception
{
- ModelValidationResult result = validate( "missing-plugin-artifactId-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-plugin-artifactId-pom.xml" );
assertViolations( result, 1, 0 );
@@ -246,7 +296,7 @@
public void testMissingPluginVersion()
throws Exception
{
- ModelValidationResult result =
+ SimpleProblemCollector result =
validateEffective( "missing-plugin-version-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
assertViolations( result, 1, 0 );
@@ -262,7 +312,7 @@
public void testMissingRepositoryId()
throws Exception
{
- ModelValidationResult result =
+ SimpleProblemCollector result =
validateRaw( "missing-repository-id-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
assertViolations( result, 4, 0 );
@@ -279,7 +329,7 @@
public void testMissingResourceDirectory()
throws Exception
{
- ModelValidationResult result = validate( "missing-resource-directory-pom.xml" );
+ SimpleProblemCollector result = validate( "missing-resource-directory-pom.xml" );
assertViolations( result, 2, 0 );