You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2011/05/24 05:22:03 UTC

svn commit: r1126842 - /maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java

Author: jdcasey
Date: Tue May 24 03:22:03 2011
New Revision: 1126842

URL: http://svn.apache.org/viewvc?rev=1126842&view=rev
Log:
Adding new router-based mirror selection to the old legacy maven mirror selector.

Modified:
    maven/maven-3/branches/mirror-group-routing/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java

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=1126842&r1=1126841&r2=1126842&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:22:03 2011
@@ -25,8 +25,13 @@ import java.util.List;
 
 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.settings.Mirror;
 import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
 
 @Component( role = MirrorSelector.class )
@@ -37,8 +42,65 @@ public class DefaultMirrorSelector
     private static final String WILDCARD = "*";
 
     private static final String EXTERNAL_WILDCARD = "external:*";
+    
+    @Requirement
+    private Logger logger;
+    
+    @Requirement
+    private LegacySupport legacySupport;
 
-    public Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors )
+    public Mirror getMirror( final ArtifactRepository repository, final List<Mirror> mirrors )
+    {
+        if ( logger.isDebugEnabled() )
+        {
+            logger.debug( "MAVEN-SELECT: " + repository.getUrl() );
+        }
+
+        Mirror mirror = getSettingsMirror( repository, mirrors );
+
+        if ( mirror != null )
+        {
+            if ( logger.isDebugEnabled() )
+            {
+                logger.debug( "MAVEN-SELECT using mirror from settings.xml." );
+            }
+
+            return mirror;
+        }
+
+        if ( mirror == null )
+        {
+            final String repoUrl = repository.getUrl();
+
+            MirrorRoutingTable routingTable = legacySupport.getSession().getMirrorRoutingTable();
+            final MirrorRoute rMirror = routingTable.getWeightedRandomSuggestion( repoUrl );
+
+            if ( rMirror != null )
+            {
+                if ( logger.isDebugEnabled() )
+                {
+                    logger.debug( "\t==> " + rMirror );
+                }
+
+                mirror = new Mirror();
+                mirror.setMirrorOf( repository.getId() );
+                mirror.setLayout( "default" );
+                mirror.setId( rMirror.getId() );
+                mirror.setUrl( rMirror.getMirrorUrl() );
+            }
+            else
+            {
+                if ( logger.isDebugEnabled() )
+                {
+                    logger.debug( "MAVEN-SELECT: no auto-mirror found." );
+                }
+            }
+        }
+
+        return mirror;
+    }
+    
+    private Mirror getSettingsMirror( ArtifactRepository repository, List<Mirror> mirrors )
     {
         String repoId = repository.getId();