You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/09/24 11:06:46 UTC
svn commit: r818412 - in /maven/maven-3/trunk/maven-compat/src:
main/java/org/apache/maven/repository/ test/java/org/apache/maven/repository/
Author: bentmann
Date: Thu Sep 24 09:06:46 2009
New Revision: 818412
URL: http://svn.apache.org/viewvc?rev=818412&view=rev
Log:
o Refactored code
Added:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java
- copied, changed from r818396, maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorSelector.java
- copied, changed from r818396, maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorBuilder.java
Removed:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorBuilder.java
Modified:
maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java
Copied: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java (from r818396, maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java)
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java?p2=maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java&p1=maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java&r1=818396&r2=818412&rev=818412&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/DefaultMirrorSelector.java Thu Sep 24 09:06:46 2009
@@ -21,139 +21,47 @@
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
-import org.apache.maven.artifact.repository.Authentication;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+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;
-@Component(role=MirrorBuilder.class)
-public class DefaultMirrorBuilder
- implements MirrorBuilder
+@Component( role = MirrorSelector.class )
+public class DefaultMirrorSelector
+ implements MirrorSelector
{
+
private static final String WILDCARD = "*";
private static final String EXTERNAL_WILDCARD = "external:*";
- private static int anonymousMirrorIdSeed = 0;
-
- @Requirement
- private Logger logger;
-
- @Requirement
- private ArtifactRepositoryFactory repositoryFactory;
-
- //used LinkedMap to preserve the order.
- private Map<String, ArtifactRepository> mirrors = new LinkedHashMap<String, ArtifactRepository>();
-
- public void addMirror( String id, String mirrorOf, String url, Authentication auth )
- {
- if ( id == null )
- {
- id = "mirror-" + anonymousMirrorIdSeed++;
- logger.warn( "You are using a mirror that doesn't declare an <id/> element. Using \'" + id + "\' instead:\nId: " + id + "\nmirrorOf: " + mirrorOf + "\nurl: " + url + "\n" );
- }
-
- if ( !mirrors.containsKey( mirrorOf ) )
- {
- ArtifactRepository mirror = repositoryFactory.createArtifactRepository( id, url, (ArtifactRepositoryLayout)null, null, null );
-
- mirror.setAuthentication( auth );
-
- mirrors.put( mirrorOf, mirror );
- }
- }
-
- /**
- * This method finds a matching mirror for the selected repository. If there is an exact match,
- * this will be used. If there is no exact match, then the list of mirrors is examined to see if
- * a pattern applies.
- *
- * @param originalRepository See if there is a mirror for this repository.
- * @return the selected mirror or null if none are found.
- */
- public ArtifactRepository getMirror( ArtifactRepository originalRepository )
+ public Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors )
{
- ArtifactRepository selectedMirror = mirrors.get( originalRepository.getId() );
- if ( null == selectedMirror )
+ String repoId = repository.getId();
+
+ if ( repoId != null && mirrors != null )
{
- // Process the patterns in order. First one that matches wins.
- Set<String> keySet = mirrors.keySet();
- if ( keySet != null )
+ for ( Mirror mirror : mirrors )
{
- for ( String pattern : keySet )
+ if ( repoId.equals( mirror.getMirrorOf() ) )
{
- if ( matchPattern( originalRepository, pattern ) )
- {
- selectedMirror = mirrors.get( pattern );
- //stop on the first match.
- break;
- }
+ return mirror;
}
}
- }
-
- return selectedMirror;
- }
- public void clearMirrors()
- {
- mirrors.clear();
- anonymousMirrorIdSeed = 0;
- }
-
- public List<ArtifactRepository> getMirrors( List<ArtifactRepository> remoteRepositories )
- {
- if ( remoteRepositories != null )
- {
- for ( ArtifactRepository repository : remoteRepositories)
- {
- // Check to see if we have a valid mirror for this repository
- ArtifactRepository mirror = getMirror( repository );
-
- if ( mirror != null )
- {
- // We basically just want to take the URL
- repository.setUrl( mirror.getUrl() );
- repository.setAuthentication( mirror.getAuthentication() );
-
- // I would like a mirrored repository to be visually different but we'll put another field
- // in the repository as changing the ID hoses up authentication.
- repository.setId( mirror.getId() );
+ for ( Mirror mirror : mirrors )
+ {
+ if ( matchPattern( repository, mirror.getMirrorOf() ) )
+ {
+ return mirror;
}
}
}
-
- return remoteRepositories;
+
+ return null;
}
-
- // Make these available to tests
-
- ArtifactRepository getMirrorRepository( ArtifactRepository repository )
- {
- ArtifactRepository mirror = getMirror( repository );
- if ( mirror != null )
- {
- String id = mirror.getId();
- if ( id == null )
- {
- // TODO: this should be illegal in settings.xml
- id = repository.getId();
- }
- logger.debug( "Using mirror: " + mirror.getId() + " for repository: " + repository.getId() + "\n(mirror url: " + mirror.getUrl() + ")" );
- repository = repositoryFactory.createArtifactRepository( id, mirror.getUrl(), repository.getLayout(), repository.getSnapshots(), repository.getReleases() );
- }
- return repository;
- }
-
/**
* This method checks if the pattern matches the originalRepository. Valid patterns: * =
* everything external:* = everything not on the localhost and not file based. repo,repo1 = repo
@@ -210,8 +118,7 @@
}
return result;
}
-
-
+
/**
* Checks the URL to see if this repository refers to an external repository
*
@@ -231,6 +138,5 @@
return false;
}
}
-
-
+
}
Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=818412&r1=818411&r2=818412&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java Thu Sep 24 09:06:46 2009
@@ -85,6 +85,9 @@
@Requirement
private PlexusContainer plexus;
+ @Requirement
+ private MirrorSelector mirrorSelector;
+
public Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type )
{
return artifactFactory.createArtifact( groupId, artifactId, version, scope, type );
@@ -456,28 +459,7 @@
public Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors )
{
- String repoId = repository.getId();
-
- if ( repoId != null && mirrors != null )
- {
- for ( Mirror mirror : mirrors )
- {
- if ( repoId.equals( mirror.getMirrorOf() ) )
- {
- return mirror;
- }
- }
-
- for ( Mirror mirror : mirrors )
- {
- if ( DefaultMirrorBuilder.matchPattern( repository, mirror.getMirrorOf() ) )
- {
- return mirror;
- }
- }
- }
-
- return null;
+ return mirrorSelector.getMirror( repository, mirrors );
}
public void injectMirror( List<ArtifactRepository> repositories, List<Mirror> mirrors )
Copied: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorSelector.java (from r818396, maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorBuilder.java)
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorSelector.java?p2=maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorSelector.java&p1=maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorBuilder.java&r1=818396&r2=818412&rev=818412&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/MirrorSelector.java Thu Sep 24 09:06:46 2009
@@ -22,15 +22,23 @@
import java.util.List;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.Authentication;
+import org.apache.maven.settings.Mirror;
-public interface MirrorBuilder
+/**
+ * Handles the selection of mirrors for repositories.
+ *
+ * @author Benjamin Bentmann
+ */
+public interface MirrorSelector
{
- ArtifactRepository getMirror( ArtifactRepository repository );
-
- List<ArtifactRepository> getMirrors( List<ArtifactRepository> repositories );
-
- void addMirror( String id, String mirrorOf, String url, Authentication auth );
-
- void clearMirrors();
+
+ /**
+ * Determines the mirror for the specified repository.
+ *
+ * @param repository The repository to determine the mirror for, must not be {@code null}.
+ * @param mirrors The available mirrors, may be {@code null}.
+ * @return The mirror specification for the repository or {@code null} if no mirror matched.
+ */
+ Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors );
+
}
Modified: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java?rev=818412&r1=818411&r2=818412&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java Thu Sep 24 09:06:46 2009
@@ -19,195 +19,165 @@
* under the License.
*/
-import java.io.File;
import java.util.Arrays;
import java.util.List;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.settings.Mirror;
import org.codehaus.plexus.PlexusTestCase;
public class MirrorProcessorTest
extends PlexusTestCase
{
- private DefaultMirrorBuilder mirrorBuilder;
+ private DefaultMirrorSelector mirrorSelector;
private ArtifactRepositoryFactory repositorySystem;
protected void setUp()
throws Exception
{
- mirrorBuilder = (DefaultMirrorBuilder) lookup( MirrorBuilder.class );
+ mirrorSelector = (DefaultMirrorSelector) lookup( MirrorSelector.class );
repositorySystem = lookup( ArtifactRepositoryFactory.class );
- mirrorBuilder.clearMirrors();
}
@Override
protected void tearDown()
throws Exception
{
- mirrorBuilder = null;
- super.tearDown();
- }
+ mirrorSelector = null;
+ repositorySystem = null;
- public void testAddMirrorWithNullRepositoryId()
- {
- mirrorBuilder.addMirror( null, "test", "http://www.nowhere.com/", null );
+ super.tearDown();
}
public void testExternalURL()
{
- assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost" ) ) );
- assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) );
- assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) );
- assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) );
- assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://" ) ) );
+ assertTrue( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://somehost" ) ) );
+ assertTrue( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) );
+ assertTrue( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) );
+ assertTrue( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) );
+ assertTrue( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://" ) ) );
// these are local
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://localhost" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) );
// not a proper url so returns false;
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) );
- assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) );
+ assertFalse( DefaultMirrorSelector.isExternalRepo( getRepo( "foo", "" ) ) );
}
public void testMirrorLookup()
{
- mirrorBuilder.addMirror( "a", "a", "http://a", null );
- mirrorBuilder.addMirror( "b", "b", "http://b", null );
+ Mirror mirrorA = newMirror( "a", "a", "http://a" );
+ Mirror mirrorB = newMirror( "b", "b", "http://b" );
- ArtifactRepository repo = null;
- repo = mirrorBuilder.getMirrorRepository( getRepo( "a", "http://a.a" ) );
- assertEquals( "http://a", repo.getUrl() );
+ List<Mirror> mirrors = Arrays.asList( mirrorA, mirrorB );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "b", "http://a.a" ) );
- assertEquals( "http://b", repo.getUrl() );
+ assertSame( mirrorA, mirrorSelector.getMirror( getRepo( "a", "http://a.a" ), mirrors ) );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "c", "http://c.c" ) );
- assertEquals( "http://c.c", repo.getUrl() );
+ assertSame( mirrorB, mirrorSelector.getMirror( getRepo( "b", "http://a.a" ), mirrors ) );
+ assertNull( mirrorSelector.getMirror( getRepo( "c", "http://c.c" ), mirrors ) );
}
public void testMirrorWildcardLookup()
{
- mirrorBuilder.addMirror( "a", "a", "http://a", null );
- mirrorBuilder.addMirror( "b", "b", "http://b", null );
- mirrorBuilder.addMirror( "c", "*", "http://wildcard", null );
-
- ArtifactRepository repo = null;
- repo = mirrorBuilder.getMirrorRepository( getRepo( "a", "http://a.a" ) );
- assertEquals( "http://a", repo.getUrl() );
+ Mirror mirrorA = newMirror( "a", "a", "http://a" );
+ Mirror mirrorB = newMirror( "b", "b", "http://b" );
+ Mirror mirrorC = newMirror( "c", "*", "http://wildcard" );
+
+ List<Mirror> mirrors = Arrays.asList( mirrorA, mirrorB, mirrorC );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "b", "http://a.a" ) );
- assertEquals( "http://b", repo.getUrl() );
+ assertSame( mirrorA, mirrorSelector.getMirror( getRepo( "a", "http://a.a" ), mirrors ) );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "c", "http://c.c" ) );
- assertEquals( "http://wildcard", repo.getUrl() );
+ assertSame( mirrorB, mirrorSelector.getMirror( getRepo( "b", "http://a.a" ), mirrors ) );
+ assertSame( mirrorC, mirrorSelector.getMirror( getRepo( "c", "http://c.c" ), mirrors ) );
}
public void testMirrorStopOnFirstMatch()
{
- //exact matches win first
- mirrorBuilder.addMirror( "a2", "a,b", "http://a2", null );
- mirrorBuilder.addMirror( "a", "a", "http://a", null );
- //make sure repeated entries are skipped
- mirrorBuilder.addMirror( "a", "a", "http://a3", null );
-
- mirrorBuilder.addMirror( "b", "b", "http://b", null );
- mirrorBuilder.addMirror( "c", "d,e", "http://de", null );
- mirrorBuilder.addMirror( "c", "*", "http://wildcard", null );
- mirrorBuilder.addMirror( "c", "e,f", "http://ef", null );
-
- ArtifactRepository repo = null;
- repo = mirrorBuilder.getMirrorRepository( getRepo( "a", "http://a.a" ) );
- assertEquals( "http://a", repo.getUrl() );
-
- repo = mirrorBuilder.getMirrorRepository( getRepo( "b", "http://a.a" ) );
- assertEquals( "http://b", repo.getUrl() );
-
- repo = mirrorBuilder.getMirrorRepository( getRepo( "c", "http://c.c" ) );
- assertEquals( "http://wildcard", repo.getUrl() );
+ // exact matches win first
+ Mirror mirrorA2 = newMirror( "a2", "a,b", "http://a2" );
+ Mirror mirrorA = newMirror( "a", "a", "http://a" );
+ // make sure repeated entries are skipped
+ Mirror mirrorA3 = newMirror( "a", "a", "http://a3" );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "d", "http://d" ) );
- assertEquals( "http://de", repo.getUrl() );
+ Mirror mirrorB = newMirror( "b", "b", "http://b" );
+ Mirror mirrorC = newMirror( "c", "d,e", "http://de" );
+ Mirror mirrorC2 = newMirror( "c", "*", "http://wildcard" );
+ Mirror mirrorC3 = newMirror( "c", "e,f", "http://ef" );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "e", "http://e" ) );
- assertEquals( "http://de", repo.getUrl() );
+ List<Mirror> mirrors = Arrays.asList( mirrorA2, mirrorA, mirrorA3, mirrorB, mirrorC, mirrorC2, mirrorC3 );
- repo = mirrorBuilder.getMirrorRepository( getRepo( "f", "http://f" ) );
- assertEquals( "http://wildcard", repo.getUrl() );
+ assertSame( mirrorA, mirrorSelector.getMirror( getRepo( "a", "http://a.a" ), mirrors ) );
- }
+ assertSame( mirrorB, mirrorSelector.getMirror( getRepo( "b", "http://a.a" ), mirrors ) );
+ assertSame( mirrorC2, mirrorSelector.getMirror( getRepo( "c", "http://c.c" ), mirrors ) );
- public void testPatterns()
- {
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*," ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), ",*," ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*," ) );
-
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a," ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), ",a," ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a," ) );
-
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a," ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), ",a" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), ",a," ) );
-
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a,b" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a,b" ) );
-
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "a,b" ) );
-
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,b" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,!b" ) );
+ assertSame( mirrorC, mirrorSelector.getMirror( getRepo( "d", "http://d" ), mirrors ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,!a" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "!a,*" ) );
+ assertSame( mirrorC, mirrorSelector.getMirror( getRepo( "e", "http://e" ), mirrors ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "*,!a" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "!a,*" ) );
-
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "!a,!c" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "d" ), "!a,!c*" ) );
+ assertSame( mirrorC2, mirrorSelector.getMirror( getRepo( "f", "http://f" ), mirrors ) );
}
- public void testPatternsWithExternal()
+ public void testPatterns()
{
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "*" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*," ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), ",*," ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*," ) );
+
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "a" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "a," ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), ",a," ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "a," ) );
+
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "b" ), "a" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "b" ), "a," ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "b" ), ",a" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "b" ), ",a," ) );
+
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "a,b" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "b" ), "a,b" ) );
+
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "c" ), "a,b" ) );
+
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*,b" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*,!b" ) );
+
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "*,!a" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "a" ), "!a,*" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "c" ), "*,!a" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "c" ), "!a,*" ) );
- assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) );
- assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "c" ), "!a,!c" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "d" ), "!a,!c*" ) );
}
- public void testMirrorProperUrlAndProtocolAndBasedir()
+ public void testPatternsWithExternal()
{
- mirrorBuilder.addMirror( "mirror-id", "central", "file:///tmp", null );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "*" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) );
- List<ArtifactRepository> repos = Arrays.asList( getRepo( "central", "http://repo1.maven.org" ) );
- repos = mirrorBuilder.getMirrors( repos );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) );
- ArtifactRepository repo = repos.get( 0 );
- assertEquals( "file:///tmp", repo.getUrl() );
- assertEquals( "file", repo.getProtocol() );
- assertEquals( File.separator + "tmp", repo.getBasedir() );
+ assertFalse( DefaultMirrorSelector.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) );
+ assertTrue( DefaultMirrorSelector.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) );
}
/**
@@ -232,4 +202,16 @@
{
return getRepo( id, "http://something" );
}
+
+ private Mirror newMirror( String id, String mirrorOf, String url )
+ {
+ Mirror mirror = new Mirror();
+
+ mirror.setId( id );
+ mirror.setMirrorOf( mirrorOf );
+ mirror.setUrl( url );
+
+ return mirror;
+ }
+
}