Author: bentmann
Date: Tue Mar 30 22:53:01 2010
New Revision: 929329

URL: http://svn.apache.org/viewvc?rev=929329&view=rev
Log:
[MNG-4418] Dependency resolution appears to misbehave if a remote repository 
uses the id "local"

Added:
    
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
   (with props)
Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
    
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.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/validation/DefaultModelValidatorTest.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java?rev=929329&r1=929328&r2=929329&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/settings/validation/DefaultSettingsValidator.java
 Tue Mar 30 22:53:01 2010
@@ -88,6 +88,11 @@ public class DefaultSettingsValidator
             {
                 validateStringNotEmpty( problems, "mirrors.mirror.id", 
mirror.getId(), mirror.getUrl() );
 
+                if ( "local".equals( mirror.getId() ) )
+                {
+                    addError( problems, "'mirrors.mirror.id' must not be 
'local', this identifier is reserved." );
+                }
+
                 validateStringNotEmpty( problems, "mirrors.mirror.url", 
mirror.getUrl(), mirror.getId() );
 
                 validateStringNotEmpty( problems, "mirrors.mirror.mirrorOf", 
mirror.getMirrorOf(), mirror.getId() );
@@ -112,6 +117,11 @@ public class DefaultSettingsValidator
         {
             validateStringNotEmpty( problems, prefix + ".id", 
repository.getId(), repository.getUrl() );
 
+            if ( "local".equals( repository.getId() ) )
+            {
+                addError( problems, "'" + prefix + ".id' must not be 'local', 
this identifier is reserved." );
+            }
+
             validateStringNotEmpty( problems, prefix + ".url", 
repository.getUrl(), repository.getId() );
 
             if ( "legacy".equals( repository.getLayout() ) )

Modified: 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java?rev=929329&r1=929328&r2=929329&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/settings/validation/DefaultSettingsValidatorTest.java
 Tue Mar 30 22:53:01 2010
@@ -87,15 +87,36 @@ public class DefaultSettingsValidatorTes
         throws Exception
     {
         Mirror mirror = new Mirror();
+        mirror.setId( "local" );
         Settings settings = new Settings();
         settings.addMirror( mirror );
 
         SimpleProblemCollector problems = new SimpleProblemCollector();
         validator.validate( settings, problems );
+        assertEquals( 3, problems.messages.size() );
+        assertTrue( problems.messages.get( 0 ), problems.messages.get( 0 
).contains( "'mirrors.mirror.id' must not be 'local'" ) );
+        assertTrue( problems.messages.get( 1 ), problems.messages.get( 1 
).contains( "'mirrors.mirror.url' is missing" ) );
+        assertTrue( problems.messages.get( 2 ),
+                    problems.messages.get( 2 ).contains( 
"'mirrors.mirror.mirrorOf' is missing" ) );
+    }
+
+    public void testValidateRepository()
+        throws Exception
+    {
+        Repository repo = new Repository();
+        repo.setId( "local" );
+        Profile profile = new Profile();
+        profile.addRepository( repo );
+        Settings settings = new Settings();
+        settings.addProfile( profile );
+
+        SimpleProblemCollector problems = new SimpleProblemCollector();
+        validator.validate( settings, problems );
         assertEquals( 2, problems.messages.size() );
-        assertTrue( problems.messages.get( 0 ), problems.messages.get( 0 
).contains( "'mirrors.mirror.url' is missing" ) );
+        assertTrue( problems.messages.get( 0 ),
+                    problems.messages.get( 0 ).contains( 
"'repositories.repository.id' must not be 'local'" ) );
         assertTrue( problems.messages.get( 1 ),
-                    problems.messages.get( 1 ).contains( 
"'mirrors.mirror.mirrorOf' is missing" ) );
+                    problems.messages.get( 1 ).contains( 
"'repositories.repository.url' is missing" ) );
     }
 
     private static class SimpleProblemCollector

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=929329&r1=929328&r2=929329&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 Mar 30 22:53:01 2010
@@ -270,12 +270,12 @@ public class DefaultModelValidator
 
             for ( Repository repository : model.getRepositories() )
             {
-                validateRepositoryLayout( problems, repository, 
"repositories.repository", request );
+                validateRepository( problems, repository, 
"repositories.repository", request );
             }
 
             for ( Repository repository : model.getPluginRepositories() )
             {
-                validateRepositoryLayout( problems, repository, 
"pluginRepositories.pluginRepository", request );
+                validateRepository( problems, repository, 
"pluginRepositories.pluginRepository", request );
             }
 
             DistributionManagement distMgmt = 
model.getDistributionManagement();
@@ -287,10 +287,9 @@ public class DefaultModelValidator
                                   "must not be specified." );
                 }
 
-                validateRepositoryLayout( problems, distMgmt.getRepository(), 
"distributionManagement.repository",
-                                          request );
-                validateRepositoryLayout( problems, 
distMgmt.getSnapshotRepository(),
-                                          
"distributionManagement.snapshotRepository", request );
+                validateRepository( problems, distMgmt.getRepository(), 
"distributionManagement.repository", request );
+                validateRepository( problems, distMgmt.getSnapshotRepository(),
+                                    
"distributionManagement.snapshotRepository", request );
             }
         }
     }
@@ -457,13 +456,21 @@ public class DefaultModelValidator
         }
     }
 
-    private void validateRepositoryLayout( ModelProblemCollector problems, 
Repository repository, String prefix,
-                                           ModelBuildingRequest request )
+    private void validateRepository( ModelProblemCollector problems, 
Repository repository, String prefix,
+                                     ModelBuildingRequest request )
     {
-        if ( repository != null && "legacy".equals( repository.getLayout() ) )
+        if ( repository != null )
         {
-            addViolation( problems, Severity.WARNING, prefix + ".layout", 
repository.getId(),
-                          "uses the deprecated value 'legacy'." );
+            if ( "local".equals( repository.getId() ) )
+            {
+                addViolation( problems, Severity.ERROR, prefix + ".id", null,
+                              "must not be 'local', this identifier is 
reserved." );
+            }
+            if ( "legacy".equals( repository.getLayout() ) )
+            {
+                addViolation( problems, Severity.WARNING, prefix + ".layout", 
repository.getId(),
+                              "uses the deprecated value 'legacy'." );
+            }
         }
     }
 

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=929329&r1=929328&r2=929329&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
 Tue Mar 30 22:53:01 2010
@@ -450,4 +450,19 @@ public class DefaultModelValidatorTest
         assertTrue( result.getWarnings().get( 1 ).contains( "duplicate 
declaration of plugin test:managed-duplicate" ) );
     }
 
+    public void testReservedRepositoryId()
+        throws Exception
+    {
+        SimpleProblemCollector result = validate( "reserved-repository-id.xml" 
);
+
+        assertViolations( result, 0, 4, 0 );
+
+        assertTrue( result.getErrors().get( 0 ).contains( 
"'repositories.repository.id' must not be 'local'" ) );
+        assertTrue( result.getErrors().get( 1 ).contains(
+                                                          
"'pluginRepositories.pluginRepository.id' must not be 'local'" ) );
+        assertTrue( result.getErrors().get( 2 ).contains( 
"'distributionManagement.repository.id' must not be 'local'" ) );
+        assertTrue( result.getErrors().get( 3 ).contains(
+                                                          
"'distributionManagement.snapshotRepository.id' must not be 'local'" ) );
+    }
+
 }

Added: 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml?rev=929329&view=auto
==============================================================================
--- 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
 (added)
+++ 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
 Tue Mar 30 22:53:01 2010
@@ -0,0 +1,50 @@
+<!--
+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>
+
+  <groupId>gid</groupId>
+  <artifactId>aid</artifactId>
+  <version>99.44</version>
+
+  <repositories>
+    <repository>
+      <id>local</id>
+      <url>http://localhost</url>
+    </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>local</id>
+      <url>http://localhost</url>
+    </pluginRepository>
+  </pluginRepositories>
+
+  <distributionManagement>
+    <repository>
+      <id>local</id>
+      <url>http://localhost</url>
+    </repository>
+    <snapshotRepository>
+      <id>local</id>
+      <url>http://localhost</url>
+    </snapshotRepository>
+  </distributionManagement>
+</project>

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/reserved-repository-id.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to