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 )