You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/02 12:16:20 UTC
svn commit: r810444 - in /maven/components/trunk:
maven-compat/src/main/java/org/apache/maven/repository/
maven-core/src/main/java/org/apache/maven/execution/
maven-core/src/main/java/org/apache/maven/project/
maven-embedder/src/main/java/org/apache/ma...
Author: bentmann
Date: Wed Sep 2 10:16:19 2009
New Revision: 810444
URL: http://svn.apache.org/viewvc?rev=810444&view=rev
Log:
[MNG-4334] maven core caches settings.xml
o Last pass: proxies moved out of the components into the requests
Modified:
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-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/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/ProjectBuildingRequest.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -85,9 +85,6 @@
@Requirement
private PlexusContainer plexus;
- // 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 );
@@ -379,6 +376,8 @@
effectiveRepository.setAuthentication( aliasedRepo.getAuthentication() );
+ effectiveRepository.setProxy( aliasedRepo.getProxy() );
+
effectiveRepositories.add( effectiveRepository );
}
@@ -531,6 +530,51 @@
}
}
+ private org.apache.maven.settings.Proxy getProxy( ArtifactRepository repository,
+ List<org.apache.maven.settings.Proxy> proxies )
+ {
+ if ( proxies != null && repository.getProtocol() != null )
+ {
+ for ( org.apache.maven.settings.Proxy proxy : proxies )
+ {
+ if ( proxy.isActive() && repository.getProtocol().equalsIgnoreCase( proxy.getProtocol() ) )
+ {
+ return proxy;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public void injectProxy( List<ArtifactRepository> repositories, List<org.apache.maven.settings.Proxy> proxies )
+ {
+ if ( repositories != null )
+ {
+ for ( ArtifactRepository repository : repositories )
+ {
+ org.apache.maven.settings.Proxy proxy = getProxy( repository, proxies );
+
+ if ( proxy != null )
+ {
+ Proxy p = new Proxy();
+ p.setHost( proxy.getHost() );
+ p.setProtocol( proxy.getProtocol() );
+ p.setPort( proxy.getPort() );
+ p.setNonProxyHosts( proxy.getNonProxyHosts() );
+ p.setUserName( proxy.getUsername() );
+ p.setPassword( proxy.getPassword() );
+
+ repository.setProxy( p );
+ }
+ else
+ {
+ repository.setProxy( null );
+ }
+ }
+ }
+ }
+
public MetadataResolutionResult resolveMetadata( MetadataResolutionRequest request )
{
@@ -612,25 +656,7 @@
ArtifactRepository artifactRepository = artifactRepositoryFactory.createArtifactRepository( repositoryId, url, repositoryLayout, snapshots, releases );
- Proxy proxy = proxies.get( artifactRepository.getProtocol() );
-
- if ( proxy != null )
- {
- artifactRepository.setProxy( proxy );
- }
-
return artifactRepository;
}
- public void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts )
- {
- Proxy proxy = new Proxy();
- proxy.setHost( host );
- proxy.setProtocol( protocol );
- proxy.setPort( port );
- proxy.setNonProxyHosts( nonProxyHosts );
- proxy.setUserName( username );
- proxy.setPassword( password );
- proxies.put( protocol, proxy );
- }
}
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -104,10 +104,21 @@
void injectMirror( List<ArtifactRepository> repositories, List<Mirror> mirrors );
/**
+ * Injects the proxy information into the specified repositories. For each repository that is matched by a proxy,
+ * its proxy data will be set accordingly. Repositories without a matching proxy will have their proxy cleared.
+ * <em>Note:</em> This method must be called after {@link #injectMirror(List, List)} or the repositories will end up
+ * with the wrong proxies.
+ *
+ * @param repositories The repositories into which to inject the proxy information, may be {@code null}.
+ * @param proxies The available proxies, may be {@code null}.
+ */
+ void injectProxy( List<ArtifactRepository> repositories, List<org.apache.maven.settings.Proxy> proxies );
+
+ /**
* 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.
+ * matching server will have their credentials cleared. <em>Note:</em> This method must be called after
+ * {@link #injectMirror(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}.
@@ -133,5 +144,4 @@
void retrieve( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor )
throws TransferFailedException, ResourceDoesNotExistException;
- void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts );
}
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -967,6 +967,7 @@
projectBuildingRequest.setOffline( isOffline() );
projectBuildingRequest.setServers( getServers() );
projectBuildingRequest.setMirrors( getMirrors() );
+ projectBuildingRequest.setProxies( getProxies() );
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -86,6 +86,7 @@
{
ArtifactRepository repo = repositorySystem.buildArtifactRepository( (Repository) repository );
repositorySystem.injectMirror( Arrays.asList( repo ), configuration.getMirrors() );
+ repositorySystem.injectProxy( Arrays.asList( repo ), configuration.getProxies() );
repositorySystem.injectAuthentication( Arrays.asList( repo ), configuration.getServers() );
repos.add( repo );
}
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -100,6 +100,8 @@
repositorySystem.injectMirror( artifactRepositories, request.getMirrors() );
+ repositorySystem.injectProxy( artifactRepositories, request.getProxies() );
+
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -30,6 +30,7 @@
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.Proxy;
import org.apache.maven.settings.Server;
public class DefaultProjectBuildingRequest
@@ -50,6 +51,8 @@
private List<Mirror> mirrors;
+ private List<Proxy> proxies;
+
private List<ModelEventListener> listeners;
private MavenProject project;
@@ -87,6 +90,7 @@
pluginArtifactRepositories = new ArrayList<ArtifactRepository>();
servers = new ArrayList<Server>();
mirrors = new ArrayList<Mirror>();
+ proxies = new ArrayList<Proxy>();
}
public MavenProject getProject()
@@ -210,6 +214,25 @@
return mirrors;
}
+ public ProjectBuildingRequest setProxies( List<Proxy> proxies )
+ {
+ if ( proxies != null )
+ {
+ this.proxies = new ArrayList<Proxy>( proxies );
+ }
+ else
+ {
+ this.proxies.clear();
+ }
+
+ return this;
+ }
+
+ public List<Proxy> getProxies()
+ {
+ return proxies;
+ }
+
public Properties getSystemProperties()
{
return systemProperties;
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -28,6 +28,7 @@
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Server;
public interface ProjectBuildingRequest
@@ -61,6 +62,10 @@
List<Mirror> getMirrors();
+ ProjectBuildingRequest setProxies( List<Proxy> proxies );
+
+ List<Proxy> getProxies();
+
/**
* 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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -102,6 +102,8 @@
repositorySystem.injectMirror( Arrays.asList( repo ), projectBuildingRequest.getMirrors() );
+ repositorySystem.injectProxy( Arrays.asList( repo ), projectBuildingRequest.getProxies() );
+
repositorySystem.injectAuthentication( Arrays.asList( repo ), projectBuildingRequest.getServers() );
remoteRepositories.add( 0, repo );
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=810444&r1=810443&r2=810444&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 Wed Sep 2 10:16:19 2009
@@ -194,23 +194,13 @@
// </proxy>
// </proxies>
- Proxy activeProxy = settings.getActiveProxy();
-
- if ( activeProxy != null )
+ for ( Proxy proxy : settings.getProxies() )
{
- if ( activeProxy.getHost() == null )
+ if ( !proxy.isActive() )
{
- throw new MavenEmbedderException( "Proxy in settings.xml has no host" );
+ continue;
}
- String password = decrypt( activeProxy.getPassword(), "password for proxy " + activeProxy.getId() );
-
- repositorySystem.addProxy( activeProxy.getProtocol(), activeProxy.getHost(), activeProxy.getPort(),
- activeProxy.getUsername(), password, activeProxy.getNonProxyHosts() );
- }
-
- for ( Proxy proxy : settings.getProxies() )
- {
proxy = proxy.clone();
String password = decrypt( proxy.getPassword(), "password for proxy " + proxy.getId() );
@@ -247,11 +237,13 @@
}
repositorySystem.injectMirror( request.getRemoteRepositories(), request.getMirrors() );
+ repositorySystem.injectProxy( request.getRemoteRepositories(), request.getProxies() );
repositorySystem.injectAuthentication( request.getRemoteRepositories(), request.getServers() );
request.setRemoteRepositories( repositorySystem.getEffectiveRepositories( request.getRemoteRepositories() ) );
repositorySystem.injectMirror( request.getPluginArtifactRepositories(), request.getMirrors() );
+ repositorySystem.injectProxy( request.getPluginArtifactRepositories(), request.getProxies() );
repositorySystem.injectAuthentication( request.getPluginArtifactRepositories(), request.getServers() );
request.setPluginArtifactRepositories( repositorySystem.getEffectiveRepositories( request.getPluginArtifactRepositories() ) );