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/07/19 04:40:32 UTC

svn commit: r1148128 - in /maven/maven-3/branches/mirror-group-routing: maven-embedder/src/main/java/org/apache/maven/cli/ maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/ maven-routem-impl/src/main/java/org/apache/...

Author: jdcasey
Date: Tue Jul 19 02:40:29 2011
New Revision: 1148128

URL: http://svn.apache.org/viewvc?rev=1148128&view=rev
Log:
cleaning out the router resolution logic to simplify it. Now, if you specify a source location, it will only load from that one location (only one source is allowed). If not, it will look to see whether you've specified an auto-detection strategy to use...if not, it'll default over to trying to resolve the artifact router from the canonical/default location, which should be hosted in the maven project infra. ...Still seem to be having some sort of race condition in the core ITs...need to keep working on that.

Modified:
    maven/maven-3/branches/mirror-group-routing/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/RoutingConnectorWrapper.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/ArtifactRouterConfiguration.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/FileRouterConfigBuilder.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/RouterSource.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultArtifactRouterReader.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultRouterLoader.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/ArtifactRouterSession.java
    maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/DefaultArtifactRouterSession.java

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=1148128&r1=1148127&r2=1148128&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 Jul 19 02:40:29 2011
@@ -36,11 +36,10 @@ import org.apache.commons.cli.Unrecogniz
 import org.apache.maven.BuildAbort;
 import org.apache.maven.InternalErrorException;
 import org.apache.maven.Maven;
-import org.apache.maven.artifact.router.ArtifactRouter;
 import org.apache.maven.artifact.router.ArtifactRouterException;
+import org.apache.maven.artifact.router.conf.ArtifactRouterConfiguration;
 import org.apache.maven.artifact.router.conf.ArtifactRouterOption;
 import org.apache.maven.artifact.router.conf.FileRouterConfigBuilder;
-import org.apache.maven.artifact.router.conf.ArtifactRouterConfiguration;
 import org.apache.maven.artifact.router.loader.ArtifactRouterLoader;
 import org.apache.maven.artifact.router.session.ArtifactRouterSession;
 import org.apache.maven.artifact.router.session.DefaultArtifactRouterSession;
@@ -939,7 +938,7 @@ public class MavenCli
         }
 
         ArtifactRouterConfiguration routerConfig =
-            new FileRouterConfigBuilder( DEFAULT_USER_EXT_CONF_DIR, dispatcher, logger ).build();
+            new FileRouterConfigBuilder( DEFAULT_USER_EXT_CONF_DIR, logger ).build();
         
         if ( commandLine.hasOption( CLIManager.ROUTER_OPTIONS ) )
         {

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/RoutingConnectorWrapper.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/RoutingConnectorWrapper.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/RoutingConnectorWrapper.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-aether-wagon-connector/src/main/java/org/apache/maven/router/repository/RoutingConnectorWrapper.java Tue Jul 19 02:40:29 2011
@@ -98,11 +98,6 @@ class RoutingConnectorWrapper
         this.router = router;
         
         this.session = session;
-        
-        if ( getOpenConnectors() == null )
-        {
-            setOpenConnectors( new HashMap<GroupRoute, RepositoryConnector>() );
-        }
     }
 
     public synchronized void get( Collection<? extends ArtifactDownload> artifactDownloads,
@@ -152,12 +147,12 @@ class RoutingConnectorWrapper
             RepositoryConnector connector = entry.getValue();
             Set<ArtifactDownload> artifacts = artifactDownloadsByGroup.get( route );
             Set<MetadataDownload> metadatas = metadataDownloadsByGroup.get( route );
-            
+
             if ( ( artifacts == null || artifacts.isEmpty() ) && ( metadatas == null || metadatas.isEmpty() ) )
             {
                 continue;
             }
-            
+
             connector.get( artifacts, metadatas );
         }
     }
@@ -305,9 +300,18 @@ class RoutingConnectorWrapper
     }
 
     @SuppressWarnings( "unchecked" )
-    private Map<GroupRoute, RepositoryConnector> getOpenConnectors()
+    private synchronized Map<GroupRoute, RepositoryConnector> getOpenConnectors()
     {
-        return (Map<GroupRoute, RepositoryConnector>) session.getData().get( OPEN_CONNECTORS_KEY );
+        Map<GroupRoute, RepositoryConnector> connectors =
+            (Map<GroupRoute, RepositoryConnector>) session.getData().get( OPEN_CONNECTORS_KEY );
+
+        if ( connectors == null )
+        {
+            connectors = new HashMap<GroupRoute, RepositoryConnector>();
+            session.getData().set( OPEN_CONNECTORS_KEY, connectors );
+        }
+
+        return connectors;
     }
     
     private void setOpenConnectors( Map<GroupRoute, RepositoryConnector> connectors  )

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/ArtifactRouterConfiguration.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/ArtifactRouterConfiguration.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/ArtifactRouterConfiguration.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/ArtifactRouterConfiguration.java Tue Jul 19 02:40:29 2011
@@ -19,30 +19,8 @@
 
 package org.apache.maven.artifact.router.conf;
 
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 public final class ArtifactRouterConfiguration
@@ -50,41 +28,32 @@ public final class ArtifactRouterConfigu
 
     private static final RouterSource CANONICAL_SOURCE = new RouterSource( "default", "http://repository.apache.org/router/routes.json" );
 
-    public static final String ALL_DISCOVERY_STRATEGIES = "all";
-
     public static final String NO_DISCOVERY_STRATEGIES = "none";
     
     private File routesFile;
 
     private boolean disabled = false;
 
-    private String[] discoveryStrategies = { ALL_DISCOVERY_STRATEGIES };
+    private String discoveryStrategy = NO_DISCOVERY_STRATEGIES;
 
     private final Set<ArtifactRouterOption> routerOptions = new HashSet<ArtifactRouterOption>();
     
-    private final List<RouterSource> routerSources = new ArrayList<RouterSource>();
+    private RouterSource routerSource;
     
     public ArtifactRouterConfiguration()
     {
         setUpdate( true );
     }
     
-    public ArtifactRouterConfiguration addSource( String id, String url, String username, String password )
+    public ArtifactRouterConfiguration setSource( String id, String url )
     {
-        routerSources.add( new RouterSource( id, url, username, password ) );
+        routerSource = new RouterSource( id, url );
         return this;
     }
     
-    public List<RouterSource> getSources()
+    public RouterSource getSource()
     {
-        if ( routerSources.isEmpty() )
-        {
-            return Collections.singletonList( CANONICAL_SOURCE );
-        }
-        else
-        {
-            return routerSources;
-        }
+        return routerSource;
     }
 
     public boolean isDisabled()
@@ -98,14 +67,14 @@ public final class ArtifactRouterConfigu
         return this;
     }
 
-    public String[] getDiscoveryStrategies()
+    public String getDiscoveryStrategy()
     {
-        return discoveryStrategies == null ? new String[0] : discoveryStrategies;
+        return discoveryStrategy;
     }
 
-    public ArtifactRouterConfiguration setDiscoveryStrategies( final String... strategies )
+    public ArtifactRouterConfiguration setDiscoveryStrategy( final String strategy )
     {
-        discoveryStrategies = strategies;
+        discoveryStrategy = strategy;
         return this;
     }
     
@@ -176,4 +145,9 @@ public final class ArtifactRouterConfigu
         return this;
     }
 
+    public RouterSource getDefaultSource()
+    {
+        return CANONICAL_SOURCE;
+    }
+
 }

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/FileRouterConfigBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/FileRouterConfigBuilder.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/FileRouterConfigBuilder.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/FileRouterConfigBuilder.java Tue Jul 19 02:40:29 2011
@@ -39,32 +39,23 @@ package org.apache.maven.artifact.router
  */
 
 import static org.codehaus.plexus.util.IOUtil.close;
-import static org.codehaus.plexus.util.StringUtils.isBlank;
-import static org.codehaus.plexus.util.StringUtils.isNotBlank;
-
-import org.codehaus.plexus.logging.Logger;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.Properties;
 
+import org.codehaus.plexus.logging.Logger;
+
 public class FileRouterConfigBuilder
     implements RouterConfigBuilder
 {
 
-    private static final String KEY_ID = "id";
-    
-    private static final String KEY_URL = "url";
-
     private static final String KEY_ROUTES_FILE = "routing-tables-file";
-
-    private static final String KEY_USER = "user";
-
-    private static final String KEY_PASSWORD = "password";
+    
+    private static final String KEY_ROUTER_SOURCE = "route-source";
 
     private static final String KEY_DISABLED = "disabled";
 
@@ -74,16 +65,15 @@ public class FileRouterConfigBuilder
 
     private static final String CONFIG_FILENAME = "router.properties";
 
+    public static final String DEFAULT_SOURCE_ID = "central.router";
+
     private Logger logger;
 
     private File confDir;
 
-    private final SecDispatcher secDispatcher;
-
-    public FileRouterConfigBuilder( File confDir, SecDispatcher secDispatcher, Logger logger )
+    public FileRouterConfigBuilder( File confDir, Logger logger )
     {
         this.confDir = confDir;
-        this.secDispatcher = secDispatcher;
         this.logger = logger;
     }
 
@@ -115,16 +105,45 @@ public class FileRouterConfigBuilder
 
                 config.setDisabled( Boolean.parseBoolean( p.getProperty( KEY_DISABLED, "false" ) ) );
 
-                final String[] strat =
-                    p.getProperty( KEY_DISCOVERY_STRATEGIES, ArtifactRouterConfiguration.ALL_DISCOVERY_STRATEGIES )
-                     .split( "\\s*,\\s*" );
+                final String strat = p.getProperty( KEY_DISCOVERY_STRATEGIES );
+                if ( strat != null )
+                {
+                    config.setDiscoveryStrategy( strat );
+                }
+
+                String sourceUrl = p.getProperty( KEY_ROUTER_SOURCE );
+                if ( sourceUrl != null )
+                {
+                    URL u = new URL( sourceUrl );
+                    String id = u.getUserInfo();
+
+                    if ( id == null )
+                    {
+                        id = DEFAULT_SOURCE_ID;
+                    }
+                    else
+                    {
+                        StringBuilder sb = new StringBuilder( u.getProtocol() ).append( ":://" ).append( u.getHost() );
+                        if ( u.getPort() > 0 )
+                        {
+                            sb.append( ":" ).append( u.getPort() );
+                        }
+
+                        if ( u.getFile() != null )
+                        {
+                            sb.append( u.getFile() );
+                        }
+
+                        sourceUrl = sb.toString();
+                    }
 
-                config.setDiscoveryStrategies( strat );
+                    config.setSource( id, sourceUrl );
+                }
             }
             catch ( final IOException e )
             {
                 throw new ArtifactRouterConfigurationException( "Failed to read router config properties from: '"
-                                + routerConfig + "'.", e );
+                    + routerConfig + "'.\nReason: " + e.getMessage(), e );
             }
             finally
             {
@@ -145,52 +164,6 @@ public class FileRouterConfigBuilder
             config.setRoutesFile( new File( confDir, ROUTES_FILE ) );
         }
         
-        File routesD = new File( confDir, "routes.d" );
-        if ( routesD.exists() && routesD.isDirectory() )
-        {
-            for ( File src : routesD.listFiles() )
-            {
-                InputStream stream = null;
-                try
-                {
-                    stream = new FileInputStream( src );
-                    final Properties p = new Properties();
-                    p.load( stream );
-                    
-                    String id = p.getProperty( KEY_ID );
-
-                    String url = p.getProperty( KEY_URL );
-                    if ( isBlank( url ) )
-                    {
-                        continue;
-                    }
-                    
-                    String user = p.getProperty( KEY_USER );
-                    String pass = p.getProperty( KEY_PASSWORD );
-                    
-                    if ( isNotBlank( user ) && isNotBlank( pass ) )
-                    {
-                        pass = secDispatcher.decrypt( pass );
-                        config.addSource( id, url, user, pass );
-                    }
-                }
-                catch ( final IOException e )
-                {
-                    throw new ArtifactRouterConfigurationException( "Failed to read router config properties from: '"
-                        + src + "'.", e );
-                }
-                catch ( SecDispatcherException e )
-                {
-                    throw new ArtifactRouterConfigurationException( "Failed to read router config properties from: '"
-                        + src + "'.", e );
-                }
-                finally
-                {
-                    close( stream );
-                }
-            }
-        }
-
         return config;
     }
 

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/RouterSource.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/RouterSource.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/RouterSource.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/conf/RouterSource.java Tue Jul 19 02:40:29 2011
@@ -19,31 +19,19 @@
 
 package org.apache.maven.artifact.router.conf;
 
-import java.net.PasswordAuthentication;
-
 public class RouterSource
 {
 
     private final String url;
 
-    private final PasswordAuthentication credentials;
-
     private final String id;
 
     public RouterSource( String id, String url )
     {
         this.id = id;
         this.url = url;
-        this.credentials = null;
     }
 
-    public RouterSource( String id, String url, String username, String password )
-    {
-        this.id = id;
-        this.url = url;
-        this.credentials = new PasswordAuthentication( username, password.toCharArray() );
-    }
-    
     public String getId()
     {
         return id;
@@ -54,15 +42,9 @@ public class RouterSource
         return url;
     }
 
-    public PasswordAuthentication getCredentials()
-    {
-        return credentials;
-    }
-
     public String toString()
     {
-        return "RouterSource[" + ( getCredentials() == null ? "" : getCredentials().getUserName() + "@" ) + getUrl()
-            + "]";
+        return "RouterSource[" + id + "@" + getUrl() + "]";
     }
 
 }

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultArtifactRouterReader.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultArtifactRouterReader.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultArtifactRouterReader.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultArtifactRouterReader.java Tue Jul 19 02:40:29 2011
@@ -28,6 +28,7 @@ import org.apache.maven.artifact.router.
 import org.apache.maven.artifact.router.io.ArtifactRouteSerializer;
 import org.apache.maven.artifact.router.session.ArtifactRouterSession;
 import org.apache.maven.settings.Proxy;
+import org.apache.maven.settings.Server;
 import org.codehaus.plexus.component.annotations.Component;
 
 import java.io.IOException;
@@ -187,7 +188,11 @@ public class DefaultArtifactRouterReader
             }
             else
             {
-                return source.getCredentials();
+                Server server = session.getServer( source.getId() );
+                if ( server != null )
+                {
+                    return new PasswordAuthentication( server.getUsername(), server.getPassword().toCharArray() );
+                }
             }
 
             return null;

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultRouterLoader.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultRouterLoader.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultRouterLoader.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/loader/DefaultRouterLoader.java Tue Jul 19 02:40:29 2011
@@ -40,6 +40,12 @@ package org.apache.maven.artifact.router
 
 import static org.codehaus.plexus.util.IOUtil.close;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Map;
+
 import org.apache.maven.artifact.router.ArtifactRouter;
 import org.apache.maven.artifact.router.ArtifactRouterException;
 import org.apache.maven.artifact.router.conf.ArtifactRouterConfiguration;
@@ -52,14 +58,6 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.Logger;
 
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
 @Component( role = ArtifactRouterLoader.class )
 public class DefaultRouterLoader
     implements ArtifactRouterLoader
@@ -171,7 +169,10 @@ public class DefaultRouterLoader
         {
             try
             {
-                for ( RouterSource src : session.getSources() )
+                final String discoveryStrategy = session.getDiscoveryStrategy();
+                RouterSource src = session.getSource();
+
+                if ( session.getSource() != null )
                 {
                     ArtifactRouter r = routerReader.loadRouter( src, session );
                     if ( r != null )
@@ -179,46 +180,20 @@ public class DefaultRouterLoader
                         routes.merge( r );
                     }
                 }
-                
-                final String[] discoStrategies = session.getDiscoveryStrategies();
-                if ( discoStrategies != null && discoStrategies.length > 0
-                    && !"none".equalsIgnoreCase( discoStrategies[0].toLowerCase() ) )
+                else if ( discoveryStrategy != null
+                    && !ArtifactRouterConfiguration.NO_DISCOVERY_STRATEGIES.equalsIgnoreCase( discoveryStrategy.toLowerCase() ) )
                 {
-                    final List<ArtifactRouterDiscoveryStrategy> strats = new ArrayList<ArtifactRouterDiscoveryStrategy>();
-                    if ( discoStrategies.length == 1 )
+                    final String key = discoveryStrategy;
+                    final ArtifactRouterDiscoveryStrategy strategy = getDiscoveryStrategy( key );
+                    if ( strategy == null )
                     {
-                        final String key = discoStrategies[0];
-                        if ( ArtifactRouterConfiguration.NO_DISCOVERY_STRATEGIES.equalsIgnoreCase( key ) )
-                        {
-                            // NOP
-                        }
-                        else if ( ArtifactRouterConfiguration.ALL_DISCOVERY_STRATEGIES.equalsIgnoreCase( key ) )
-                        {
-                            strats.addAll( strategies.values() );
-                        }
-                        else
+                        if ( logger.isDebugEnabled() )
                         {
-                            final ArtifactRouterDiscoveryStrategy strat = getDiscoveryStrategy( key );
-                            if ( strat != null )
-                            {
-                                strats.add( strat );
-                            }
+                            logger.error( "Router discovery strategy cannot be found: " + discoveryStrategy );
                         }
                     }
                     else
                     {
-                        for ( final String key : discoStrategies )
-                        {
-                            final ArtifactRouterDiscoveryStrategy strat = getDiscoveryStrategy( key );
-                            if ( strat != null )
-                            {
-                                strats.add( strat );
-                            }
-                        }
-                    }
-
-                    for ( final ArtifactRouterDiscoveryStrategy strategy : strats )
-                    {
                         ArtifactRouter result = strategy.findRouter( session );
                         if ( result != null )
                         {
@@ -226,6 +201,15 @@ public class DefaultRouterLoader
                         }
                     }
                 }
+                else
+                {
+                    src = session.getDefaultSource();
+                    ArtifactRouter r = routerReader.loadRouter( src, session );
+                    if ( r != null )
+                    {
+                        routes.merge( r );
+                    }
+                }
             }
             catch ( final ArtifactRouterException e )
             {

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/ArtifactRouterSession.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/ArtifactRouterSession.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/ArtifactRouterSession.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/ArtifactRouterSession.java Tue Jul 19 02:40:29 2011
@@ -19,23 +19,24 @@
 
 package org.apache.maven.artifact.router.session;
 
+import java.io.File;
+
 import org.apache.maven.artifact.router.conf.RouterSource;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
 
-import java.io.File;
-import java.util.List;
-
 public interface ArtifactRouterSession
 {
 
-    public String[] getDiscoveryStrategies();
+    public String getDiscoveryStrategy();
 
     Proxy getProxy( String protocol );
     
     Server getServer( String id );
 
-    List<RouterSource> getSources();
+    RouterSource getSource();
+
+    RouterSource getDefaultSource();
 
     File getRoutesFile();
 
@@ -46,7 +47,5 @@ public interface ArtifactRouterSession
     boolean isOffline();
 
     boolean isUpdate();
-    
-    
 
 }

Modified: maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/DefaultArtifactRouterSession.java
URL: http://svn.apache.org/viewvc/maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/DefaultArtifactRouterSession.java?rev=1148128&r1=1148127&r2=1148128&view=diff
==============================================================================
--- maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/DefaultArtifactRouterSession.java (original)
+++ maven/maven-3/branches/mirror-group-routing/maven-routem-impl/src/main/java/org/apache/maven/artifact/router/session/DefaultArtifactRouterSession.java Tue Jul 19 02:40:29 2011
@@ -19,15 +19,15 @@
 
 package org.apache.maven.artifact.router.session;
 
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.maven.artifact.router.conf.ArtifactRouterConfiguration;
 import org.apache.maven.artifact.router.conf.RouterSource;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
 
-import java.io.File;
-import java.util.Collections;
-import java.util.List;
-
 public class DefaultArtifactRouterSession
     implements ArtifactRouterSession
 {
@@ -57,9 +57,9 @@ public class DefaultArtifactRouterSessio
      * {@inheritDoc}
      * @see org.apache.maven.artifact.router.session.ArtifactRouterSession#getDiscoveryStrategies()
      */
-    public String[] getDiscoveryStrategies()
+    public String getDiscoveryStrategy()
     {
-        return config.getDiscoveryStrategies();
+        return config.getDiscoveryStrategy();
     }
 
     /**
@@ -106,9 +106,14 @@ public class DefaultArtifactRouterSessio
      * {@inheritDoc}
      * @see org.apache.maven.artifact.router.session.ArtifactRouterSession#getSources()
      */
-    public List<RouterSource> getSources()
+    public RouterSource getSource()
+    {
+        return config.getSource();
+    }
+
+    public RouterSource getDefaultSource()
     {
-        return config.getSources();
+        return config.getDefaultSource();
     }
 
     /**