Author: bentmann
Date: Tue Sep  1 22:49:05 2009
New Revision: 810296

URL: http://svn.apache.org/viewvc?rev=810296&view=rev
Log:
[MNG-4334] maven core caches settings.xml

o First pass: auth & mirror moved out of the components into the requests

Added:
    maven/components/trunk/maven-compat/src/main/mdo/settings.mdo
      - copied unchanged from r810165, 
maven/components/trunk/maven-core/src/main/mdo/settings.mdo
Removed:
    maven/components/trunk/maven-core/src/main/mdo/settings.mdo
Modified:
    maven/components/trunk/build.xml
    maven/components/trunk/maven-compat/pom.xml
    
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ProjectUtils.java
    
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
    
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
    
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/RepositorySystem.java
    
maven/components/trunk/maven-compat/src/test/java/org/apache/maven/repository/legacy/LegacyRepositorySystemTest.java
    maven/components/trunk/maven-core/pom.xml
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
    
maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java

Modified: maven/components/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/build.xml?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- maven/components/trunk/build.xml (original)
+++ maven/components/trunk/build.xml Tue Sep  1 22:49:05 2009
@@ -181,7 +181,7 @@
     <modello file="maven-model/src/main/mdo/maven.mdo" version="4.0.0" />
     <modello file="maven-plugin-api/src/main/mdo/lifecycle.mdo" />
     <modello file="maven-model-builder/src/main/mdo/profiles.mdo" />
-    <modello file="maven-core/src/main/mdo/settings.mdo" />
+    <modello file="maven-compat/src/main/mdo/settings.mdo" />
     <modello file="maven-core/src/main/mdo/toolchains.mdo" />
     <modello file="maven-compat/src/main/mdo/metadata.mdo" />
     <modello file="maven-compat/src/main/mdo/profiles.mdo" />

Modified: maven/components/trunk/maven-compat/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/pom.xml?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/pom.xml (original)
+++ maven/components/trunk/maven-compat/pom.xml Tue Sep  1 22:49:05 2009
@@ -79,6 +79,7 @@
             <model>src/main/mdo/metadata.mdo</model>
             <model>src/main/mdo/profiles.mdo</model>
             <model>src/main/mdo/paramdoc.mdo</model>
+            <model>src/main/mdo/settings.mdo</model>
           </models>
         </configuration>
       </plugin>

Modified: 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ProjectUtils.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ProjectUtils.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ProjectUtils.java
 (original)
+++ 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/ProjectUtils.java
 Tue Sep  1 22:49:05 2009
@@ -34,9 +34,9 @@
 // This class needs to stick around because it was exposed the the remote 
resources plugin started using it instead of
 // getting the repositories from the project.
 
+...@deprecated
 public final class ProjectUtils
 {
-    static RepositorySystem rs;
         
     private ProjectUtils()
     {
@@ -53,7 +53,10 @@
             remoteRepositories.add( buildArtifactRepository( r, 
artifactRepositoryFactory, c ) );
         }
 
-        remoteRepositories = rs( c ).getMirrors( remoteRepositories );
+        /*
+         * FIXME: The bad dependency relation between maven-core and 
maven-compat prevents access to LegacySupport here
+         * which is required to get the mirror&authentication settings from 
the session/request.
+         */
 
         return remoteRepositories;
     }
@@ -61,6 +64,10 @@
     public static ArtifactRepository buildDeploymentArtifactRepository( 
DeploymentRepository repo, ArtifactRepositoryFactory artifactRepositoryFactory, 
PlexusContainer c )
         throws InvalidRepositoryException
     {
+        /*
+         * FIXME: The bad dependency relation between maven-core and 
maven-compat prevents access to LegacySupport here
+         * which is required to get the authentication settings from the 
session/request.
+         */
         return rs( c ).buildArtifactRepository( repo );
     }
 
@@ -74,12 +81,12 @@
     {
         try
         {
-            rs = c.lookup( RepositorySystem.class );
+            return c.lookup( RepositorySystem.class );
         }
         catch ( ComponentLookupException e )
         {
+            throw new IllegalStateException( e );
         }
-        
-        return rs;
     }
+
 }

Modified: 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
 (original)
+++ 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
 Tue Sep  1 22:49:05 2009
@@ -163,7 +163,7 @@
      * @param pattern used for match. Currently only '*' is supported.
      * @return true if the repository is a match to this pattern.
      */
-    boolean matchPattern( ArtifactRepository originalRepository, String 
pattern )
+    static boolean matchPattern( ArtifactRepository originalRepository, String 
pattern )
     {
         boolean result = false;
         String originalId = originalRepository.getId();
@@ -218,7 +218,7 @@
      * @param originalRepository
      * @return true if external.
      */
-    boolean isExternalRepo( ArtifactRepository originalRepository )
+    static boolean isExternalRepo( ArtifactRepository originalRepository )
     {
         try
         {

Modified: 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
 (original)
+++ 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
 Tue Sep  1 22:49:05 2009
@@ -47,9 +47,10 @@
 import org.apache.maven.repository.LocalArtifactRepository;
 import org.apache.maven.repository.MetadataResolutionRequest;
 import org.apache.maven.repository.MetadataResolutionResult;
-import org.apache.maven.repository.MirrorBuilder;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.legacy.WagonManager;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Server;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.events.TransferListener;
@@ -77,9 +78,6 @@
 
     @Requirement( role = ArtifactRepositoryLayout.class )
     private Map<String, ArtifactRepositoryLayout> layouts;
-    
-    @Requirement
-    private MirrorBuilder mirrorBuilder;
 
     @Requirement
     private WagonManager wagonManager;
@@ -87,10 +85,9 @@
     @Requirement
     private PlexusContainer plexus;
 
-    private Map<String, Authentication> authentications = new HashMap<String, 
Authentication>();
-
+    // TODO: move this out, the component needs to be stateless for safe reuse
     private Map<String, Proxy> proxies = new HashMap<String,Proxy>();
-    
+
     public Artifact createArtifact( String groupId, String artifactId, String 
version, String scope, String type )
     {
         return artifactFactory.createArtifact( groupId, artifactId, version, 
scope, type );
@@ -329,18 +326,6 @@
     }
     */
 
-    // Mirror 
-    public void addMirror( String id, String mirrorOf, String url )
-    {
-        Authentication auth = id != null ? authentications.get( id ) : null;
-        mirrorBuilder.addMirror( id, mirrorOf, url, auth );
-    }
-
-    public List<ArtifactRepository> getMirrors( List<ArtifactRepository> 
repositories )
-    {
-        return mirrorBuilder.getMirrors( repositories );
-    }
-
     public List<ArtifactRepository> getEffectiveRepositories( 
List<ArtifactRepository> repositories )
     {
         if ( repositories == null )
@@ -392,6 +377,8 @@
             ArtifactRepository effectiveRepository = 
                 createArtifactRepository( aliasedRepo.getId(), 
aliasedRepo.getUrl(), aliasedRepo.getLayout(), snapshotPolicy, releasePolicy );
 
+            effectiveRepository.setAuthentication( 
aliasedRepo.getAuthentication() );
+
             effectiveRepositories.add( effectiveRepository );
         }
 
@@ -466,6 +453,84 @@
         }
     }
 
+    private Mirror getMirror( ArtifactRepository repository, List<Mirror> 
mirrors )
+    {
+        String repoId = repository.getId();
+
+        if ( repoId != null )
+        {
+            for ( Mirror mirror : mirrors )
+            {
+                if ( repoId.equals( mirror.getMirrorOf() ) )
+                {
+                    return mirror;
+                }
+            }
+
+            for ( Mirror mirror : mirrors )
+            {
+                if ( DefaultMirrorBuilder.matchPattern( repository, 
mirror.getMirrorOf() ) )
+                {
+                    return mirror;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    public void injectMirror( List<ArtifactRepository> repositories, 
List<Mirror> mirrors )
+    {
+        if ( repositories != null && mirrors != null )
+        {
+            for ( ArtifactRepository repository : repositories )
+            {
+                Mirror mirror = getMirror( repository, mirrors );
+
+                if ( mirror != null )
+                {
+                    repository.setId( mirror.getId() );
+                    repository.setUrl( mirror.getUrl() );
+                }
+            }
+        }
+    }
+
+    public void injectAuthentication( List<ArtifactRepository> repositories, 
List<Server> servers )
+    {
+        if ( repositories != null )
+        {
+            Map<String, Server> serversById = new HashMap<String, Server>();
+
+            if ( servers != null )
+            {
+                for ( Server server : servers )
+                {
+                    if ( !serversById.containsKey( server.getId() ) )
+                    {
+                        serversById.put( server.getId(), server );
+                    }
+                }
+            }
+
+            for ( ArtifactRepository repository : repositories )
+            {
+                Server server = serversById.get( repository.getId() );
+
+                if ( server != null )
+                {
+                    Authentication authentication = new Authentication( 
server.getUsername(), server.getPassword() );
+
+                    repository.setAuthentication( authentication );
+                }
+                else
+                {
+                    repository.setAuthentication( null );
+                }
+            }
+        }
+    }
+
     public MetadataResolutionResult resolveMetadata( MetadataResolutionRequest 
request )
     {
 
@@ -496,15 +561,6 @@
     }
 
     //
-    // serverId = repository id
-    //
-    public void addAuthenticationForArtifactRepository( String repositoryId, 
String username, String password )
-    {
-        Authentication authentication = new Authentication( username, password 
);
-        authentications.put( repositoryId, authentication );
-    }
-
-    //
     // Artifact Repository Creation
     //
     public ArtifactRepository buildArtifactRepository( Repository repo )
@@ -556,14 +612,7 @@
 
         ArtifactRepository artifactRepository = 
artifactRepositoryFactory.createArtifactRepository( repositoryId, url, 
repositoryLayout, snapshots, releases );
 
-        Authentication authentication = authentications.get( repositoryId );
-        
-        if ( authentication != null )
-        {
-            artifactRepository.setAuthentication( authentication );
-        }
-        
-        Proxy proxy = proxies.get(  artifactRepository.getProtocol() );
+        Proxy proxy = proxies.get( artifactRepository.getProtocol() );
         
         if ( proxy != null )
         {

Modified: 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/RepositorySystem.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/RepositorySystem.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/RepositorySystem.java
 (original)
+++ 
maven/components/trunk/maven-compat/src/main/java/org/apache/maven/repository/RepositorySystem.java
 Tue Sep  1 22:49:05 2009
@@ -32,6 +32,8 @@
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.Repository;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Server;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.events.TransferListener;
@@ -90,14 +92,31 @@
      */
     List<ArtifactRepository> getEffectiveRepositories( 
List<ArtifactRepository> repositories );    
 
+    /**
+     * Injects the mirroring information into the specified repositories. For 
each repository that is matched by a
+     * mirror, its URL and ID will be updated to match the values from the 
mirror specification. Repositories without a
+     * matching mirror will pass through unchanged. <em>Note:</em> This method 
must be called before
+     * {...@link #injectAuthentication(List, List)} or the repositories will 
end up with the wrong credentials.
+     * 
+     * @param repositories The repositories into which to inject the mirror 
information, may be {...@code null}.
+     * @param mirrors The available mirrors, may be {...@code null}.
+     */
+    void injectMirror( List<ArtifactRepository> repositories, List<Mirror> 
mirrors );
+
+    /**
+     * Injects the authentication information into the specified repositories. 
For each repository that is matched by a
+     * server, its credentials will be updated to match the values from the 
server specification. Repositories without a
+     * matching server will have their credentials cleared. <em>Note:</em> 
This method must be called before
+     * {...@link #injectAuthentication(List, List)} or the repositories will 
end up with the wrong credentials.
+     * 
+     * @param repositories The repositories into which to inject the 
authentication information, may be {...@code null}.
+     * @param servers The available servers, may be {...@code null}.
+     */
+    void injectAuthentication( List<ArtifactRepository> repositories, 
List<Server> servers );
+
     ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
 
     MetadataResolutionResult resolveMetadata( MetadataResolutionRequest 
request );
-           
-    //TODO: remove the request should already be processed to select the 
mirror for the request instead of the processing happen internally.
-    // Mirrors    
-    void addMirror( String id, String mirrorOf, String url );        
-    List<ArtifactRepository> getMirrors( List<ArtifactRepository> repositories 
);  
     
     // Install
     
@@ -113,8 +132,6 @@
     
     void retrieve( ArtifactRepository repository, File destination, String 
remotePath, TransferListener downloadMonitor )
         throws TransferFailedException, ResourceDoesNotExistException; 
-        
-    void addAuthenticationForArtifactRepository( String repositoryId, String 
username, String password );
 
     void addProxy( String protocol, String host, int port, String username, 
String password, String nonProxyHosts );    
 }

Modified: 
maven/components/trunk/maven-compat/src/test/java/org/apache/maven/repository/legacy/LegacyRepositorySystemTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/test/java/org/apache/maven/repository/legacy/LegacyRepositorySystemTest.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-compat/src/test/java/org/apache/maven/repository/legacy/LegacyRepositorySystemTest.java
 (original)
+++ 
maven/components/trunk/maven-compat/src/test/java/org/apache/maven/repository/legacy/LegacyRepositorySystemTest.java
 Tue Sep  1 22:49:05 2009
@@ -16,18 +16,13 @@
  */
 
 import java.io.File;
-import java.lang.reflect.Array;
 import java.util.Arrays;
-import java.util.Collections;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.Authentication;
-import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.model.Dependency;
 import org.apache.maven.repository.LegacyRepositorySystem;
 import org.apache.maven.repository.RepositorySystem;
+import org.apache.maven.settings.Server;
 import org.codehaus.plexus.PlexusTestCase;
 
 /**
@@ -67,11 +62,18 @@
     public void testAuthenticationHandling()
         throws Exception
     {
-        repositorySystem.addAuthenticationForArtifactRepository( "repository", 
"jason", "abc123" );
-        ArtifactRepository repository = 
repositorySystem.createArtifactRepository( "repository", "http://foo";, null, 
null, null );
+        Server server = new Server();
+        server.setId( "repository" );
+        server.setUsername( "jason" );
+        server.setPassword( "abc123" );
+
+        ArtifactRepository repository =
+            repositorySystem.createArtifactRepository( "repository", 
"http://foo";, null, null, null );
+        repositorySystem.injectAuthentication( Arrays.asList( repository ), 
Arrays.asList( server ) );
         Authentication authentication = repository.getAuthentication();
         assertNotNull( authentication );
         assertEquals( "jason", authentication.getUsername() );
         assertEquals( "abc123", authentication.getPassword() );
     }
+
 }

Modified: maven/components/trunk/maven-core/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/pom.xml?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- maven/components/trunk/maven-core/pom.xml (original)
+++ maven/components/trunk/maven-core/pom.xml Tue Sep  1 22:49:05 2009
@@ -103,7 +103,6 @@
         <configuration>
           <version>1.0.0</version>
           <models>
-            <model>src/main/mdo/settings.mdo</model>
             <model>src/main/mdo/toolchains.mdo</model>
           </models>
         </configuration>

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 Tue Sep  1 22:49:05 2009
@@ -965,6 +965,8 @@
             projectBuildingRequest.setPluginArtifactRepositories( 
getPluginArtifactRepositories() );
             projectBuildingRequest.setRepositoryCache( getRepositoryCache() );
             projectBuildingRequest.setOffline( isOffline() );
+            projectBuildingRequest.setServers( getServers() );
+            projectBuildingRequest.setMirrors( getMirrors() );
             projectBuildingRequest.setActiveProfileIds( getActiveProfiles() );
             projectBuildingRequest.setInactiveProfileIds( 
getInactiveProfiles() );
             projectBuildingRequest.setProfiles( getProfiles() );

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Tue Sep  1 22:49:05 2009
@@ -85,7 +85,9 @@
                     try
                     {
                         ArtifactRepository repo = 
repositorySystem.buildArtifactRepository( (Repository) repository );
-                        repos.addAll( repositorySystem.getMirrors( 
Arrays.asList( repo ) ) );
+                        repositorySystem.injectMirror( Arrays.asList( repo ), 
configuration.getMirrors() );
+                        repositorySystem.injectAuthentication( Arrays.asList( 
repo ), configuration.getServers() );
+                        repos.add( repo );
                     }
                     catch ( InvalidRepositoryException e )
                     {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultModelBuildingListener.java
 Tue Sep  1 22:49:05 2009
@@ -114,7 +114,8 @@
         try
         {
             remoteRepositories =
-                projectBuildingHelper.createArtifactRepositories( 
model.getRepositories(), remoteRepositories );
+                projectBuildingHelper.createArtifactRepositories( 
model.getRepositories(), remoteRepositories,
+                                                                  
projectBuildingRequest );
         }
         catch ( Exception e )
         {
@@ -124,7 +125,8 @@
         try
         {
             pluginRepositories =
-                projectBuildingHelper.createArtifactRepositories( 
model.getPluginRepositories(), pluginRepositories );
+                projectBuildingHelper.createArtifactRepositories( 
model.getPluginRepositories(), pluginRepositories,
+                                                                  
projectBuildingRequest );
         }
         catch ( Exception e )
         {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
 Tue Sep  1 22:49:05 2009
@@ -199,14 +199,8 @@
     private ModelBuildingRequest getModelBuildingRequest( 
ProjectBuildingRequest configuration,
                                                           ReactorModelPool 
reactorModelPool )
     {
-        RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
-        repositoryRequest.setCache( configuration.getRepositoryCache() );
-        repositoryRequest.setLocalRepository( 
configuration.getLocalRepository() );
-        repositoryRequest.setOffline( configuration.isOffline() );
-
         ModelResolver resolver =
-            new RepositoryModelResolver( repositorySystem, 
resolutionErrorHandler, repositoryRequest,
-                                         
configuration.getRemoteRepositories(), reactorModelPool );
+            new RepositoryModelResolver( repositorySystem, 
resolutionErrorHandler, configuration, reactorModelPool );
 
         ModelBuildingRequest request = new DefaultModelBuildingRequest();
 

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
 Tue Sep  1 22:49:05 2009
@@ -87,7 +87,8 @@
     private PluginVersionResolver pluginVersionResolver;
 
     public List<ArtifactRepository> createArtifactRepositories( 
List<Repository> pomRepositories,
-                                                                
List<ArtifactRepository> externalRepositories )
+                                                                
List<ArtifactRepository> externalRepositories,
+                                                                
ProjectBuildingRequest request )
         throws InvalidRepositoryException
     {
         List<ArtifactRepository> artifactRepositories = new 
ArrayList<ArtifactRepository>();
@@ -97,7 +98,9 @@
             artifactRepositories.add( 
repositorySystem.buildArtifactRepository( repository ) );
         }
 
-        artifactRepositories = repositorySystem.getMirrors( 
artifactRepositories );
+        repositorySystem.injectMirror( artifactRepositories, 
request.getMirrors() );
+
+        repositorySystem.injectAuthentication( artifactRepositories, 
request.getServers() );
 
         if ( externalRepositories != null )
         {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
 Tue Sep  1 22:49:05 2009
@@ -29,6 +29,8 @@
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelEventListener;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Server;
 
 public class DefaultProjectBuildingRequest
     implements ProjectBuildingRequest
@@ -44,6 +46,10 @@
 
     private List<ArtifactRepository> pluginArtifactRepositories;
 
+    private List<Server> servers;
+
+    private List<Mirror> mirrors;
+
     private List<ModelEventListener> listeners;
 
     private MavenProject project;
@@ -79,6 +85,8 @@
         userProperties = new Properties();
         remoteRepositories = new ArrayList<ArtifactRepository>();
         pluginArtifactRepositories = new ArrayList<ArtifactRepository>();
+        servers = new ArrayList<Server>();
+        mirrors = new ArrayList<Mirror>();
     }
 
     public MavenProject getProject()
@@ -164,6 +172,44 @@
         return this;
     }
 
+    public ProjectBuildingRequest setServers( List<Server> servers )
+    {
+        if ( servers != null )
+        {
+            this.servers = new ArrayList<Server>( servers );
+        }
+        else
+        {
+            this.servers.clear();
+        }
+
+        return this;
+    }
+
+    public List<Server> getServers()
+    {
+        return servers;
+    }
+
+    public ProjectBuildingRequest setMirrors( List<Mirror> mirrors )
+    {
+        if ( mirrors != null )
+        {
+            this.mirrors = new ArrayList<Mirror>( mirrors );
+        }
+        else
+        {
+            this.mirrors.clear();
+        }
+
+        return this;
+    }
+
+    public List<Mirror> getMirrors()
+    {
+        return mirrors;
+    }
+
     public Properties getSystemProperties()
     {
         return systemProperties;

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
 Tue Sep  1 22:49:05 2009
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -1738,7 +1739,10 @@
         {           
             try
             {
-                setReleaseArtifactRepository( 
repositorySystem.buildArtifactRepository( 
getDistributionManagement().getRepository() ) );
+                ArtifactRepository repo =
+                    repositorySystem.buildArtifactRepository( 
getDistributionManagement().getRepository() );
+                repositorySystem.injectAuthentication( Arrays.asList( repo ), 
projectBuilderConfiguration.getServers() );
+                setReleaseArtifactRepository( repo );
             }
             catch ( InvalidRepositoryException e )
             {
@@ -1754,7 +1758,10 @@
         {           
             try
             {
-                setSnapshotArtifactRepository( 
repositorySystem.buildArtifactRepository( 
getDistributionManagement().getSnapshotRepository() ) );
+                ArtifactRepository repo =
+                    repositorySystem.buildArtifactRepository( 
getDistributionManagement().getSnapshotRepository() );
+                repositorySystem.injectAuthentication( Arrays.asList( repo ), 
projectBuilderConfiguration.getServers() );
+                setSnapshotArtifactRepository( repo );
             }
             catch ( InvalidRepositoryException e )
             {

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
 Tue Sep  1 22:49:05 2009
@@ -46,11 +46,14 @@
      * @param pomRepositories The POM repositories to create the artifact 
repositories from, must not be {...@code null}.
      * @param externalRepositories The external (and already mirrored) 
repositories to merge into the result list, may
      *            be {...@code null}.
+     * @param request The project building request holding further settings 
like repository settings, must not be
+     *            {...@code null}.
      * @return The effective artifact repositories, never {...@code null}.
      * @throws InvalidRepositoryException
      */
     List<ArtifactRepository> createArtifactRepositories( List<Repository> 
pomRepositories,
-                                                         
List<ArtifactRepository> externalRepositories )
+                                                         
List<ArtifactRepository> externalRepositories,
+                                                         
ProjectBuildingRequest request )
         throws InvalidRepositoryException;
 
     /**

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
 Tue Sep  1 22:49:05 2009
@@ -27,6 +27,8 @@
 import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Server;
 
 public interface ProjectBuildingRequest
 {
@@ -51,6 +53,14 @@
 
     List<ArtifactRepository> getPluginArtifactRepositories();
 
+    ProjectBuildingRequest setServers( List<Server> servers );
+
+    List<Server> getServers();
+
+    ProjectBuildingRequest setMirrors( List<Mirror> mirrors );
+
+    List<Mirror> getMirrors();
+
     /**
      * Sets the system properties to use for interpolation and profile 
activation. The system properties are collected
      * from the runtime environment like {...@link System#getProperties()} and 
environment variables.

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
 Tue Sep  1 22:49:05 2009
@@ -26,7 +26,6 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
@@ -52,15 +51,14 @@
 
     private ResolutionErrorHandler resolutionErrorHandler;
 
-    private RepositoryRequest repositoryRequest;
+    private ProjectBuildingRequest projectBuildingRequest;
 
     private List<ArtifactRepository> remoteRepositories;
 
     private ReactorModelPool reactorModelPool;
 
     public RepositoryModelResolver( RepositorySystem repositorySystem, 
ResolutionErrorHandler resolutionErrorHandler,
-                                    RepositoryRequest repositoryRequest, 
List<ArtifactRepository> remoteRepositories,
-                                    ReactorModelPool reactorModelPool )
+                                    ProjectBuildingRequest 
projectBuildingRequest, ReactorModelPool reactorModelPool )
     {
         if ( repositorySystem == null )
         {
@@ -74,25 +72,25 @@
         }
         this.resolutionErrorHandler = resolutionErrorHandler;
 
-        if ( repositoryRequest == null )
+        if ( projectBuildingRequest == null )
         {
-            throw new IllegalArgumentException( "no repository request 
specified" );
+            throw new IllegalArgumentException( "no project building request 
specified" );
         }
-        this.repositoryRequest = repositoryRequest;
+        this.projectBuildingRequest = projectBuildingRequest;
 
-        if ( remoteRepositories == null )
+        if ( projectBuildingRequest.getRemoteRepositories() == null )
         {
             throw new IllegalArgumentException( "no remote repositories 
specified" );
         }
-        this.remoteRepositories = new ArrayList<ArtifactRepository>( 
remoteRepositories );
+        this.remoteRepositories = new ArrayList<ArtifactRepository>( 
projectBuildingRequest.getRemoteRepositories() );
 
         this.reactorModelPool = reactorModelPool;
     }
 
     public ModelResolver newCopy()
     {
-        return new RepositoryModelResolver( repositorySystem, 
resolutionErrorHandler, repositoryRequest,
-                                            remoteRepositories, 
reactorModelPool );
+        return new RepositoryModelResolver( repositorySystem, 
resolutionErrorHandler, projectBuildingRequest,
+                                            reactorModelPool );
     }
 
     public void addRepository( Repository repository )
@@ -102,9 +100,11 @@
         {
             ArtifactRepository repo = 
repositorySystem.buildArtifactRepository( repository );
 
-            List<ArtifactRepository> mirrors = repositorySystem.getMirrors( 
Arrays.asList( repo ) );
+            repositorySystem.injectMirror( Arrays.asList( repo ), 
projectBuildingRequest.getMirrors() );
 
-            remoteRepositories.addAll( 0, mirrors );
+            repositorySystem.injectAuthentication( Arrays.asList( repo ), 
projectBuildingRequest.getServers() );
+
+            remoteRepositories.add( 0, repo );
 
             remoteRepositories = repositorySystem.getEffectiveRepositories( 
remoteRepositories );
         }
@@ -128,9 +128,12 @@
         {
             Artifact artifactParent = repositorySystem.createProjectArtifact( 
groupId, artifactId, version );
 
-            ArtifactResolutionRequest request = new ArtifactResolutionRequest( 
repositoryRequest );
+            ArtifactResolutionRequest request = new 
ArtifactResolutionRequest();
             request.setArtifact( artifactParent );
             request.setRemoteRepositories( remoteRepositories );
+            request.setLocalRepository( 
projectBuildingRequest.getLocalRepository() );
+            request.setOffline( projectBuildingRequest.isOffline() );
+            request.setCache( projectBuildingRequest.getRepositoryCache() );
             // FIXME setTransferListener
             ArtifactResolutionResult result = repositorySystem.resolve( 
request );
 

Modified: 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
 (original)
+++ 
maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyProjectBuildingHelper.java
 Tue Sep  1 22:49:05 2009
@@ -42,7 +42,8 @@
 {
 
     public List<ArtifactRepository> createArtifactRepositories( 
List<Repository> pomRepositories,
-                                                                
List<ArtifactRepository> externalRepositories )
+                                                                
List<ArtifactRepository> externalRepositories,
+                                                                
ProjectBuildingRequest request )
         throws InvalidRepositoryException
     {
         if ( externalRepositories != null )

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=810296&r1=810295&r2=810296&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
 Tue Sep  1 22:49:05 2009
@@ -229,17 +229,6 @@
             server.setPassword( password );
 
             request.addServer( server );
-
-            repositorySystem.addAuthenticationForArtifactRepository( 
server.getId(), server.getUsername(), password );
-        }
-
-        for ( Mirror mirror : settings.getMirrors() )
-        {
-            mirror = mirror.clone();
-
-            request.addMirror( mirror );
-
-            repositorySystem.addMirror( mirror.getId(), mirror.getMirrorOf(), 
mirror.getUrl() );
         }
 
         // <mirrors>
@@ -250,9 +239,22 @@
         //   </mirror>
         // </mirrors>        
 
-        request.setRemoteRepositories( repositorySystem.getMirrors( 
request.getRemoteRepositories() ) );
+        for ( Mirror mirror : settings.getMirrors() )
+        {
+            mirror = mirror.clone();
+
+            request.addMirror( mirror );
+        }
+
+        repositorySystem.injectMirror( request.getRemoteRepositories(), 
request.getMirrors() );
+        repositorySystem.injectAuthentication( 
request.getRemoteRepositories(), request.getServers() );
+
+        request.setRemoteRepositories( 
repositorySystem.getEffectiveRepositories( request.getRemoteRepositories() ) );
+
+        repositorySystem.injectMirror( 
request.getPluginArtifactRepositories(), request.getMirrors() );
+        repositorySystem.injectAuthentication( 
request.getPluginArtifactRepositories(), request.getServers() );
 
-        request.setPluginArtifactRepositories( repositorySystem.getMirrors( 
request.getPluginArtifactRepositories() ) );
+        request.setPluginArtifactRepositories( 
repositorySystem.getEffectiveRepositories( 
request.getPluginArtifactRepositories() ) );
     }
 
     private String decrypt( String encrypted, String source )


Reply via email to