Author: jdcasey
Date: Tue May 24 03:21:48 2011
New Revision: 1126841

URL: http://svn.apache.org/viewvc?rev=1126841&view=rev
Log:
Re-apply injection of MirrorRouting* classes, to add the ability to load and 
select mirrors from a routing table.

Modified:
    
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
    
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
    
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    
maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java

Modified: 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=1126841&r1=1126840&r2=1126841&view=diff
==============================================================================
--- 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 (original)
+++ 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
 Tue May 24 03:21:48 2011
@@ -58,6 +58,7 @@ import org.apache.maven.project.ProjectB
 import org.apache.maven.project.ProjectSorter;
 import org.apache.maven.repository.DelegatingLocalArtifactRepository;
 import org.apache.maven.repository.LocalRepositoryNotAccessibleException;
+import org.apache.maven.repository.mirror.RoutingMirrorSelector;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -376,7 +377,9 @@ public class DefaultMaven
             }
         }
 
-        DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
+        final RoutingMirrorSelector mirrorSelector =
+            new RoutingMirrorSelector( request.getMirrorRoutingTable(), logger 
);
+        
         for ( Mirror mirror : request.getMirrors() )
         {
             mirrorSelector.add( mirror.getId(), mirror.getUrl(), 
mirror.getLayout(), false, mirror.getMirrorOf(),

Modified: 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=1126841&r1=1126840&r2=1126841&view=diff
==============================================================================
--- 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 (original)
+++ 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 Tue May 24 03:21:48 2011
@@ -29,6 +29,7 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.automirror.MirrorRoutingTable;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -185,6 +186,7 @@ public class DefaultMavenExecutionReques
         copy.setWorkspaceReader( original.getWorkspaceReader() );
         copy.setNoSnapshotUpdates( original.isNoSnapshotUpdates() );
         copy.setExecutionListener( original.getExecutionListener() );
+        copy.setMirrorRoutingTable( original.getMirrorRoutingTable() );
         return copy;
     }
 
@@ -1076,4 +1078,22 @@ public class DefaultMavenExecutionReques
         return this;
     }
 
+    private MirrorRoutingTable mirrorRoutingTable;
+
+    public synchronized MirrorRoutingTable getMirrorRoutingTable()
+    {
+        if ( mirrorRoutingTable == null )
+        {
+            mirrorRoutingTable = new MirrorRoutingTable();
+        }
+
+        return mirrorRoutingTable;
+    }
+
+    public MavenExecutionRequest setMirrorRoutingTable( final 
MirrorRoutingTable mirrorRoutingTable )
+    {
+        this.mirrorRoutingTable = mirrorRoutingTable;
+        return this;
+    }
+    
 }

Modified: 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=1126841&r1=1126840&r2=1126841&view=diff
==============================================================================
--- 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 (original)
+++ 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 Tue May 24 03:21:48 2011
@@ -28,6 +28,7 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.automirror.MirrorRoutingTable;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -283,4 +284,21 @@ public interface MavenExecutionRequest
 
     ProjectBuildingRequest getProjectBuildingRequest();
 
+    /**
+     * List of mirrors, URLs they mirror, weight for each mirror, whether it's 
disabled, etc. This is used to select a
+     * mirror for a particular repository URL.
+     * 
+     * @return The routing table instance for use in this build. Never {@code 
null}.
+     */
+    MirrorRoutingTable getMirrorRoutingTable();
+
+    /**
+     * Set the list of mirrors, urls they mirror, weight for each mirror, 
whether it's disabled, etc.
+     * 
+     * @param routingTable
+     *            The {@link MirrorRoutingTable} to use for the current build.
+     * @return This request, never {@code null}.
+     */
+    MavenExecutionRequest setMirrorRoutingTable( MirrorRoutingTable 
routingTable );
+    
 }

Modified: 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=1126841&r1=1126840&r2=1126841&view=diff
==============================================================================
--- 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 (original)
+++ 
maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
 Tue May 24 03:21:48 2011
@@ -33,6 +33,7 @@ import org.apache.maven.monitor.event.Ev
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.repository.automirror.MirrorRoutingTable;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.PlexusContainer;
 import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -393,4 +394,9 @@ public class MavenSession
         return repositorySession;
     }
 
+    public MirrorRoutingTable getMirrorRoutingTable()
+    {
+        return request.getMirrorRoutingTable();
+    }
+    
 }

Modified: 
maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=1126841&r1=1126840&r2=1126841&view=diff
==============================================================================
--- 
maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
 (original)
+++ 
maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
 Tue May 24 03:21:48 2011
@@ -50,6 +50,12 @@ import org.apache.maven.lifecycle.intern
 import org.apache.maven.model.building.ModelProcessor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.properties.internal.EnvironmentUtils;
+import org.apache.maven.repository.automirror.MirrorRoutingTable;
+import 
org.apache.maven.repository.mirror.configuration.FileMirrorRouterConfigSource;
+import 
org.apache.maven.repository.mirror.configuration.MirrorRouterConfigBuilder;
+import 
org.apache.maven.repository.mirror.configuration.MirrorRouterConfiguration;
+import 
org.apache.maven.repository.mirror.configuration.MirrorRouterConfigurationException;
+import org.apache.maven.repository.mirror.loader.MirrorRoutingTableLoader;
 import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
 import org.apache.maven.settings.building.SettingsBuilder;
 import org.apache.maven.settings.building.SettingsBuildingRequest;
@@ -95,6 +101,8 @@ public class MavenCli
 
     public static final File DEFAULT_USER_TOOLCHAINS_FILE = new File( 
userMavenConfigurationHome, "toolchains.xml" );
 
+    public static final File DEFAULT_USER_EXT_CONF_DIR = new File( 
userMavenConfigurationHome, "conf" );
+    
     private static final String EXT_CLASS_PATH = "maven.ext.class.path";
 
     private ClassWorld classWorld;
@@ -114,6 +122,10 @@ public class MavenCli
 
     private SettingsBuilder settingsBuilder;
 
+    private MirrorRouterConfigBuilder routerConfBuilder;
+    
+    private MirrorRoutingTableLoader routingTableLoader;
+
     private DefaultSecDispatcher dispatcher;
 
     public MavenCli()
@@ -413,6 +425,9 @@ public class MavenCli
 
         settingsBuilder = container.lookup( SettingsBuilder.class );
 
+        routerConfBuilder = container.lookup( MirrorRouterConfigBuilder.class 
);
+        routingTableLoader = container.lookup( MirrorRoutingTableLoader.class 
);
+        
         dispatcher = (DefaultSecDispatcher) container.lookup( 
SecDispatcher.class, "maven" );
     }
 
@@ -752,6 +767,7 @@ public class MavenCli
     }
 
     private MavenExecutionRequest populateRequest( CliRequest cliRequest )
+        throws Exception
     {
         MavenExecutionRequest request = cliRequest.request;
         CommandLine commandLine = cliRequest.commandLine;
@@ -913,6 +929,11 @@ public class MavenCli
             userToolchainsFile = MavenCli.DEFAULT_USER_TOOLCHAINS_FILE;
         }
 
+        final MirrorRouterConfiguration routerConfig =
+            routerConfBuilder.build( new FileMirrorRouterConfigSource( 
DEFAULT_USER_EXT_CONF_DIR ) );
+        
+        MirrorRoutingTable mirrorRoutingTable = routingTableLoader.load( 
routerConfig );
+        
         request.setBaseDirectory( baseDirectory ).setGoals( goals )
             .setSystemProperties( cliRequest.systemProperties )
             .setUserProperties( cliRequest.userProperties )
@@ -926,7 +947,8 @@ public class MavenCli
             .setUpdateSnapshots( updateSnapshots ) // default: false
             .setNoSnapshotUpdates( noSnapshotUpdates ) // default: false
             .setGlobalChecksumPolicy( globalChecksumPolicy ) // default: warn
-            .setUserToolchainsFile( userToolchainsFile );
+            .setUserToolchainsFile( userToolchainsFile )
+            .setMirrorRoutingTable( mirrorRoutingTable );
 
         if ( alternatePomFile != null )
         {


Reply via email to