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 )
         {


Reply via email to