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() ) );