Author: jdcasey Date: Tue May 24 02:17:24 2011 New Revision: 1126827 URL: http://svn.apache.org/viewvc?rev=1126827&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=1126827&r1=1126826&r2=1126827&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 02:17:24 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=1126827&r1=1126826&r2=1126827&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 02:17:24 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=1126827&r1=1126826&r2=1126827&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 02:17:24 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=1126827&r1=1126826&r2=1126827&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 02:17:24 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=1126827&r1=1126826&r2=1126827&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 02:17:24 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 ) {