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/11/18 15:08:29 UTC
svn commit: r881784 - in /maven/maven-3/trunk:
maven-compat/src/main/java/org/apache/maven/profiles/
maven-compat/src/main/java/org/apache/maven/project/validation/
maven-core/src/main/java/org/apache/maven/model/plugin/
maven-core/src/main/java/org/ap...
Author: bentmann
Date: Wed Nov 18 14:08:28 2009
New Revision: 881784
URL: http://svn.apache.org/viewvc?rev=881784&view=rev
Log:
[MNG-4454] Incomplete <parent> element causes NPE
Added:
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml (with props)
Modified:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
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/building/SimpleProblemCollector.java
maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Wed Nov 18 14:08:28 2009
@@ -21,7 +21,9 @@
import org.apache.maven.model.Activation;
import org.apache.maven.model.Profile;
+import org.apache.maven.model.building.ModelProblem;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.profile.DefaultProfileActivationContext;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.apache.maven.model.profile.ProfileSelector;
@@ -192,25 +194,14 @@
profileSelector.getActiveProfiles( profilesById.values(), context, new ModelProblemCollector()
{
- public void addWarning( String message, Exception cause )
+ public void add( Severity severity, String message, Exception cause )
{
- // ignored
+ if ( !ModelProblem.Severity.WARNING.equals( severity ) )
+ {
+ errors.add( new ProfileActivationException( message, cause ) );
+ }
}
- public void addWarning( String message )
- {
- // ignored
- }
-
- public void addError( String message, Exception cause )
- {
- errors.add( new ProfileActivationException( message, cause ) );
- }
-
- public void addError( String message )
- {
- errors.add( new ProfileActivationException( message ) );
- }
} );
if ( !errors.isEmpty() )
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Wed Nov 18 14:08:28 2009
@@ -22,7 +22,9 @@
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.ModelProblem;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -64,24 +66,12 @@
this.result = result;
}
- public void addError( String message )
+ public void add( Severity severity, String message, Exception cause )
{
- result.addMessage( message );
- }
-
- 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
+ if ( !ModelProblem.Severity.WARNING.equals( severity ) )
+ {
+ result.addMessage( message );
+ }
}
}
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/model/plugin/DefaultLifecycleBindingsInjector.java Wed Nov 18 14:08:28 2009
@@ -36,6 +36,7 @@
import org.apache.maven.model.PluginManagement;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.merge.MavenModelMerger;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -63,7 +64,7 @@
if ( defaultPlugins == null )
{
- problems.addError( "Unknown packaging: " + packaging );
+ problems.add( Severity.ERROR, "Unknown packaging: " + packaging, null );
}
else if ( !defaultPlugins.isEmpty() )
{
Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java Wed Nov 18 14:08:28 2009
@@ -27,6 +27,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.building.AbstractModelBuildingListener;
import org.apache.maven.model.building.ModelBuildingEvent;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.plugin.PluginResolutionException;
import org.apache.maven.plugin.version.PluginVersionResolutionException;
@@ -96,7 +97,7 @@
}
catch ( Exception e )
{
- event.getProblems().addError( "Invalid plugin repository: " + e.getMessage(), e );
+ event.getProblems().add( Severity.ERROR, "Invalid plugin repository: " + e.getMessage(), e );
}
project.setPluginArtifactRepositories( pluginRepositories );
@@ -118,11 +119,11 @@
}
catch ( PluginResolutionException e )
{
- event.getProblems().addError( "Unresolveable build extension: " + e.getMessage(), e );
+ event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), e );
}
catch ( PluginVersionResolutionException e )
{
- event.getProblems().addError( "Unresolveable build extension: " + e.getMessage(), e );
+ event.getProblems().add( Severity.ERROR, "Unresolveable build extension: " + e.getMessage(), e );
}
if ( project.getClassRealm() != null )
@@ -152,7 +153,7 @@
}
catch ( Exception e )
{
- event.getProblems().addError( "Invalid artifact repository: " + e.getMessage(), e );
+ event.getProblems().add( Severity.ERROR, "Invalid artifact repository: " + e.getMessage(), e );
}
project.setRemoteArtifactRepositories( remoteRepositories );
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java Wed Nov 18 14:08:28 2009
@@ -35,6 +35,7 @@
import org.apache.maven.model.Parent;
import org.apache.maven.model.Profile;
import org.apache.maven.model.Repository;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.composition.DependencyManagementImporter;
import org.apache.maven.model.inheritance.InheritanceAssembler;
import org.apache.maven.model.interpolation.ModelInterpolator;
@@ -267,7 +268,7 @@
modelValidator.validateEffectiveModel( resultModel, request, problems );
- if ( hasErrors( problems.getProblems() ) )
+ if ( problems.hasErrors() )
{
throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
@@ -320,22 +321,24 @@
if ( pomFile != null )
{
- problems.addError( "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
+ problems.add( Severity.ERROR, "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage(),
+ e );
}
else
{
- problems.addWarning( "Malformed POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
+ problems.add( Severity.WARNING, "Malformed POM " + modelSource.getLocation() + ": "
+ + e.getMessage(), e );
}
}
}
catch ( ModelParseException e )
{
- problems.addFatalError( "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
+ problems.add( Severity.FATAL, "Non-parseable POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
catch ( IOException e )
{
- problems.addFatalError( "Non-readable POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
+ problems.add( Severity.FATAL, "Non-readable POM " + modelSource.getLocation() + ": " + e.getMessage(), e );
throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
@@ -344,23 +347,12 @@
problems.setSource( model );
modelValidator.validateRawModel( model, request, problems );
- return model;
- }
-
- private boolean hasErrors( List<ModelProblem> problems )
- {
- if ( problems != null )
+ if ( problems.hasFatalErrors() )
{
- for ( ModelProblem problem : problems )
- {
- if ( ModelProblem.Severity.ERROR.compareTo( problem.getSeverity() ) >= 0 )
- {
- return true;
- }
- }
+ throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
}
- return false;
+ return model;
}
private ProfileActivationContext getProfileActivationContext( ModelBuildingRequest request )
@@ -395,7 +387,7 @@
}
catch ( InvalidRepositoryException e )
{
- problems.addError( "Invalid repository " + repository.getId() + ": " + e.getMessage(), e );
+ problems.add( Severity.ERROR, "Invalid repository " + repository.getId() + ": " + e.getMessage(), e );
}
}
}
@@ -469,8 +461,9 @@
if ( !"pom".equals( parentModel.getPackaging() ) )
{
- problems.addError( "Invalid packaging for parent POM " + ModelProblemUtils.toSourceHint( parentModel )
- + ", must be \"pom\" but is \"" + parentModel.getPackaging() + "\"" );
+ problems.add( Severity.ERROR, "Invalid packaging for parent POM "
+ + ModelProblemUtils.toSourceHint( parentModel ) + ", must be \"pom\" but is \""
+ + parentModel.getPackaging() + "\"", null );
}
}
else
@@ -575,7 +568,7 @@
}
catch ( UnresolvableModelException e )
{
- problems.addFatalError( "Non-resolvable parent POM "
+ problems.add( Severity.FATAL, "Non-resolvable parent POM "
+ ModelProblemUtils.toId( groupId, artifactId, version ) + " for "
+ ModelProblemUtils.toId( childModel ) + ": " + e.getMessage(), e );
throw new ModelBuildingException( problems.getRootModelId(), problems.getProblems() );
@@ -639,7 +632,7 @@
message += modelId + " -> ";
}
message += imported;
- problems.addError( message );
+ problems.add( Severity.ERROR, message, null );
continue;
}
@@ -663,7 +656,7 @@
}
catch ( UnresolvableModelException e )
{
- problems.addError( "Non-resolvable import POM "
+ problems.add( Severity.ERROR, "Non-resolvable import POM "
+ ModelProblemUtils.toId( groupId, artifactId, version ) + ": " + e.getMessage(), e );
continue;
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelProblemCollector.java Wed Nov 18 14:08:28 2009
@@ -20,9 +20,12 @@
*/
import java.util.ArrayList;
+import java.util.EnumSet;
import java.util.List;
+import java.util.Set;
import org.apache.maven.model.Model;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.io.ModelParseException;
/**
@@ -46,9 +49,26 @@
private Model rootModel;
+ private Set<ModelProblem.Severity> severities = EnumSet.noneOf( ModelProblem.Severity.class );
+
public DefaultModelProblemCollector( List<ModelProblem> problems )
{
this.problems = ( problems != null ) ? problems : new ArrayList<ModelProblem>();
+
+ for ( ModelProblem problem : this.problems )
+ {
+ severities.add( problem.getSeverity() );
+ }
+ }
+
+ public boolean hasFatalErrors()
+ {
+ return severities.contains( ModelProblem.Severity.FATAL );
+ }
+
+ public boolean hasErrors()
+ {
+ return severities.contains( ModelProblem.Severity.ERROR ) || severities.contains( ModelProblem.Severity.FATAL );
}
public List<ModelProblem> getProblems()
@@ -100,34 +120,21 @@
public void add( ModelProblem problem )
{
problems.add( problem );
- }
- public void addAll( List<ModelProblem> problems )
- {
- problems.addAll( problems );
+ severities.add( problem.getSeverity() );
}
- public void addFatalError( String message, Exception cause )
+ public void addAll( List<ModelProblem> problems )
{
- int line = -1;
- int column = -1;
+ this.problems.addAll( problems );
- if ( cause instanceof ModelParseException )
+ for ( ModelProblem problem : problems )
{
- ModelParseException e = (ModelParseException) cause;
- line = e.getLineNumber();
- column = e.getColumnNumber();
+ severities.add( problem.getSeverity() );
}
-
- add( message, ModelProblem.Severity.FATAL, line, column, cause );
}
- public void addError( String message )
- {
- addError( message, null );
- }
-
- public void addError( String message, Exception cause )
+ public void add( Severity severity, String message, Exception cause )
{
int line = -1;
int column = -1;
@@ -139,32 +146,15 @@
column = e.getColumnNumber();
}
- add( message, ModelProblem.Severity.ERROR, line, column, cause );
- }
-
- public void addWarning( String message )
- {
- addWarning( message, null );
+ add( severity, message, line, column, cause );
}
- public void addWarning( String message, Exception cause )
+ private void add( ModelProblem.Severity severity, String message, int line, int column, Exception cause )
{
- int line = -1;
- int column = -1;
+ ModelProblem problem =
+ new DefaultModelProblem( message, severity, getSource(), line, column, getModelId(), cause );
- if ( cause instanceof ModelParseException )
- {
- ModelParseException e = (ModelParseException) cause;
- line = e.getLineNumber();
- column = e.getColumnNumber();
- }
-
- add( message, ModelProblem.Severity.WARNING, line, column, cause );
- }
-
- private void add( String message, ModelProblem.Severity severity, int line, int column, Exception cause )
- {
- problems.add( new DefaultModelProblem( message, severity, getSource(), line, column, getModelId(), cause ) );
+ add( problem );
}
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelProblemCollector.java Wed Nov 18 14:08:28 2009
@@ -32,33 +32,12 @@
{
/**
- * Adds the specified error.
+ * Adds the specified problem.
*
- * @param message The detail message of the error, may be {@code null}.
+ * @param severity The severity of the problem, must not be {@code null}.
+ * @param message The detail message of the problem, may be {@code null}.
+ * @param cause The cause of the problem, may be {@code null}.
*/
- void addError( String message );
-
- /**
- * Adds the specified error.
- *
- * @param message The detail message of the error, may be {@code null}.
- * @param cause The cause of the error, may be {@code null}.
- */
- void addError( String message, Exception cause );
-
- /**
- * Adds the specified warning.
- *
- * @param message The detail message of the warning, may be {@code null}.
- */
- void addWarning( String message );
-
- /**
- * Adds the specified warning.
- *
- * @param message The detail message of the warning, may be {@code null}.
- * @param cause The cause of the warning, may be {@code null}.
- */
- void addWarning( String message, Exception cause );
+ void add( ModelProblem.Severity severity, String message, Exception cause );
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/AbstractStringBasedModelInterpolator.java Wed Nov 18 14:08:28 2009
@@ -22,6 +22,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.path.PathTranslator;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.interpolation.AbstractValueSource;
@@ -229,7 +230,7 @@
}
catch ( InterpolationException e )
{
- problems.addError( e.getMessage(), e );
+ problems.add( Severity.ERROR, e.getMessage(), e );
}
interpolator.clearFeedback();
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/ProblemDetectingValueSource.java Wed Nov 18 14:08:28 2009
@@ -22,6 +22,7 @@
import java.util.List;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.codehaus.plexus.interpolation.ValueSource;
/**
@@ -61,7 +62,7 @@
{
msg += " Please use ${" + newPrefix + expression.substring( bannedPrefix.length() ) + "} instead.";
}
- problems.addWarning( msg );
+ problems.add( Severity.WARNING, msg, null );
}
return value;
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/interpolation/StringSearchModelInterpolator.java Wed Nov 18 14:08:28 2009
@@ -22,6 +22,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
import org.codehaus.plexus.interpolation.Interpolator;
@@ -285,13 +286,13 @@
}
catch ( IllegalArgumentException e )
{
- problems.addError( "Failed to interpolate field: " + fields[i] + " on class: "
- + cls.getName(), e );
+ problems.add( Severity.ERROR, "Failed to interpolate field: " + fields[i]
+ + " on class: " + cls.getName(), e );
}
catch ( IllegalAccessException e )
{
- problems.addError( "Failed to interpolate field: " + fields[i] + " on class: "
- + cls.getName(), e );
+ problems.add( Severity.ERROR, "Failed to interpolate field: " + fields[i]
+ + " on class: " + cls.getName(), e );
}
}
finally
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java Wed Nov 18 14:08:28 2009
@@ -28,6 +28,7 @@
import org.apache.maven.model.Reporting;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -98,8 +99,8 @@
&& request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 )
{
- problems.addWarning( "The <reporting> section is deprecated"
- + ", please move the reports to the <configuration> section of the new Maven Site Plugin." );
+ problems.add( Severity.WARNING, "The <reporting> section is deprecated"
+ + ", please move the reports to the <configuration> section of the new Maven Site Plugin.", null );
}
for ( ReportPlugin plugin : reporting.getPlugins() )
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/DefaultProfileSelector.java Wed Nov 18 14:08:28 2009
@@ -27,6 +27,7 @@
import org.apache.maven.model.Activation;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.profile.activation.ProfileActivator;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
@@ -103,7 +104,7 @@
}
catch ( RuntimeException e )
{
- problems.addError( "Failed to determine activation for profile " + profile.getId(), e );
+ problems.add( Severity.ERROR, "Failed to determine activation for profile " + profile.getId(), e );
return false;
}
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/FileProfileActivator.java Wed Nov 18 14:08:28 2009
@@ -25,6 +25,7 @@
import org.apache.maven.model.ActivationFile;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.path.PathTranslator;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.codehaus.plexus.component.annotations.Component;
@@ -118,8 +119,8 @@
}
catch ( Exception e )
{
- problems.addError( "Failed to interpolate file location " + path + " for profile " + profile.getId() + ": "
- + e.getMessage(), e );
+ problems.add( Severity.ERROR, "Failed to interpolate file location " + path + " for profile "
+ + profile.getId() + ": " + e.getMessage(), e );
return false;
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/JdkVersionProfileActivator.java Wed Nov 18 14:08:28 2009
@@ -26,6 +26,7 @@
import org.apache.maven.model.Activation;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.codehaus.plexus.component.annotations.Component;
@@ -55,7 +56,8 @@
if ( version.length() <= 0 )
{
- problems.addError( "Failed to determine Java version for profile " + profile.getId() );
+ problems.add( Severity.ERROR, "Failed to determine Java version for profile " + profile.getId(),
+ null );
return false;
}
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/PropertyProfileActivator.java Wed Nov 18 14:08:28 2009
@@ -23,6 +23,7 @@
import org.apache.maven.model.ActivationProperty;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelProblemCollector;
+import org.apache.maven.model.building.ModelProblem.Severity;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.util.StringUtils;
@@ -60,7 +61,8 @@
if ( name == null || name.length() <= 0 )
{
- problems.addError( "The property name is required to activate the profile " + profile.getId() );
+ problems.add( Severity.ERROR, "The property name is required to activate the profile "
+ + profile.getId(), null );
return false;
}
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=881784&r1=881783&r2=881784&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 18 14:08:28 2009
@@ -40,6 +40,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.ModelProblem.Severity;
import org.apache.maven.model.building.ModelProblemCollector;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.util.StringUtils;
@@ -60,25 +61,25 @@
Parent parent = model.getParent();
if ( parent != null )
{
- validateStringNotEmpty( "parent.groupId", problems, false, parent.getGroupId() );
+ validateStringNotEmpty( "parent.groupId", problems, Severity.FATAL, parent.getGroupId() );
- validateStringNotEmpty( "parent.artifactId", problems, false, parent.getArtifactId() );
+ validateStringNotEmpty( "parent.artifactId", problems, Severity.FATAL, parent.getArtifactId() );
- validateStringNotEmpty( "parent.version", problems, false, parent.getVersion() );
+ validateStringNotEmpty( "parent.version", problems, Severity.FATAL, parent.getVersion() );
- if ( parent.getGroupId().equals( model.getGroupId() )
- && parent.getArtifactId().equals( model.getArtifactId() ) )
+ if ( equals( parent.getGroupId(), model.getGroupId() )
+ && equals( parent.getArtifactId(), model.getArtifactId() ) )
{
- addViolation( problems, false, "The parent element cannot have the same ID as the project." );
+ addViolation( problems, Severity.ERROR, "The parent element cannot have the same ID as the project." );
}
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
- validateEnum( "modelVersion", problems, false, model.getModelVersion(), null, "4.0.0" );
- validateStringNoExpression( "groupId", problems, true, model.getGroupId() );
- validateStringNoExpression( "artifactId", problems, true, model.getArtifactId() );
- validateStringNoExpression( "version", problems, true, model.getVersion() );
+ validateEnum( "modelVersion", problems, Severity.ERROR, model.getModelVersion(), null, "4.0.0" );
+ validateStringNoExpression( "groupId", problems, Severity.WARNING, model.getGroupId() );
+ validateStringNoExpression( "artifactId", problems, Severity.WARNING, model.getArtifactId() );
+ validateStringNoExpression( "version", problems, Severity.WARNING, model.getVersion() );
validateDependencies( problems, model.getDependencies(), "dependencies.dependency", request );
@@ -98,7 +99,7 @@
{
if ( !profileIds.add( profile.getId() ) )
{
- addViolation( problems, false, "profiles.profile.id must be unique"
+ addViolation( problems, Severity.ERROR, "profiles.profile.id must be unique"
+ " but found duplicate profile with id " + profile.getId() );
}
@@ -123,33 +124,23 @@
public void validateEffectiveModel( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
{
- validateStringNotEmpty( "modelVersion", problems, false, model.getModelVersion() );
+ validateStringNotEmpty( "modelVersion", problems, Severity.ERROR, model.getModelVersion() );
validateId( "groupId", problems, model.getGroupId() );
validateId( "artifactId", problems, model.getArtifactId() );
- validateStringNotEmpty( "packaging", problems, false, model.getPackaging() );
+ validateStringNotEmpty( "packaging", problems, Severity.ERROR, model.getPackaging() );
if ( !model.getModules().isEmpty() && !"pom".equals( model.getPackaging() ) )
{
- addViolation( problems, false, "Packaging '" + model.getPackaging() + "' is invalid. Aggregator projects "
- + "require 'pom' as packaging." );
+ addViolation( problems, Severity.ERROR, "Packaging '" + model.getPackaging()
+ + "' is invalid. Aggregator projects " + "require 'pom' as packaging." );
}
- Parent parent = model.getParent();
- if ( parent != null )
- {
- if ( parent.getGroupId().equals( model.getGroupId() )
- && parent.getArtifactId().equals( model.getArtifactId() ) )
- {
- addViolation( problems, false, "The parent element cannot have the same ID as the project." );
- }
- }
-
- validateStringNotEmpty( "version", problems, false, model.getVersion() );
+ validateStringNotEmpty( "version", problems, Severity.ERROR, model.getVersion() );
- boolean warnOnly = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+ Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
for ( Dependency d : model.getDependencies() )
{
@@ -157,9 +148,10 @@
validateId( "dependencies.dependency.groupId", problems, d.getGroupId(), d.getManagementKey() );
- validateStringNotEmpty( "dependencies.dependency.type", problems, false, d.getType(), d.getManagementKey() );
+ validateStringNotEmpty( "dependencies.dependency.type", problems, Severity.ERROR, d.getType(),
+ d.getManagementKey() );
- validateStringNotEmpty( "dependencies.dependency.version", problems, false, d.getVersion(),
+ validateStringNotEmpty( "dependencies.dependency.version", problems, Severity.ERROR, d.getVersion(),
d.getManagementKey() );
if ( "system".equals( d.getScope() ) )
@@ -168,37 +160,37 @@
if ( StringUtils.isEmpty( systemPath ) )
{
- addViolation( problems, false, "For dependency " + d.getManagementKey()
+ addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
- addViolation( problems, false, "For dependency " + d.getManagementKey()
+ addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify an absolute systemPath but is " + systemPath );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
- addViolation( problems, false, "For dependency " + d.getManagementKey()
+ addViolation( problems, Severity.ERROR, "For dependency " + d.getManagementKey()
+ ": only dependency with system scope can specify systemPath." );
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
- validateVersion( "dependencies.dependency.version", problems, warnOnly, d.getVersion(),
+ validateVersion( "dependencies.dependency.version", problems, errOn30, d.getVersion(),
d.getManagementKey() );
- validateBoolean( "dependencies.dependency.optional", problems, warnOnly, d.getOptional(),
+ validateBoolean( "dependencies.dependency.optional", problems, errOn30, 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 out.
*/
- validateEnum( "dependencies.dependency.scope", problems, true, d.getScope(),
+ validateEnum( "dependencies.dependency.scope", problems, Severity.WARNING, d.getScope(),
d.getManagementKey(), "provided", "compile", "runtime", "test", "system" );
}
}
@@ -208,11 +200,11 @@
{
for ( Dependency d : mgmt.getDependencies() )
{
- validateStringNotEmpty( "dependencyManagement.dependencies.dependency.artifactId", problems, false,
- d.getArtifactId(), d.getManagementKey() );
+ validateStringNotEmpty( "dependencyManagement.dependencies.dependency.artifactId", problems,
+ Severity.ERROR, d.getArtifactId(), d.getManagementKey() );
- validateStringNotEmpty( "dependencyManagement.dependencies.dependency.groupId", problems, false,
- d.getGroupId(), d.getManagementKey() );
+ validateStringNotEmpty( "dependencyManagement.dependencies.dependency.groupId", problems,
+ Severity.ERROR, d.getGroupId(), d.getManagementKey() );
if ( "system".equals( d.getScope() ) )
{
@@ -220,28 +212,27 @@
if ( StringUtils.isEmpty( systemPath ) )
{
- addViolation( problems, false, "For managed dependency " + d.getManagementKey()
+ addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ ": system-scoped dependency must specify systemPath." );
}
else
{
if ( !new File( systemPath ).isAbsolute() )
{
- addViolation( problems, false, "For managed dependency " + d.getManagementKey()
- + ": system-scoped dependency must specify an absolute systemPath but is "
- + systemPath );
+ addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ + ": system-scoped dependency must specify an absolute systemPath but is " + systemPath );
}
}
}
else if ( StringUtils.isNotEmpty( d.getSystemPath() ) )
{
- addViolation( problems, false, "For managed dependency " + d.getManagementKey()
+ addViolation( problems, Severity.ERROR, "For managed dependency " + d.getManagementKey()
+ ": only dependency with system scope can specify systemPath." );
}
if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
{
- validateBoolean( "dependencyManagement.dependencies.dependency.optional", problems, warnOnly,
+ validateBoolean( "dependencyManagement.dependencies.dependency.optional", problems, errOn30,
d.getOptional(), d.getManagementKey() );
}
}
@@ -254,37 +245,37 @@
{
if ( !modules.add( module ) )
{
- addViolation( problems, false, "Duplicate child module: " + module );
+ addViolation( problems, Severity.ERROR, "Duplicate child module: " + module );
}
}
- boolean warnOnMissingPluginVersion =
- request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1;
+ Severity errOn31 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
Build build = model.getBuild();
if ( build != null )
{
for ( Plugin p : build.getPlugins() )
{
- validateStringNotEmpty( "build.plugins.plugin.artifactId", problems, false, p.getArtifactId() );
+ validateStringNotEmpty( "build.plugins.plugin.artifactId", problems, Severity.ERROR,
+ p.getArtifactId() );
- validateStringNotEmpty( "build.plugins.plugin.groupId", problems, false, p.getGroupId() );
+ validateStringNotEmpty( "build.plugins.plugin.groupId", problems, Severity.ERROR, p.getGroupId() );
- validateStringNotEmpty( "build.plugins.plugin.version", problems, warnOnMissingPluginVersion,
- p.getVersion(), p.getKey() );
+ validateStringNotEmpty( "build.plugins.plugin.version", problems, errOn31, p.getVersion(),
+ p.getKey() );
- validateVersion( "build.plugins.plugin.version", problems, warnOnly, p.getVersion(), p.getKey() );
+ validateVersion( "build.plugins.plugin.version", problems, errOn30, p.getVersion(), p.getKey() );
- validateBoolean( "build.plugins.plugin.inherited", problems, warnOnly, p.getInherited(),
+ validateBoolean( "build.plugins.plugin.inherited", problems, errOn30, p.getInherited(),
p.getKey() );
- validateBoolean( "build.plugins.plugin.extensions", problems, warnOnly, p.getExtensions(),
+ validateBoolean( "build.plugins.plugin.extensions", problems, errOn30, p.getExtensions(),
p.getKey() );
for ( Dependency d : p.getDependencies() )
{
validateEnum( "build.plugins.plugin[" + p.getKey() + "].dependencies.dependency.scope",
- problems, warnOnly, d.getScope(), d.getManagementKey(),
+ problems, errOn30, d.getScope(), d.getManagementKey(),
"compile", "runtime", "system" );
}
}
@@ -299,12 +290,14 @@
{
for ( ReportPlugin p : reporting.getPlugins() )
{
- validateStringNotEmpty( "reporting.plugins.plugin.artifactId", problems, false, p.getArtifactId() );
+ validateStringNotEmpty( "reporting.plugins.plugin.artifactId", problems, Severity.ERROR,
+ p.getArtifactId() );
- validateStringNotEmpty( "reporting.plugins.plugin.groupId", problems, false, p.getGroupId() );
+ validateStringNotEmpty( "reporting.plugins.plugin.groupId", problems, Severity.ERROR,
+ p.getGroupId() );
- validateStringNotEmpty( "reporting.plugins.plugin.version", problems, warnOnMissingPluginVersion,
- p.getVersion(), p.getKey() );
+ validateStringNotEmpty( "reporting.plugins.plugin.version", problems, errOn31, p.getVersion(),
+ p.getKey() );
}
}
@@ -325,7 +318,7 @@
{
if ( distMgmt.getStatus() != null )
{
- addViolation( problems, false, "'distributionManagement.status' must not be specified" );
+ addViolation( problems, Severity.ERROR, "'distributionManagement.status' must not be specified" );
}
validateRepositoryLayout( problems, distMgmt.getRepository(), "distributionManagement.repository",
@@ -343,7 +336,7 @@
private boolean validateId( String fieldName, ModelProblemCollector problems, String id, String sourceHint )
{
- if ( !validateStringNotEmpty( fieldName, problems, false, id, sourceHint ) )
+ if ( !validateStringNotEmpty( fieldName, problems, Severity.ERROR, id, sourceHint ) )
{
return false;
}
@@ -352,7 +345,7 @@
boolean match = id.matches( ID_REGEX );
if ( !match )
{
- addViolation( problems, false, "'" + fieldName + "'"
+ addViolation( problems, Severity.ERROR, "'" + fieldName + "'"
+ ( sourceHint != null ? " for " + sourceHint : "" ) + " with value '" + id
+ "' does not match a valid id pattern." );
}
@@ -372,17 +365,17 @@
if ( "pom".equals( dependency.getType() ) && "import".equals( dependency.getScope() )
&& StringUtils.isNotEmpty( dependency.getClassifier() ) )
{
- addViolation( problems, false, "'" + prefix + ".classifier' must be empty for imported POM: " + key );
+ addViolation( problems, Severity.ERROR, "'" + prefix + ".classifier' must be empty for imported POM: " + key );
}
Dependency existing = index.get( key );
if ( existing != null )
{
- boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+ Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
String msg;
- if ( StringUtils.clean( existing.getVersion() ).equals( StringUtils.clean( dependency.getVersion() ) ) )
+ if ( equals( existing.getVersion(), dependency.getVersion() ) )
{
msg =
"duplicate declaration of version "
@@ -395,7 +388,7 @@
+ StringUtils.defaultString( dependency.getVersion(), "(?)" );
}
- addViolation( problems, warning, "'" + prefix
+ addViolation( problems, errOn30, "'" + prefix
+ ".(groupId:artifactId:type:classifier)' must be unique: " + key + " -> " + msg );
}
else
@@ -412,9 +405,10 @@
for ( Repository repository : repositories )
{
- validateStringNotEmpty( prefix + ".id", problems, false, repository.getId() );
+ validateStringNotEmpty( prefix + ".id", problems, Severity.ERROR, repository.getId() );
- validateStringNotEmpty( prefix + "[" + repository.getId() + "].url", problems, false, repository.getUrl() );
+ validateStringNotEmpty( prefix + "[" + repository.getId() + "].url", problems, Severity.ERROR,
+ repository.getUrl() );
String key = repository.getId();
@@ -422,9 +416,9 @@
if ( existing != null )
{
- boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+ Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
- addViolation( problems, warning, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
+ addViolation( problems, errOn30, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
+ existing.getUrl() + " vs " + repository.getUrl() );
}
else
@@ -439,19 +433,20 @@
{
if ( repository != null && "legacy".equals( repository.getLayout() ) )
{
- addViolation( problems, true, "'" + prefix + ".layout = legacy' is deprecated: " + repository.getId() );
+ addViolation( problems, Severity.WARNING, "'" + prefix + ".layout = legacy' is deprecated: "
+ + repository.getId() );
}
}
private void validateResources( ModelProblemCollector problems, List<Resource> resources, String prefix, ModelBuildingRequest request )
{
- boolean warnOnBadBoolean = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+ Severity errOn30 = getSeverity( request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
for ( Resource resource : resources )
{
- validateStringNotEmpty( prefix + ".directory", problems, false, resource.getDirectory() );
+ validateStringNotEmpty( prefix + ".directory", problems, Severity.ERROR, resource.getDirectory() );
- validateBoolean( prefix + ".filtering", problems, warnOnBadBoolean, resource.getFiltering(),
+ validateBoolean( prefix + ".filtering", problems, errOn30, resource.getFiltering(),
resource.getDirectory() );
}
}
@@ -475,7 +470,7 @@
}
catch ( IllegalStateException collisionException )
{
- addViolation( problems, false, collisionException.getMessage() );
+ addViolation( problems, Severity.ERROR, collisionException.getMessage() );
}
}
}
@@ -486,7 +481,7 @@
// Field validation
// ----------------------------------------------------------------------
- private boolean validateStringNoExpression( String fieldName, ModelProblemCollector problems, boolean warning,
+ private boolean validateStringNoExpression( String fieldName, ModelProblemCollector problems, Severity severity,
String string )
{
if ( !hasExpression( string ) )
@@ -494,7 +489,7 @@
return true;
}
- addViolation( problems, warning, "'" + fieldName + "' contains an expression but should be a constant." );
+ addViolation( problems, severity, "'" + fieldName + "' contains an expression but should be a constant." );
return false;
}
@@ -504,9 +499,10 @@
return value != null && value.indexOf( "${" ) >= 0;
}
- private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, boolean warning, String string )
+ private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, Severity severity,
+ String string )
{
- return validateStringNotEmpty( fieldName, problems, warning, string, null );
+ return validateStringNotEmpty( fieldName, problems, severity, string, null );
}
/**
@@ -517,10 +513,10 @@
* <li><code>string.length > 0</code>
* </ul>
*/
- private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, boolean warning,
+ private boolean validateStringNotEmpty( String fieldName, ModelProblemCollector problems, Severity severity,
String string, String sourceHint )
{
- if ( !validateNotNull( fieldName, problems, warning, string, sourceHint ) )
+ if ( !validateNotNull( fieldName, problems, severity, string, sourceHint ) )
{
return false;
}
@@ -532,11 +528,11 @@
if ( sourceHint != null )
{
- addViolation( problems, warning, "'" + fieldName + "' is missing for " + sourceHint );
+ addViolation( problems, severity, "'" + fieldName + "' is missing for " + sourceHint );
}
else
{
- addViolation( problems, warning, "'" + fieldName + "' is missing." );
+ addViolation( problems, severity, "'" + fieldName + "' is missing." );
}
return false;
@@ -549,7 +545,8 @@
* <li><code>string != null</code>
* </ul>
*/
- private boolean validateNotNull( String fieldName, ModelProblemCollector problems, boolean warning, Object object, String sourceHint )
+ private boolean validateNotNull( String fieldName, ModelProblemCollector problems, Severity severity,
+ Object object, String sourceHint )
{
if ( object != null )
{
@@ -558,17 +555,17 @@
if ( sourceHint != null )
{
- addViolation( problems, warning, "'" + fieldName + "' is missing for " + sourceHint );
+ addViolation( problems, severity, "'" + fieldName + "' is missing for " + sourceHint );
}
else
{
- addViolation( problems, warning, "'" + fieldName + "' is missing." );
+ addViolation( problems, severity, "'" + fieldName + "' is missing." );
}
return false;
}
- private boolean validateBoolean( String fieldName, ModelProblemCollector problems, boolean warning, String string,
+ private boolean validateBoolean( String fieldName, ModelProblemCollector problems, Severity severity, String string,
String sourceHint )
{
if ( string == null || string.length() <= 0 )
@@ -583,18 +580,18 @@
if ( sourceHint != null )
{
- addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false' for " + sourceHint
+ addViolation( problems, severity, "'" + fieldName + "' must be 'true' or 'false' for " + sourceHint
+ " but is '" + string + "'." );
}
else
{
- addViolation( problems, warning, "'" + fieldName + "' must be 'true' or 'false' but is '" + string + "'." );
+ addViolation( problems, severity, "'" + fieldName + "' must be 'true' or 'false' but is '" + string + "'." );
}
return false;
}
- private boolean validateEnum( String fieldName, ModelProblemCollector problems, boolean warning, String string,
+ private boolean validateEnum( String fieldName, ModelProblemCollector problems, Severity severity, String string,
String sourceHint, String... validValues )
{
if ( string == null || string.length() <= 0 )
@@ -611,19 +608,19 @@
if ( sourceHint != null )
{
- addViolation( problems, warning, "'" + fieldName + "' must be one of " + values + " for " + sourceHint
+ addViolation( problems, severity, "'" + fieldName + "' must be one of " + values + " for " + sourceHint
+ " but is '" + string + "'." );
}
else
{
- addViolation( problems, warning, "'" + fieldName + "' must be one of " + values + " but is '" + string
+ addViolation( problems, severity, "'" + fieldName + "' must be one of " + values + " but is '" + string
+ "'." );
}
return false;
}
- private boolean validateVersion( String fieldName, ModelProblemCollector problems, boolean warning, String string,
+ private boolean validateVersion( String fieldName, ModelProblemCollector problems, Severity severity, String string,
String sourceHint )
{
if ( string == null || string.length() <= 0 )
@@ -638,26 +635,36 @@
if ( sourceHint != null )
{
- addViolation( problems, warning, "'" + fieldName + "' must be a valid version for " + sourceHint
+ addViolation( problems, severity, "'" + fieldName + "' must be a valid version for " + sourceHint
+ " but is '" + string + "'." );
}
else
{
- addViolation( problems, warning, "'" + fieldName + "' must be a valid version but is '" + string + "'." );
+ addViolation( problems, severity, "'" + fieldName + "' must be a valid version but is '" + string + "'." );
}
return false;
}
- private void addViolation( ModelProblemCollector problems, boolean warning, String message )
+ private static void addViolation( ModelProblemCollector problems, Severity severity, String message )
+ {
+ problems.add( severity, message, null );
+ }
+
+ private static boolean equals( String s1, String s2 )
+ {
+ return StringUtils.clean( s1 ).equals( StringUtils.clean( s2 ) );
+ }
+
+ private static Severity getSeverity( ModelBuildingRequest request, int errorThreshold )
{
- if ( warning )
+ if ( request.getValidationLevel() < errorThreshold )
{
- problems.addWarning( message );
+ return Severity.WARNING;
}
else
{
- problems.addError( message );
+ return Severity.ERROR;
}
}
Modified: maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java?rev=881784&r1=881783&r2=881784&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java (original)
+++ maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/building/SimpleProblemCollector.java Wed Nov 18 14:08:28 2009
@@ -22,6 +22,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.maven.model.building.ModelProblem.Severity;
+
/**
* A simple model problem collector for testing the model building components.
*
@@ -35,34 +37,38 @@
private List<String> errors = new ArrayList<String>();
- public void addError( String message )
- {
- errors.add( message );
- }
+ private List<String> fatals = new ArrayList<String>();
- public void addError( String message, Exception cause )
+ public List<String> getWarnings()
{
- addError( message );
+ return warnings;
}
- public void addWarning( String message )
+ public List<String> getErrors()
{
- warnings.add( message );
+ return errors;
}
- public void addWarning( String message, Exception cause )
+ public List<String> getFatals()
{
- addWarning( message );
+ return fatals;
}
- public List<String> getWarnings()
+ public void add( Severity severity, String message, Exception cause )
{
- return warnings;
- }
+ switch ( severity )
+ {
+ case FATAL:
+ fatals.add( message );
+ break;
+ case ERROR:
+ errors.add( message );
+ break;
+ case WARNING:
+ warnings.add( message );
+ break;
+ }
- public List<String> getErrors()
- {
- return errors;
}
}
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=881784&r1=881783&r2=881784&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 18 14:08:28 2009
@@ -102,8 +102,9 @@
super.tearDown();
}
- private void assertViolations( SimpleProblemCollector result, int errors, int warnings )
+ private void assertViolations( SimpleProblemCollector result, int fatals, int errors, int warnings )
{
+ assertEquals( fatals, result.getFatals().size() );
assertEquals( errors, result.getErrors().size() );
assertEquals( warnings, result.getWarnings().size() );
}
@@ -113,7 +114,7 @@
{
SimpleProblemCollector result = validate( "missing-modelVersion-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'modelVersion' is missing.", result.getErrors().get( 0 ) );
}
@@ -124,7 +125,7 @@
SimpleProblemCollector result =
validateRaw( "bad-modelVersion.xml", ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf( "modelVersion" ) > -1 );
}
@@ -134,7 +135,7 @@
{
SimpleProblemCollector result = validate( "missing-artifactId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'artifactId' is missing.", result.getErrors().get( 0 ) );
}
@@ -144,7 +145,7 @@
{
SimpleProblemCollector result = validate( "missing-groupId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'groupId' is missing.", result.getErrors().get( 0 ) );
}
@@ -154,7 +155,7 @@
{
SimpleProblemCollector result = validate( "invalid-ids-pom.xml" );
- assertViolations( result, 2, 0 );
+ assertViolations( result, 0, 2, 0 );
assertEquals( "'groupId' with value 'o/a/m' does not match a valid id pattern.", result.getErrors().get( 0 ) );
@@ -166,7 +167,7 @@
{
SimpleProblemCollector result = validate( "missing-type-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'packaging' is missing.", result.getErrors().get( 0 ) );
}
@@ -176,7 +177,7 @@
{
SimpleProblemCollector result = validate( "missing-version-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'version' is missing.", result.getErrors().get( 0 ) );
}
@@ -186,7 +187,7 @@
{
SimpleProblemCollector result = validate( "invalid-aggregator-packaging-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf( "Aggregator projects require 'pom' as packaging." ) > -1 );
}
@@ -196,7 +197,7 @@
{
SimpleProblemCollector result = validate( "missing-dependency-artifactId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.artifactId' is missing" ) > -1 );
}
@@ -206,7 +207,7 @@
{
SimpleProblemCollector result = validate( "missing-dependency-groupId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.groupId' is missing" ) > -1 );
}
@@ -216,7 +217,7 @@
{
SimpleProblemCollector result = validate( "missing-dependency-version-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.version' is missing" ) > -1 );
}
@@ -226,7 +227,7 @@
{
SimpleProblemCollector result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf(
"'dependencyManagement.dependencies.dependency.artifactId' is missing" ) > -1 );
@@ -237,7 +238,7 @@
{
SimpleProblemCollector result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).indexOf(
"'dependencyManagement.dependencies.dependency.groupId' is missing" ) > -1 );
@@ -248,7 +249,7 @@
{
SimpleProblemCollector result = validate( "missing-1-pom.xml" );
- assertViolations( result, 4, 0 );
+ assertViolations( result, 0, 4, 0 );
List<String> messages = result.getErrors();
@@ -264,7 +265,7 @@
{
SimpleProblemCollector result = validate( "missing-plugin-artifactId-pom.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'build.plugins.plugin.artifactId' is missing.", result.getErrors().get( 0 ) );
}
@@ -275,14 +276,14 @@
SimpleProblemCollector result =
validateEffective( "missing-plugin-version-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertEquals( "'build.plugins.plugin.version' is missing for org.apache.maven.plugins:maven-it-plugin",
result.getErrors().get( 0 ) );
result = validateEffective( "missing-plugin-version-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
- assertViolations( result, 0, 1 );
+ assertViolations( result, 0, 0, 1 );
}
public void testMissingRepositoryId()
@@ -291,7 +292,7 @@
SimpleProblemCollector result =
validateRaw( "missing-repository-id-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
- assertViolations( result, 4, 0 );
+ assertViolations( result, 0, 4, 0 );
assertEquals( "'repositories.repository.id' is missing.", result.getErrors().get( 0 ) );
@@ -307,7 +308,7 @@
{
SimpleProblemCollector result = validate( "missing-resource-directory-pom.xml" );
- assertViolations( result, 2, 0 );
+ assertViolations( result, 0, 2, 0 );
assertEquals( "'build.resources.resource.directory' is missing.", result.getErrors().get( 0 ) );
@@ -319,7 +320,7 @@
{
SimpleProblemCollector result = validate( "bad-plugin-dependency-scope.xml" );
- assertViolations( result, 3, 0 );
+ assertViolations( result, 0, 3, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "test:d" ) );
@@ -333,7 +334,7 @@
{
SimpleProblemCollector result = validate( "bad-dependency-scope.xml" );
- assertViolations( result, 0, 2 );
+ assertViolations( result, 0, 0, 2 );
assertTrue( result.getWarnings().get( 0 ).contains( "test:f" ) );
@@ -345,7 +346,7 @@
{
SimpleProblemCollector result = validate( "bad-dependency-version.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "test:b" ) );
}
@@ -355,7 +356,7 @@
{
SimpleProblemCollector result = validate( "duplicate-module.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "child" ) );
}
@@ -365,7 +366,7 @@
{
SimpleProblemCollector result = validateRaw( "duplicate-profile-id.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "non-unique-id" ) );
}
@@ -375,7 +376,7 @@
{
SimpleProblemCollector result = validate( "bad-plugin-version.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "test:mip" ) );
}
@@ -385,9 +386,21 @@
{
SimpleProblemCollector result = validate( "distribution-management-status.xml" );
- assertViolations( result, 1, 0 );
+ assertViolations( result, 0, 1, 0 );
assertTrue( result.getErrors().get( 0 ).contains( "distributionManagement.status" ) );
}
+ public void testIncompleteParent()
+ throws Exception
+ {
+ SimpleProblemCollector result = validateRaw( "incomplete-parent.xml" );
+
+ assertViolations( result, 3, 0, 0 );
+
+ assertTrue( result.getFatals().get( 0 ).contains( "parent.groupId" ) );
+ assertTrue( result.getFatals().get( 1 ).contains( "parent.artifactId" ) );
+ assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
+ }
+
}
Added: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml?rev=881784&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml (added)
+++ maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml Wed Nov 18 14:08:28 2009
@@ -0,0 +1,30 @@
+<!--
+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>
+
+ <parent>
+ <!-- all fields missing -->
+ </parent>
+
+ <artifactId>aid</artifactId>
+ <groupId>gid</groupId>
+ <version>0.1</version>
+</project>
Propchange: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/incomplete-parent.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision