Author: bentmann
Date: Tue Dec  8 13:13:39 2009
New Revision: 888390

URL: http://svn.apache.org/viewvc?rev=888390&view=rev
Log:
[MNG-4488] [regression] Parent POMs resolved from repository are validated in 
strict mode

Added:
    
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
   (with props)
Modified:
    
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/validation/DefaultModelValidator.java

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=888390&r1=888389&r2=888390&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
 Tue Dec  8 13:13:39 2009
@@ -589,7 +589,20 @@
             throw new ModelBuildingException( problems.getRootModelId(), 
problems.getProblems() );
         }
 
-        Model parentModel = readModel( modelSource, null, request, problems );
+        ModelBuildingRequest lenientRequest = request;
+        if ( request.getValidationLevel() > 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
+        {
+            lenientRequest = new FilterModelBuildingRequest( request )
+            {
+                @Override
+                public int getValidationLevel()
+                {
+                    return ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0;
+                }
+            };
+        }
+
+        Model parentModel = readModel( modelSource, null, lenientRequest, 
problems );
 
         ModelData parentData =
             new ModelData( parentModel, parent.getGroupId(), 
parent.getArtifactId(), parent.getVersion() );

Added: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java?rev=888390&view=auto
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
 (added)
+++ 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
 Tue Dec  8 13:13:39 2009
@@ -0,0 +1,215 @@
+package org.apache.maven.model.building;
+
+/*
+ * 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.
+ */
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.maven.model.Profile;
+import org.apache.maven.model.resolution.ModelResolver;
+
+/**
+ * A model building request that delegates all methods invocations to another 
request, meant for easy transformations by
+ * subclassing.
+ * 
+ * @author Benjamin Bentmann
+ */
+class FilterModelBuildingRequest
+    implements ModelBuildingRequest
+{
+
+    protected ModelBuildingRequest request;
+
+    public FilterModelBuildingRequest( ModelBuildingRequest request )
+    {
+        this.request = request;
+    }
+
+    public File getPomFile()
+    {
+        return request.getPomFile();
+    }
+
+    public FilterModelBuildingRequest setPomFile( File pomFile )
+    {
+        request.setPomFile( pomFile );
+
+        return this;
+    }
+
+    public ModelSource getModelSource()
+    {
+        return request.getModelSource();
+    }
+
+    public FilterModelBuildingRequest setModelSource( ModelSource modelSource )
+    {
+        request.setModelSource( modelSource );
+
+        return this;
+    }
+
+    public int getValidationLevel()
+    {
+        return request.getValidationLevel();
+    }
+
+    public FilterModelBuildingRequest setValidationLevel( int validationLevel )
+    {
+        request.setValidationLevel( validationLevel );
+
+        return this;
+    }
+
+    public boolean isProcessPlugins()
+    {
+        return request.isProcessPlugins();
+    }
+
+    public FilterModelBuildingRequest setProcessPlugins( boolean 
processPlugins )
+    {
+        request.setProcessPlugins( processPlugins );
+
+        return this;
+    }
+
+    public boolean isTwoPhaseBuilding()
+    {
+        return request.isTwoPhaseBuilding();
+    }
+
+    public FilterModelBuildingRequest setTwoPhaseBuilding( boolean 
twoPhaseBuilding )
+    {
+        request.setTwoPhaseBuilding( twoPhaseBuilding );
+
+        return this;
+    }
+
+    public List<Profile> getProfiles()
+    {
+        return request.getProfiles();
+    }
+
+    public FilterModelBuildingRequest setProfiles( List<Profile> profiles )
+    {
+        request.setProfiles( profiles );
+
+        return this;
+    }
+
+    public List<String> getActiveProfileIds()
+    {
+        return request.getActiveProfileIds();
+    }
+
+    public FilterModelBuildingRequest setActiveProfileIds( List<String> 
activeProfileIds )
+    {
+        request.setActiveProfileIds( activeProfileIds );
+
+        return this;
+    }
+
+    public List<String> getInactiveProfileIds()
+    {
+        return request.getInactiveProfileIds();
+    }
+
+    public FilterModelBuildingRequest setInactiveProfileIds( List<String> 
inactiveProfileIds )
+    {
+        request.setInactiveProfileIds( inactiveProfileIds );
+
+        return this;
+    }
+
+    public Properties getSystemProperties()
+    {
+        return request.getSystemProperties();
+    }
+
+    public FilterModelBuildingRequest setSystemProperties( Properties 
systemProperties )
+    {
+        request.setSystemProperties( systemProperties );
+
+        return this;
+    }
+
+    public Properties getUserProperties()
+    {
+        return request.getUserProperties();
+    }
+
+    public FilterModelBuildingRequest setUserProperties( Properties 
userProperties )
+    {
+        request.setUserProperties( userProperties );
+
+        return this;
+    }
+
+    public Date getBuildStartTime()
+    {
+        return request.getBuildStartTime();
+    }
+
+    public ModelBuildingRequest setBuildStartTime( Date buildStartTime )
+    {
+        request.setBuildStartTime( buildStartTime );
+
+        return this;
+    }
+
+    public ModelResolver getModelResolver()
+    {
+        return request.getModelResolver();
+    }
+
+    public FilterModelBuildingRequest setModelResolver( ModelResolver 
modelResolver )
+    {
+        request.setModelResolver( modelResolver );
+
+        return this;
+    }
+
+    public ModelBuildingListener getModelBuildingListener()
+    {
+        return request.getModelBuildingListener();
+    }
+
+    public ModelBuildingRequest setModelBuildingListener( 
ModelBuildingListener modelBuildingListener )
+    {
+        request.setModelBuildingListener( modelBuildingListener );
+
+        return this;
+    }
+
+    public ModelCache getModelCache()
+    {
+        return request.getModelCache();
+    }
+
+    public FilterModelBuildingRequest setModelCache( ModelCache modelCache )
+    {
+        request.setModelCache( modelCache );
+
+        return this;
+    }
+
+}

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

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=888390&r1=888389&r2=888390&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
 Tue Dec  8 13:13:39 2009
@@ -76,6 +76,8 @@
 
         if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
+            Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
+
             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() );
@@ -99,7 +101,7 @@
             {
                 if ( !profileIds.add( profile.getId() ) )
                 {
-                    addViolation( problems, Severity.ERROR, 
"profiles.profile.id must be unique"
+                    addViolation( problems, errOn30, "profiles.profile.id must 
be unique"
                         + " but found duplicate profile with id " + 
profile.getId() );
                 }
 
@@ -354,6 +356,8 @@
     private void validateDependencies( ModelProblemCollector problems, 
List<Dependency> dependencies, String prefix,
                                        ModelBuildingRequest request )
     {
+        Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
+
         Map<String, Dependency> index = new HashMap<String, Dependency>();
 
         for ( Dependency dependency : dependencies )
@@ -363,7 +367,7 @@
             if ( "pom".equals( dependency.getType() ) && "import".equals( 
dependency.getScope() )
                 && StringUtils.isNotEmpty( dependency.getClassifier() ) )
             {
-                addViolation( problems, Severity.ERROR, "'" + prefix + 
".classifier' must be empty for imported POM: " + key );
+                addViolation( problems, errOn30, "'" + prefix + ".classifier' 
must be empty for imported POM: " + key );
             }
             else if ( "system".equals( dependency.getScope() ) )
             {
@@ -379,8 +383,6 @@
 
             if ( existing != null )
             {
-                Severity errOn30 = getSeverity( request, 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
-
                 String msg;
                 if ( equals( existing.getVersion(), dependency.getVersion() ) )
                 {


Reply via email to