Author: jdcasey Date: Tue May 24 03:25:00 2011 New Revision: 1126844 URL: http://svn.apache.org/viewvc?rev=1126844&view=rev Log: got the rest of the code changes done (for now), which support 'sticky' auto-mirror. Next comes licensing clean-up, and testing.
Modified: maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRouteSerializer.java maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoutingTable.java maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/RouterMirrorSerializerTest.java maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java 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-core/src/main/java/org/apache/maven/repository/mirror/MirrorRouter.java maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/RoutingMirrorSelector.java maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/configuration/MirrorRouterConfiguration.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-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRouteSerializer.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRouteSerializer.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRouteSerializer.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRouteSerializer.java Tue May 24 03:25:00 2011 @@ -18,6 +18,58 @@ public class MirrorRouteSerializer // NOTE: Gson is supposed to be threadsafe, so all this static stuff should be fine. private static Gson gson; + public static void serializeList( final List<MirrorRoute> mirrors, final Writer writer ) + throws MirrorRouterModelException + { + try + { + getGson().toJson( mirrors, writer ); + } + catch ( final JsonParseException e ) + { + throw new MirrorRouterModelException( "Cannot read router-mirrors.", e ); + } + } + + public static String serializeListToString( final List<MirrorRoute> mirrors ) + throws MirrorRouterModelException + { + try + { + return getGson().toJson( mirrors ); + } + catch ( final JsonParseException e ) + { + throw new MirrorRouterModelException( "Cannot read router-mirrors.", e ); + } + } + + public static List<MirrorRoute> deserializeList( final Reader reader ) + throws MirrorRouterModelException + { + try + { + return getGson().fromJson( reader, RepositoryMirrorListCreator.getType() ); + } + catch ( final JsonParseException e ) + { + throw new MirrorRouterModelException( "Cannot read router-mirrors.", e ); + } + } + + public static List<MirrorRoute> deserializeList( final String source ) + throws MirrorRouterModelException + { + try + { + return getGson().fromJson( source, RepositoryMirrorListCreator.getType() ); + } + catch ( final JsonParseException e ) + { + throw new MirrorRouterModelException( "Cannot read router-mirrors.", e ); + } + } + public static void serialize( final MirrorRoutingTable mirrors, final Writer writer ) throws MirrorRouterModelException { Modified: maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoutingTable.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoutingTable.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoutingTable.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoutingTable.java Tue May 24 03:25:00 2011 @@ -15,7 +15,6 @@ package org.apache.maven.repository.automirror; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -31,7 +30,7 @@ public class MirrorRoutingTable private final transient Random random = new Random(); private transient Map<String, int[]> indexGrabBags = new HashMap<String, int[]>(); - + public synchronized MirrorRoutingTable addMirror( final MirrorRoute mirror ) { if ( !mirrors.contains( mirror ) ) @@ -43,31 +42,36 @@ public class MirrorRoutingTable return this; } - public MirrorRoute getHighestPriorityMirror( final String canonicalUrl ) + public synchronized MirrorRoute getMirror( final String canonicalUrl ) { - if ( mirrors.isEmpty() ) - { - return null; - } - - final List<MirrorRoute> available = new ArrayList<MirrorRoute>( mirrors ); - - // sort by weight. - Collections.sort( available ); - - for ( final MirrorRoute mirror : available ) - { - // return the highest-priority ENABLED mirror. - if ( mirror.isEnabled() && canonicalUrl.equals( mirror.getUrl() ) ) - { - return mirror; - } - } - - return null; + return getWeightedRandomMirror( canonicalUrl ); } + +// private MirrorRoute getHighestPriorityMirror( final String canonicalUrl ) +// { +// if ( mirrors.isEmpty() ) +// { +// return null; +// } +// +// final List<MirrorRoute> available = new ArrayList<MirrorRoute>( mirrors ); +// +// // sort by weight. +// Collections.sort( available ); +// +// for ( final MirrorRoute mirror : available ) +// { +// // return the highest-priority ENABLED mirror. +// if ( mirror.isEnabled() && canonicalUrl.equals( mirror.getUrl() ) ) +// { +// return mirror; +// } +// } +// +// return null; +// } - public MirrorRoute getWeightedRandomSuggestion( final String canonicalUrl ) + private MirrorRoute getWeightedRandomMirror( final String canonicalUrl ) { if ( mirrors.isEmpty() ) { Modified: maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/RouterMirrorSerializerTest.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/RouterMirrorSerializerTest.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/RouterMirrorSerializerTest.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/RouterMirrorSerializerTest.java Tue May 24 03:25:00 2011 @@ -42,7 +42,7 @@ public class RouterMirrorSerializerTest final MirrorRoutingTable result = MirrorRouteSerializer.deserialize( ser ); assertEquals( mirrorMap, result ); - assertTrue( result.getHighestPriorityMirror( "http://repo1.maven.org/maven2" ).isEnabled() ); + assertTrue( result.getMirror( "http://repo1.maven.org/maven2" ).isEnabled() ); } } Modified: maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java Tue May 24 03:25:00 2011 @@ -27,7 +27,7 @@ import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.LegacySupport; import org.apache.maven.repository.automirror.MirrorRoute; -import org.apache.maven.repository.automirror.MirrorRoutingTable; +import org.apache.maven.repository.mirror.MirrorRouter; import org.apache.maven.settings.Mirror; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -72,8 +72,8 @@ public class DefaultMirrorSelector { final String repoUrl = repository.getUrl(); - MirrorRoutingTable routingTable = legacySupport.getSession().getMirrorRoutingTable(); - final MirrorRoute rMirror = routingTable.getWeightedRandomSuggestion( repoUrl ); + MirrorRouter routingTable = legacySupport.getSession().getMirrorRouter(); + final MirrorRoute rMirror = routingTable.getMirror( repoUrl ); if ( rMirror != null ) { 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=1126844&r1=1126843&r2=1126844&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:25:00 2011 @@ -101,7 +101,6 @@ import org.sonatype.aether.util.graph.tr import org.sonatype.aether.util.graph.traverser.FatArtifactTraverser; import org.sonatype.aether.util.repository.ChainedWorkspaceReader; import org.sonatype.aether.util.repository.DefaultAuthenticationSelector; -import org.sonatype.aether.util.repository.DefaultMirrorSelector; import org.sonatype.aether.util.repository.DefaultProxySelector; /** @@ -325,7 +324,7 @@ public class DefaultMaven { return processResult( result, session.getResult().getExceptions().get( 0 ) ); } - + return result; } @@ -378,7 +377,7 @@ public class DefaultMaven } final RoutingMirrorSelector mirrorSelector = - new RoutingMirrorSelector( request.getMirrorRoutingTable(), logger ); + new RoutingMirrorSelector( request.getMirrorRouter(), logger ); for ( Mirror mirror : request.getMirrors() ) { 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=1126844&r1=1126843&r2=1126844&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:25:00 2011 @@ -29,7 +29,8 @@ 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.repository.mirror.MirrorRouter; +import org.apache.maven.repository.mirror.configuration.MirrorRouterConfiguration; import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Server; @@ -186,7 +187,8 @@ public class DefaultMavenExecutionReques copy.setWorkspaceReader( original.getWorkspaceReader() ); copy.setNoSnapshotUpdates( original.isNoSnapshotUpdates() ); copy.setExecutionListener( original.getExecutionListener() ); - copy.setMirrorRoutingTable( original.getMirrorRoutingTable() ); + copy.setMirrorRouter( original.getMirrorRouter() ); + return copy; } @@ -1078,22 +1080,22 @@ public class DefaultMavenExecutionReques return this; } - private MirrorRoutingTable mirrorRoutingTable; + private MirrorRouter mirrorRouter; - public synchronized MirrorRoutingTable getMirrorRoutingTable() + public synchronized MirrorRouter getMirrorRouter() { - if ( mirrorRoutingTable == null ) + if ( mirrorRouter == null ) { - mirrorRoutingTable = new MirrorRoutingTable(); + mirrorRouter = new MirrorRouter(); } - return mirrorRoutingTable; + return mirrorRouter; } - public MavenExecutionRequest setMirrorRoutingTable( final MirrorRoutingTable mirrorRoutingTable ) + public MavenExecutionRequest setMirrorRouter( final MirrorRouter mirrorRouter ) { - this.mirrorRoutingTable = mirrorRoutingTable; + this.mirrorRouter = mirrorRouter; 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=1126844&r1=1126843&r2=1126844&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:25:00 2011 @@ -28,7 +28,8 @@ 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.repository.mirror.MirrorRouter; +import org.apache.maven.repository.mirror.configuration.MirrorRouterConfiguration; import org.apache.maven.settings.Mirror; import org.apache.maven.settings.Proxy; import org.apache.maven.settings.Server; @@ -284,21 +285,8 @@ 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(); + MirrorRouter getMirrorRouter(); + + MavenExecutionRequest setMirrorRouter( MirrorRouter router ); - /** - * 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=1126844&r1=1126843&r2=1126844&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:25:00 2011 @@ -33,7 +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.repository.mirror.MirrorRouter; import org.apache.maven.settings.Settings; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; @@ -394,9 +394,9 @@ public class MavenSession return repositorySession; } - public MirrorRoutingTable getMirrorRoutingTable() + public MirrorRouter getMirrorRouter() { - return request.getMirrorRoutingTable(); + return request.getMirrorRouter(); } } Modified: maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/MirrorRouter.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/MirrorRouter.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/MirrorRouter.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/MirrorRouter.java Tue May 24 03:25:00 2011 @@ -18,10 +18,48 @@ package org.apache.maven.repository.mirror; import org.apache.maven.repository.automirror.MirrorRoute; +import org.apache.maven.repository.automirror.MirrorRoutingTable; -public interface MirrorRouter +import java.util.Collections; +import java.util.Map; + +public class MirrorRouter { + + private MirrorRoutingTable routingTable; + + private Map<String, MirrorRoute> selectedRoutes; + + public MirrorRouter( MirrorRoutingTable routingTable, Map<String, MirrorRoute> selectedRoutes ) + { + this.routingTable = routingTable; + this.selectedRoutes = selectedRoutes; + } + + public MirrorRouter() + { + routingTable = new MirrorRoutingTable(); + selectedRoutes = Collections.emptyMap(); + } - MirrorRoute getWeightedRandomSuggestion( final String canonicalUrl ); + public synchronized MirrorRoute getMirror( String canonicalUrl ) + { + MirrorRoute route = selectedRoutes.get( canonicalUrl ); + if ( route == null ) + { + route = routingTable.getMirror( canonicalUrl ); + if ( route != null ) + { + selectedRoutes.put( canonicalUrl, route ); + } + } + + return route; + } + + public Map<String, MirrorRoute> getSelectedRoutes() + { + return selectedRoutes; + } -} \ No newline at end of file +} Modified: maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/RoutingMirrorSelector.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/RoutingMirrorSelector.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/RoutingMirrorSelector.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/RoutingMirrorSelector.java Tue May 24 03:25:00 2011 @@ -18,7 +18,6 @@ package org.apache.maven.repository.mirror; import org.apache.maven.repository.automirror.MirrorRoute; -import org.apache.maven.repository.automirror.MirrorRoutingTable; import org.codehaus.plexus.logging.Logger; import org.sonatype.aether.repository.MirrorSelector; import org.sonatype.aether.repository.RemoteRepository; @@ -30,15 +29,15 @@ public class RoutingMirrorSelector implements MirrorSelector { - private final MirrorRoutingTable mirrorRoutingTable; + private final MirrorRouter mirrorRouter; private final DefaultMirrorSelector delegate = new DefaultMirrorSelector(); private final Logger logger; - - public RoutingMirrorSelector( final MirrorRoutingTable mirrorRoutingTable, final Logger logger ) + + public RoutingMirrorSelector( final MirrorRouter mirrorRouter, final Logger logger ) { - this.mirrorRoutingTable = mirrorRoutingTable; + this.mirrorRouter = mirrorRouter; this.logger = logger; } @@ -64,7 +63,7 @@ public class RoutingMirrorSelector { final String repoUrl = repository.getUrl(); - final MirrorRoute route = mirrorRoutingTable.getWeightedRandomSuggestion( repoUrl ); + final MirrorRoute route = mirrorRouter.getMirror( repoUrl ); if ( route != null ) { Modified: maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/configuration/MirrorRouterConfiguration.java URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/configuration/MirrorRouterConfiguration.java?rev=1126844&r1=1126843&r2=1126844&view=diff ============================================================================== --- maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/configuration/MirrorRouterConfiguration.java (original) +++ maven/maven-3/branches/mirror-group-routing/maven-core/src/main/java/org/apache/maven/repository/mirror/configuration/MirrorRouterConfiguration.java Tue May 24 03:25:00 2011 @@ -18,6 +18,8 @@ package org.apache.maven.repository.mirr import org.apache.http.auth.UsernamePasswordCredentials; +import java.io.File; + public class MirrorRouterConfiguration { @@ -26,6 +28,8 @@ public class MirrorRouterConfiguration public static final String ALL_DISCOVERY_STRATEGIES = "all"; public static final String NO_DISCOVERY_STRATEGIES = "none"; + + private File selectedRoutesFile; private String routerUrl; @@ -83,5 +87,16 @@ public class MirrorRouterConfiguration discoveryStrategies = strategies; return this; } + + public File getSelectedRoutesFile() + { + return selectedRoutesFile; + } + + public MirrorRouterConfiguration setSelectedRoutesFile( File selectedRoutesFile ) + { + this.selectedRoutesFile = selectedRoutesFile; + return this; + } } 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=1126844&r1=1126843&r2=1126844&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:25:00 2011 @@ -51,11 +51,13 @@ import org.apache.maven.model.building.M 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.MirrorRouter; +import org.apache.maven.repository.mirror.MirrorRouterException; 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.repository.mirror.loader.MirrorRouterLoader; import org.apache.maven.settings.building.DefaultSettingsBuildingRequest; import org.apache.maven.settings.building.SettingsBuilder; import org.apache.maven.settings.building.SettingsBuildingRequest; @@ -124,10 +126,12 @@ public class MavenCli private MirrorRouterConfigBuilder routerConfBuilder; - private MirrorRoutingTableLoader routingTableLoader; + private MirrorRouterLoader routerLoader; private DefaultSecDispatcher dispatcher; + private MirrorRouterConfiguration routerConfig; + public MavenCli() { this( null ); @@ -426,7 +430,7 @@ public class MavenCli settingsBuilder = container.lookup( SettingsBuilder.class ); routerConfBuilder = container.lookup( MirrorRouterConfigBuilder.class ); - routingTableLoader = container.lookup( MirrorRoutingTableLoader.class ); + routerLoader = container.lookup( MirrorRouterLoader.class ); dispatcher = (DefaultSecDispatcher) container.lookup( SecDispatcher.class, "maven" ); } @@ -551,6 +555,15 @@ public class MavenCli MavenExecutionResult result = maven.execute( cliRequest.request ); + try + { + routerLoader.saveSelectedMirrors( cliRequest.request.getMirrorRouter(), routerConfig ); + } + catch ( MirrorRouterException e ) + { + result.addException( e ); + } + eventSpyDispatcher.onEvent( result ); eventSpyDispatcher.close(); @@ -929,10 +942,10 @@ public class MavenCli userToolchainsFile = MavenCli.DEFAULT_USER_TOOLCHAINS_FILE; } - final MirrorRouterConfiguration routerConfig = + routerConfig = routerConfBuilder.build( new FileMirrorRouterConfigSource( DEFAULT_USER_EXT_CONF_DIR ) ); - MirrorRoutingTable mirrorRoutingTable = routingTableLoader.load( routerConfig ); + MirrorRouter mirrorRouter = routerLoader.load( routerConfig ); request.setBaseDirectory( baseDirectory ).setGoals( goals ) .setSystemProperties( cliRequest.systemProperties ) @@ -948,7 +961,7 @@ public class MavenCli .setNoSnapshotUpdates( noSnapshotUpdates ) // default: false .setGlobalChecksumPolicy( globalChecksumPolicy ) // default: warn .setUserToolchainsFile( userToolchainsFile ) - .setMirrorRoutingTable( mirrorRoutingTable ); + .setMirrorRouter( mirrorRouter ); if ( alternatePomFile != null ) {