Author: nicolas
Date: Mon Feb 25 02:18:23 2008
New Revision: 630789

URL: http://svn.apache.org/viewvc?rev=630789&view=rev
Log:
MNG-3407 : improve mirrorOf to support pattern based repository URL

Modified:
    
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
    
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java

Modified: 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=630789&r1=630788&r2=630789&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
 (original)
+++ 
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
 Mon Feb 25 02:18:23 2008
@@ -52,6 +52,7 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
@@ -62,6 +63,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.text.MessageFormat;
 
 /** @plexus.component */
 public class DefaultWagonManager
@@ -754,6 +756,17 @@
         if ( repository == null )
         {
             repository = (ArtifactRepository) mirrors.get( WILDCARD );
+               if ( repository != null )
+               {
+                               String url = repository.getUrl();
+                               if ( url.indexOf( "${mirrorOf}" ) >= 0 )
+                               {
+                                   url = StringUtils.replace( url, 
"${mirrorOf}", "{0}" );
+                                   url = MessageFormat.format( url, new 
Object[] { mirrorOf } );
+                                   repository = new DefaultArtifactRepository( 
mirrorOf, url, null );
+                                       mirrors.put( mirrorOf, repository );
+                               }
+                       }                       
         }
 
         return repository;

Modified: 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
URL: 
http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java?rev=630789&r1=630788&r2=630789&view=diff
==============================================================================
--- 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
 (original)
+++ 
maven/artifact/trunk/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
 Mon Feb 25 02:18:23 2008
@@ -56,6 +56,15 @@
         wagonManager = (WagonManager) lookup( WagonManager.ROLE );
     }
 
+       public void testMappedMirror()
+               throws Exception
+       {
+               DefaultWagonManager manager = (DefaultWagonManager) 
wagonManager;
+               manager.addMirror( "wildcar", "*", 
"http://archiva/repository/${mirrorOf}"; );
+               assertEquals( "http://archiva/repository/central";, 
manager.getMirror( "central" ).getUrl() );
+               assertEquals( "http://archiva/repository/apache.snapshots";, 
manager.getMirror( "apache.snapshots" ).getUrl() );
+       }
+       
     public void testDefaultWagonManager()
         throws Exception
     {


Reply via email to