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:26:00 UTC
svn commit: r1126847 - in /maven/maven-3/branches/mirror-group-routing:
maven-auto-mirror-model/
maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/
maven-auto-mirror-model/src/test/java/org/apache/maven/repository/automirror/...
Author: jdcasey
Date: Tue May 24 03:25:59 2011
New Revision: 1126847
URL: http://svn.apache.org/viewvc?rev=1126847&view=rev
Log:
allow mirror-routes to be mirrorOf for multiple canonical repository URLs.
Modified:
maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/pom.xml
maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoute.java
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/repository/mirror/RoutingMirrorSelector.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/pom.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/pom.xml?rev=1126847&r1=1126846&r2=1126847&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/pom.xml (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/pom.xml Tue May 24 03:25:59 2011
@@ -26,5 +26,9 @@
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
</dependencies>
</project>
Modified: maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoute.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/MirrorRoute.java?rev=1126847&r1=1126846&r2=1126847&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoute.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-auto-mirror-model/src/main/java/org/apache/maven/repository/automirror/MirrorRoute.java Tue May 24 03:25:59 2011
@@ -19,47 +19,87 @@ package org.apache.maven.repository.auto
* under the License.
*/
+import static org.codehaus.plexus.util.StringUtils.join;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
public class MirrorRoute
implements Comparable<MirrorRoute>
{
private final String id;
- private final String mirrorUrl;
+ private final String myUrl;
private final int weight;
private final boolean enabled;
- private final String url;
+ private final Set<String> mirrorOfUrls;
+ // NOTE: ONLY used during deserialization!
MirrorRoute()
{
id = null;
- url = null;
- mirrorUrl = null;
+ mirrorOfUrls = Collections.emptySet();
+ myUrl = null;
weight = 0;
enabled = false;
}
- public MirrorRoute( final String id, final String url, final String mirrorUrl, final int weight,
- final boolean enabled )
+ public MirrorRoute( final String id, final String myUrl, final int weight,
+ final boolean enabled, final String... mirrorOfUrls )
{
+ if ( mirrorOfUrls.length < 1 )
+ {
+ throw new IllegalArgumentException( "Cannot construct a mirror route without at least one mirror-of URL." );
+ }
+
this.id = id;
- this.url = url;
- this.mirrorUrl = mirrorUrl;
+ this.mirrorOfUrls = toLowerCaseSet( Arrays.asList( mirrorOfUrls ) );
+ this.myUrl = myUrl;
this.weight = weight;
this.enabled = enabled;
}
+ public MirrorRoute( final String id, final String myUrl, final int weight,
+ final boolean enabled, final Collection<String> mirrorOfUrls )
+ {
+ if ( mirrorOfUrls.size() < 1 )
+ {
+ throw new IllegalArgumentException( "Cannot construct a mirror route without at least one mirror-of URL." );
+ }
+
+ this.id = id;
+ this.mirrorOfUrls = toLowerCaseSet( mirrorOfUrls );
+ this.myUrl = myUrl;
+ this.weight = weight;
+ this.enabled = enabled;
+ }
+
+ private Set<String> toLowerCaseSet( Collection<String> src )
+ {
+ Set<String> result = new HashSet<String>( src.size() );
+ for ( String srcItem : src )
+ {
+ result.add( srcItem.toLowerCase() );
+ }
+
+ return result;
+ }
+
public String getId()
{
return id;
}
- public String getMirrorUrl()
+ public String getRouteUrl()
{
- return mirrorUrl;
+ return myUrl;
}
public int getWeight()
@@ -80,7 +120,7 @@ public class MirrorRoute
@Override
public String toString()
{
- return "mirror [id: " + id + ", weight: " + weight + ", url: " + url + ", mirror-url: " + mirrorUrl
+ return "mirror [id: " + id + ", weight: " + weight + ", mirror-of urls: " + join( mirrorOfUrls.iterator(), ", " ) + ", mirror-url: " + myUrl
+ ", enabled: " + enabled + "]";
}
@@ -89,7 +129,7 @@ public class MirrorRoute
{
final int prime = 31;
int result = 1;
- result = prime * result + ( ( mirrorUrl == null ) ? 0 : mirrorUrl.hashCode() );
+ result = prime * result + ( ( myUrl == null ) ? 0 : myUrl.hashCode() );
return result;
}
@@ -109,23 +149,28 @@ public class MirrorRoute
return false;
}
final MirrorRoute other = (MirrorRoute) obj;
- if ( mirrorUrl == null )
+ if ( myUrl == null )
{
- if ( other.mirrorUrl != null )
+ if ( other.myUrl != null )
{
return false;
}
}
- else if ( !mirrorUrl.equals( other.mirrorUrl ) )
+ else if ( !myUrl.equals( other.myUrl ) )
{
return false;
}
return true;
}
- public String getUrl()
+ public Set<String> getMirrorOfUrls()
+ {
+ return mirrorOfUrls;
+ }
+
+ public boolean isMirrorOf( String canonicalUrl )
{
- return url;
+ return mirrorOfUrls.contains( canonicalUrl.toLowerCase() );
}
}
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -29,7 +29,9 @@ import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.Type;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
public class MirrorRouteSerializer
{
@@ -37,7 +39,7 @@ 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 )
+ public static void serializeLoose( final Set<MirrorRoute> mirrors, final Writer writer )
throws MirrorRouterModelException
{
try
@@ -50,7 +52,7 @@ public class MirrorRouteSerializer
}
}
- public static String serializeListToString( final List<MirrorRoute> mirrors )
+ public static String serializeLooseToString( final Set<MirrorRoute> mirrors )
throws MirrorRouterModelException
{
try
@@ -63,12 +65,12 @@ public class MirrorRouteSerializer
}
}
- public static List<MirrorRoute> deserializeList( final Reader reader )
+ public static Set<MirrorRoute> deserializeLoose( final Reader reader )
throws MirrorRouterModelException
{
try
{
- return getGson().fromJson( reader, RepositoryMirrorListCreator.getType() );
+ return getGson().fromJson( reader, RepositoryMirrorSetCreator.getType() );
}
catch ( final JsonParseException e )
{
@@ -76,12 +78,12 @@ public class MirrorRouteSerializer
}
}
- public static List<MirrorRoute> deserializeList( final String source )
+ public static Set<MirrorRoute> deserializeLoose( final String source )
throws MirrorRouterModelException
{
try
{
- return getGson().fromJson( source, RepositoryMirrorListCreator.getType() );
+ return getGson().fromJson( source, RepositoryMirrorSetCreator.getType() );
}
catch ( final JsonParseException e )
{
@@ -147,6 +149,7 @@ public class MirrorRouteSerializer
{
final GsonBuilder builder = new GsonBuilder();
builder.disableHtmlEscaping().disableInnerClassSerialization().setPrettyPrinting();
+ builder.registerTypeAdapter( RepositoryMirrorSetCreator.getType(), new RepositoryMirrorSetCreator() );
builder.registerTypeAdapter( RepositoryMirrorListCreator.getType(), new RepositoryMirrorListCreator() );
gson = builder.create();
@@ -173,4 +176,22 @@ public class MirrorRouteSerializer
}
+ public static final class RepositoryMirrorSetCreator
+ implements InstanceCreator<Set<MirrorRoute>>
+ {
+
+ public Set<MirrorRoute> createInstance( final Type type )
+ {
+ return new LinkedHashSet<MirrorRoute>();
+ }
+
+ public static Type getType()
+ {
+ return new TypeToken<Set<MirrorRoute>>()
+ {
+ }.getType();
+ }
+
+ }
+
}
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -41,7 +41,10 @@ public class MirrorRoutingTable
if ( !mirrors.contains( mirror ) )
{
mirrors.add( mirror );
- indexGrabBags.remove( mirror.getUrl() );
+ for ( String url : mirror.getMirrorOfUrls() )
+ {
+ indexGrabBags.remove( url );
+ }
}
return this;
@@ -93,9 +96,9 @@ public class MirrorRoutingTable
for ( int idx = 0; idx < mirrors.size(); idx++ )
{
final MirrorRoute mirror = mirrors.get( idx );
- if ( !mirror.isEnabled() )
+ if ( !mirror.isEnabled() || !mirror.isMirrorOf( canonicalUrl ) )
{
- // only select from enabled mirrors.
+ // only select from enabled mirrors that actually mirror the given canonical repository URL.
continue;
}
@@ -114,13 +117,13 @@ public class MirrorRoutingTable
}
}
- final int[] grabBag = new int[gb.size()];
- for ( int i = 0; i < grabBag.length; i++ )
+ indexGrabBag = new int[gb.size()];
+ for ( int i = 0; i < indexGrabBag.length; i++ )
{
- grabBag[i] = gb.get( i );
+ indexGrabBag[i] = gb.get( i );
}
- indexGrabBags.put( canonicalUrl, grabBag );
+ indexGrabBags.put( canonicalUrl, indexGrabBag );
}
}
@@ -207,7 +210,7 @@ public class MirrorRoutingTable
{
for ( final MirrorRoute mirror : mirrors )
{
- if ( mirror.isEnabled() && canonicalUrl.equals( mirror.getUrl() ) )
+ if ( mirror.isEnabled() && mirror.isMirrorOf( canonicalUrl ) )
{
return true;
}
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -31,8 +31,8 @@ public class RouterMirrorSerializerTest
throws Exception
{
final MirrorRoutingTable mirrorMap =
- new MirrorRoutingTable().addMirror( new MirrorRoute( "central", "http://repo1.maven.org/maven2",
- "http://localhost:8081/nexus", 99, true ) );
+ new MirrorRoutingTable().addMirror( new MirrorRoute( "central",
+ "http://localhost:8081/nexus", 99, true, "http://repo1.maven.org/maven2" ) );
final StringWriter sw = new StringWriter();
MirrorRouteSerializer.serialize( mirrorMap, sw );
@@ -44,8 +44,8 @@ public class RouterMirrorSerializerTest
throws Exception
{
final MirrorRoutingTable mirrorMap =
- new MirrorRoutingTable().addMirror( new MirrorRoute( "central", "http://repo1.maven.org/maven2",
- "http://localhost:8081/nexus", 99, true ) );
+ new MirrorRoutingTable().addMirror( new MirrorRoute( "central",
+ "http://localhost:8081/nexus", 99, true, "http://repo1.maven.org/maven2" ) );
System.out.println( MirrorRouteSerializer.serializeToString( mirrorMap ) );
}
@@ -54,8 +54,8 @@ public class RouterMirrorSerializerTest
throws Exception
{
final MirrorRoutingTable mirrorMap =
- new MirrorRoutingTable().addMirror( new MirrorRoute( "central", "http://repo1.maven.org/maven2",
- "http://localhost:8081/nexus", 99, true ) );
+ new MirrorRoutingTable().addMirror( new MirrorRoute( "central",
+ "http://localhost:8081/nexus", 99, true, "http://repo1.maven.org/maven2" ) );
final String ser = MirrorRouteSerializer.serializeToString( mirrorMap );
final MirrorRoutingTable result = MirrorRouteSerializer.deserialize( ser );
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -88,7 +88,7 @@ public class DefaultMirrorSelector
// FIXME!
mirror.setLayout( "default" );
mirror.setId( rMirror.getId() );
- mirror.setUrl( rMirror.getMirrorUrl() );
+ mirror.setUrl( rMirror.getRouteUrl() );
}
else
{
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -78,7 +78,7 @@ public class RoutingMirrorSelector
mirror.setRepositoryManager( false );
mirror.setId( route.getId() );
- mirror.setUrl( route.getMirrorUrl() );
+ mirror.setUrl( route.getRouteUrl() );
mirror.setContentType( repository.getContentType() );
mirror.setPolicy( true, repository.getPolicy( true ) );
mirror.setPolicy( false, repository.getPolicy( false ) );
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=1126847&r1=1126846&r2=1126847&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:59 2011
@@ -50,13 +50,11 @@ import org.apache.maven.lifecycle.intern
import org.apache.maven.model.building.ModelProcessor;
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.MirrorRouterLoader;
import org.apache.maven.settings.building.DefaultSettingsBuildingRequest;
import org.apache.maven.settings.building.SettingsBuilder;