You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/05/11 06:08:31 UTC

svn commit: r773456 [1/2] - in /maven/components/branches/MNG-2766: ./ maven-compat/src/main/java/org/apache/maven/artifact/ maven-compat/src/main/java/org/apache/maven/artifact/manager/ maven-compat/src/main/java/org/apache/maven/artifact/repository/ ...

Author: jvanzyl
Date: Mon May 11 04:08:29 2009
New Revision: 773456

URL: http://svn.apache.org/viewvc?rev=773456&view=rev
Log:
o delegating local repository implementation that chains the reactor and user local repository
o removal of more state from the WagonManager and pushing it into the request in an attempt to bridge the way for Mercury


Added:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java   (with props)
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java   (with props)
Removed:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/ActiveProjectArtifact.java
    maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/MavenRepositoryWrapper.java
Modified:
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/Artifact.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
    maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
    maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/ProjectSorter.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingException.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    maven/components/branches/MNG-2766/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
    maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
    maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
    maven/components/branches/MNG-2766/pom.xml

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/Artifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/Artifact.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/Artifact.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/Artifact.java Mon May 11 04:08:29 2009
@@ -32,12 +32,6 @@
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
 import org.apache.maven.artifact.versioning.VersionRange;
 
-/**
- * Description of an artifact.
- *
- * @todo do we really need an interface here?
- * @todo get rid of the multiple states we can have (project, parent, etc artifacts, file == null, snapshot, etc) - construct subclasses and use accordingly?
- */
 public interface Artifact
     extends Comparable
 {
@@ -73,20 +67,12 @@
 
     void setVersion( String version );
 
-    /**
-     * Get the artifactScope of the artifact. If the artifact is a standalone rather than a dependency, it's artifactScope will be
-     * <code>null</code>. The artifactScope may not be the same as it was declared on the original dependency, as this is the
-     * result of combining it with the main project artifactScope.
-     *
-     * @return the artifactScope
-     */
     String getScope();
 
     String getType();
 
     String getClassifier();
 
-    // only providing this since classifier is *very* optional...
     boolean hasClassifier();
 
     File getFile();
@@ -95,11 +81,8 @@
 
     String getBaseVersion();
 
-    /** @todo would like to get rid of this - or at least only have one. Base version should be immutable. */
     void setBaseVersion( String baseVersion );
 
-    // ----------------------------------------------------------------------
-
     String getId();
 
     String getDependencyConflictId();
@@ -112,8 +95,7 @@
 
     ArtifactRepository getRepository();
 
-    void updateVersion( String version,
-                        ArtifactRepository localRepository );
+    void updateVersion( String version, ArtifactRepository localRepository );
 
     String getDownloadUrl();
 
@@ -125,14 +107,8 @@
 
     ArtifactHandler getArtifactHandler();
 
-    /**
-     * @return {@link List} &lt; {@link String} > with artifact ids
-     */
     List<String> getDependencyTrail();
 
-    /**
-     * @param dependencyTrail {@link List} &lt; {@link String} > with artifact ids
-     */
     void setDependencyTrail( List<String> dependencyTrail );
 
     void setScope( String scope );
@@ -155,7 +131,6 @@
 
     void setResolvedVersion( String version );
 
-    /** @todo remove, a quick hack for the lifecycle executor */
     void setArtifactHandler( ArtifactHandler handler );
 
     boolean isRelease();
@@ -175,4 +150,8 @@
 
     boolean isSelectedVersionKnown()
         throws OverConstrainedVersionException;
+    
+    void setFromAuthoritativeRepository( boolean fromAuthoritativeRepository );
+    
+    boolean isFromAuthoritativeRepository();
 }
\ No newline at end of file

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactUtils.java Mon May 11 04:08:29 2009
@@ -30,17 +30,6 @@
 
 public final class ArtifactUtils
 {
-    private ArtifactUtils()
-    {
-    }
-
-    public static boolean isSnapshot( String version )
-    {
-        return ( version != null ) &&
-            ( version.toUpperCase().endsWith( Artifact.SNAPSHOT_VERSION ) || Artifact.VERSION_FILE_PATTERN.matcher( version )
-                .matches() );
-    }
-
     public static String toSnapshotVersion( String version )
     {
     	if(version == null)
@@ -58,65 +47,57 @@
             return version;
         }
     }
-
+        
     public static String versionlessKey( Artifact artifact )
     {
         return versionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
     }
 
-    public static String versionlessKey( String groupId,
-                                         String artifactId )
+    public static String versionlessKey( String groupId, String artifactId )
     {
         if ( groupId == null )
         {
-            throw new NullPointerException( "groupId was null" );
+            throw new NullPointerException( "groupId is null" );
         }
         if ( artifactId == null )
         {
-            throw new NullPointerException( "artifactId was null" );
+            throw new NullPointerException( "artifactId is null" );
         }
         return groupId + ":" + artifactId;
     }
 
-    public static String artifactId( String groupId,
-                                     String artifactId,
-                                     String type,
-                                     String version )
+    public static String key( Artifact artifact )
     {
-        return artifactId( groupId, artifactId, type, null, version );
-    }
+        return key( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
+    }    
 
-    public static String artifactId( String groupId,
-                                     String artifactId,
-                                     String type,
-                                     String classifier,
-                                     String baseVersion )
+    public static String key( String groupId, String artifactId, String version )
     {
-        return groupId + ":" + artifactId + ":" + type + ( classifier != null ? ":" + classifier : "" ) + ":" + baseVersion;
-    }
-
-    public static Map<String,Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
-    {
-        Map<String,Artifact> artifactMap = new LinkedHashMap<String,Artifact>();
-
-        if ( artifacts != null )
+        if ( groupId == null )
         {
-            for (Artifact artifact : artifacts) {
-                artifactMap.put(versionlessKey(artifact), artifact);
-            }
+            throw new NullPointerException( "groupId is null" );
         }
-
-        return artifactMap;
-    }
-
-    public static Map<String,Artifact> artifactMapByArtifactId( Collection<Artifact> artifacts )
+        if ( artifactId == null )
+        {
+            throw new NullPointerException( "artifactId is null" );
+        }
+        if ( version == null )
+        {
+            throw new NullPointerException( "version is null" );
+        }
+        
+        return groupId + ":" + artifactId + ":" + version;
+    }    
+    
+    public static Map<String,Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
     {
         Map<String,Artifact> artifactMap = new LinkedHashMap<String,Artifact>();
 
         if ( artifacts != null )
         {
-            for (Artifact artifact : artifacts) {
-                artifactMap.put(artifact.getId(), artifact);
+            for (Artifact artifact : artifacts) 
+            {
+                artifactMap.put(versionlessKey(artifact), artifact);
             }
         }
 

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Mon May 11 04:08:29 2009
@@ -47,11 +47,6 @@
 
     private String artifactId;
 
-    /**
-     * The resolved version for the artifact after conflict resolution, that has not been transformed.
-     *
-     * @todo should be final
-     */
     private String baseVersion;
 
     private final String type;
@@ -86,25 +81,12 @@
 
     private boolean optional;
 
-    public DefaultArtifact( String groupId,
-                            String artifactId,
-                            VersionRange versionRange,
-                            String scope,
-                            String type,
-                            String classifier,
-                            ArtifactHandler artifactHandler )
+    public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler )
     {
         this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false );
     }
 
-    public DefaultArtifact( String groupId,
-                            String artifactId,
-                            VersionRange versionRange,
-                            String scope,
-                            String type,
-                            String classifier,
-                            ArtifactHandler artifactHandler,
-                            boolean optional )
+    public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler, boolean optional )
     {
         this.groupId = groupId;
 
@@ -398,6 +380,7 @@
     protected void setBaseVersionInternal( String baseVersion )
     {
         Matcher m = VERSION_FILE_PATTERN.matcher( baseVersion );
+        
         if ( m.matches() )
         {
             this.baseVersion = m.group( 1 ) + "-" + SNAPSHOT_VERSION;
@@ -451,8 +434,7 @@
         return result;
     }
 
-    public void updateVersion( String version,
-                               ArtifactRepository localRepository )
+    public void updateVersion( String version, ArtifactRepository localRepository )
     {
         setResolvedVersion( version );
         setFile( new File( localRepository.getBasedir(), localRepository.pathOf( this ) ) );
@@ -606,4 +588,18 @@
     {
         this.optional = optional;
     }
+    
+    //
+    
+    private boolean fromAuthoritativeRepository;
+    
+    public void setFromAuthoritativeRepository( boolean fromAuthoritativeRepository )
+    {
+        this.fromAuthoritativeRepository = fromAuthoritativeRepository;
+    }
+    
+    public boolean isFromAuthoritativeRepository()
+    {
+        return fromAuthoritativeRepository;
+    }
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Mon May 11 04:08:29 2009
@@ -21,14 +21,12 @@
 import java.net.URL;
 import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.wagon.ConnectionException;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
@@ -36,14 +34,10 @@
 import org.apache.maven.wagon.UnsupportedProtocolException;
 import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.authentication.AuthenticationException;
-import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.authorization.AuthorizationException;
 import org.apache.maven.wagon.events.TransferListener;
 import org.apache.maven.wagon.observers.ChecksumObserver;
-import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.apache.maven.wagon.proxy.ProxyInfoProvider;
 import org.apache.maven.wagon.repository.Repository;
-import org.apache.maven.wagon.repository.RepositoryPermissions;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -71,33 +65,12 @@
     @Requirement
     private PlexusContainer container;
 
-    // TODO: proxies, authentication and mirrors are via settings, and should come in via an alternate method - perhaps
-    // attached to ArtifactRepository before the method is called (so AR would be composed of WR, not inherit it)
-    private Map<String, ProxyInfo> proxies = new HashMap<String, ProxyInfo>();
-
-    private static Map<String, AuthenticationInfo> authenticationInfoMap = new HashMap<String, AuthenticationInfo>();
-
-    private Map<String, RepositoryPermissions> serverPermissionsMap = new HashMap<String, RepositoryPermissions>();
-
-    //used LinkedMap to preserve the order.
-    private Map<String, ArtifactRepository> mirrors = new LinkedHashMap<String, ArtifactRepository>();
-
     /** Map( String, XmlPlexusConfiguration ) with the repository id and the wagon configuration */
     private Map<String, XmlPlexusConfiguration> serverConfigurationMap = new HashMap<String, XmlPlexusConfiguration>();
 
-    private RepositoryPermissions defaultRepositoryPermissions;
-
-    // Components
-
-    @Requirement
-    private ArtifactRepositoryFactory repositoryFactory;
-
     @Requirement(role = Wagon.class)
     private Map<String,Wagon> wagons;
 
-    //@Requirement
-    private CredentialsDataSource credentialsDataSource;
-
     @Requirement
     private UpdateCheckManager updateCheckManager;
 
@@ -110,13 +83,10 @@
         this.downloadMonitor = downloadMonitor;
     }
 
-    // TODO: this leaks the component in the public api - it is never released back to the container
     public Wagon getWagon( Repository repository )
         throws UnsupportedProtocolException, WagonConfigurationException
     {
         String protocol = repository.getProtocol();
-
-        System.out.println( "PROTOCOL: " + protocol );
         
         if ( protocol == null )
         {
@@ -203,27 +173,11 @@
         try
         {
             try
-            {
-                Repository artifactRepository = new Repository( repository.getId(), repository.getUrl() );
-
-                AuthenticationInfo authenticationInfo = getAuthenticationInfo( repository.getId() );
-
-                wagon.connect( artifactRepository, authenticationInfo, new ProxyInfoProvider()
-                {
-                    public ProxyInfo getProxyInfo( String protocol )
-                    {
-                        return getProxy( protocol );
-                    }
-                } );
+            {                
+                wagon.connect( new Repository( repository.getId(), repository.getUrl() ) );
 
                 wagon.put( source, remotePath );
             }
-            catch ( CredentialsDataSourceException e )
-            {
-                String err = "Problem with server credentials: " + e.getMessage();
-                logger.error( err );
-                throw new TransferFailedException( err );
-            }
             finally
             {
                 if ( downloadMonitor != null )
@@ -363,6 +317,8 @@
         getArtifact( artifact, repository, downloadMonitor, true );
     }
 
+    //TODO: all of this needs to move into the repository system
+    
     public void getArtifact( Artifact artifact, ArtifactRepository repository, TransferListener downloadMonitor, boolean force )
         throws TransferFailedException, ResourceDoesNotExistException
     {
@@ -500,14 +456,8 @@
         boolean downloaded = false;
 
         try
-        {
-            wagon.connect( new Repository( repository.getId(), repository.getUrl() ), getAuthenticationInfo( repository.getId() ), new ProxyInfoProvider()
-            {
-                public ProxyInfo getProxyInfo( String protocol )
-                {
-                    return getProxy( protocol );
-                }
-            } );
+        {            
+            wagon.connect( new Repository( repository.getId(), repository.getUrl() ) );
 
             boolean firstRun = true;
             boolean retry = true;
@@ -645,10 +595,6 @@
         {
             throw new TransferFailedException( "Authorization failed: " + e.getMessage(), e );
         }
-        catch ( CredentialsDataSourceException e )
-        {
-            throw new TransferFailedException( "Retrieving credentials failed: " + e.getMessage(), e );
-        }
         finally
         {
             // Remove remaining TransferListener instances (checksum handlers removed in above finally clause)
@@ -785,17 +731,6 @@
         }
     }
 
-    public ProxyInfo getProxy( String protocol )
-    {
-        return proxies.get( protocol );
-    }
-
-    public AuthenticationInfo getAuthenticationInfo( String id )
-        throws CredentialsDataSourceException
-    {
-        return authenticationInfoMap.get( id );
-    }
-
     /**
      * Checks the URL to see if this repository refers to an external repository
      * 
@@ -815,70 +750,7 @@
             return false;
         }
     }
-
-    /**
-     * Set the proxy used for a particular protocol.
-     * 
-     * @param protocol the protocol (required)
-     * @param host the proxy host name (required)
-     * @param port the proxy port (required)
-     * @param username the username for the proxy, or null if there is none
-     * @param password the password for the proxy, or null if there is none
-     * @param nonProxyHosts the set of hosts not to use the proxy for. Follows Java system property
-     *            format: <code>*.foo.com|localhost</code>.
-     * @todo [BP] would be nice to configure this via plexus in some way
-     */
-    public void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts )
-    {
-        ProxyInfo proxyInfo = new ProxyInfo();
-        proxyInfo.setHost( host );
-        proxyInfo.setType( protocol );
-        proxyInfo.setPort( port );
-        proxyInfo.setNonProxyHosts( nonProxyHosts );
-        proxyInfo.setUserName( username );
-        proxyInfo.setPassword( password );
-
-        proxies.put( protocol, proxyInfo );
-    }
-
-    // We are leaving this method here so that we can attempt to use the new maven-artifact
-    // library from the 2.0.x code so that we aren't maintaining two lines of code
-    // for the artifact management.
-    public void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase )
-    {
-        AuthenticationInfo authInfo = new AuthenticationInfo();
-        authInfo.setUserName( username );
-        authInfo.setPassword( password );
-        authInfo.setPrivateKey( privateKey );
-        authInfo.setPassphrase( passphrase );
-
-        authenticationInfoMap.put( repositoryId, authInfo );
-    }
-
-    public void addPermissionInfo( String repositoryId, String filePermissions, String directoryPermissions )
-    {
-        RepositoryPermissions permissions = new RepositoryPermissions();
-
-        boolean addPermissions = false;
-
-        if ( filePermissions != null )
-        {
-            permissions.setFileMode( filePermissions );
-            addPermissions = true;
-        }
-
-        if ( directoryPermissions != null )
-        {
-            permissions.setDirectoryMode( directoryPermissions );
-            addPermissions = true;
-        }
-
-        if ( addPermissions )
-        {
-            serverPermissionsMap.put( repositoryId, permissions );
-        }
-    }
-
+    
     /**
      * Applies the server configuration to the wagon
      * 

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java Mon May 11 04:08:29 2009
@@ -84,10 +84,5 @@
         throws TransferFailedException, ResourceDoesNotExistException;
 
     void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File file, String checksumPolicyWarn )
-        throws TransferFailedException, ResourceDoesNotExistException;
-
-    void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase );
-
-    void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts );
-
+        throws TransferFailedException, ResourceDoesNotExistException;    
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepository.java Mon May 11 04:08:29 2009
@@ -44,6 +44,10 @@
 
     private boolean blacklisted;
 
+    public DefaultArtifactRepository()
+    {
+    }
+    
     /**
      * Create a local repository or a test repository.
      *
@@ -170,10 +174,18 @@
         sb.append( "       id: " ).append( getId() ).append( "\n" );
         sb.append( "      url: " ).append( getUrl() ).append( "\n" );
         sb.append( "   layout: " ).append( layout != null ? layout.getId() : "none" ).append( "\n" );
-        sb.append( "snapshots: [enabled => " ).append( snapshots.isEnabled() );
-        sb.append( ", update => " ).append( snapshots.getUpdatePolicy() ).append( "]\n" );
-        sb.append( " releases: [enabled => " ).append( releases.isEnabled() );
-        sb.append( ", update => " ).append( releases.getUpdatePolicy() ).append( "]\n" );
+        
+        if ( snapshots != null )
+        {
+            sb.append( "snapshots: [enabled => " ).append( snapshots.isEnabled() );
+            sb.append( ", update => " ).append( snapshots.getUpdatePolicy() ).append( "]\n" );
+        }
+        
+        if ( releases != null )
+        {
+            sb.append( " releases: [enabled => " ).append( releases.isEnabled() );
+            sb.append( ", update => " ).append( releases.getUpdatePolicy() ).append( "]\n" );
+        }
 
         return sb.toString();
     }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/layout/DefaultRepositoryLayout.java Mon May 11 04:08:29 2009
@@ -67,8 +67,7 @@
         return path.toString();
     }
 
-    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata,
-                                                 ArtifactRepository repository )
+    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
     {
         return pathOfRepositoryMetadata( metadata, metadata.getLocalFilename( repository ) );
     }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadata.java Mon May 11 04:08:29 2009
@@ -56,7 +56,7 @@
     }
 
     public String getLocalFilename( ArtifactRepository repository )
-    {
+    {        
         return "maven-metadata-" + repository.getKey() + ".xml";
     }
 

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Mon May 11 04:08:29 2009
@@ -53,17 +53,6 @@
     @Requirement
     private UpdateCheckManager updateCheckManager;
 
-    protected DefaultRepositoryMetadataManager( WagonManager wagonManager, UpdateCheckManager updateCheckManager, Logger logger )
-    {
-        this.wagonManager = wagonManager;
-        this.updateCheckManager = updateCheckManager;
-        enableLogging( logger );
-    }
-
-    public DefaultRepositoryMetadataManager()
-    {
-    }
-
     public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws RepositoryMetadataResolutionException
     {

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/RepositoryMetadataManager.java Mon May 11 04:08:29 2009
@@ -26,14 +26,10 @@
 
 public interface RepositoryMetadataManager
 {
-    void resolve( RepositoryMetadata repositoryMetadata,
-                  List<ArtifactRepository> repositories,
-                  ArtifactRepository localRepository )
+    void resolve( RepositoryMetadata repositoryMetadata, List<ArtifactRepository> repositories, ArtifactRepository localRepository )
         throws RepositoryMetadataResolutionException;
 
-    void resolveAlways( RepositoryMetadata metadata,
-                        ArtifactRepository localRepository,
-                        ArtifactRepository remoteRepository )
+    void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository )
         throws RepositoryMetadataResolutionException;
 
     /**
@@ -43,9 +39,7 @@
      * @param localRepository      the local repository to install to first
      * @param deploymentRepository the remote repository to deploy to
      */
-    void deploy( ArtifactMetadata metadata,
-                 ArtifactRepository localRepository,
-                 ArtifactRepository deploymentRepository )
+    void deploy( ArtifactMetadata metadata, ArtifactRepository localRepository, ArtifactRepository deploymentRepository )
         throws RepositoryMetadataDeploymentException;
 
     /**
@@ -54,7 +48,6 @@
      * @param metadata        the metadata
      * @param localRepository the local repository
      */
-    void install( ArtifactMetadata metadata,
-                  ArtifactRepository localRepository )
+    void install( ArtifactMetadata metadata, ArtifactRepository localRepository )
         throws RepositoryMetadataInstallationException;
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactCollector.java Mon May 11 04:08:29 2009
@@ -38,33 +38,6 @@
  */
 public interface ArtifactCollector
 {
-    /**
-     * The plexus role for this component.
-     *
-     * @since 3.0
-     */
-    String ROLE = ArtifactCollector.class.getName();
-
-    // TODO: deprecate since conflict resolvers should always be specified
-    ArtifactResolutionResult collect( Set<Artifact> artifacts,
-                                      Artifact originatingArtifact,
-                                      ArtifactRepository localRepository,
-                                      List<ArtifactRepository> remoteRepositories,
-                                      ArtifactMetadataSource source,
-                                      ArtifactFilter filter,
-                                      List<ResolutionListener> listeners );
-
-    // TODO: deprecate since conflict resolvers should always be specified
-    ArtifactResolutionResult collect( Set<Artifact> artifacts,
-                                      Artifact originatingArtifact,
-                                      Map managedVersions,
-                                      ArtifactRepository localRepository,
-                                      List<ArtifactRepository> remoteRepositories,
-                                      ArtifactMetadataSource source,
-                                      ArtifactFilter filter,
-                                      List<ResolutionListener> listeners );
-
-    /** @since 3.0 */
     ArtifactResolutionResult collect( Set<Artifact> artifacts,
                                       Artifact originatingArtifact,
                                       Map managedVersions,
@@ -73,6 +46,5 @@
                                       ArtifactMetadataSource source,
                                       ArtifactFilter filter,
                                       List<ResolutionListener> listeners,
-                                      List<ConflictResolver> conflictResolvers )
-        throws ArtifactResolutionException;
+                                      List<ConflictResolver> conflictResolvers );
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java Mon May 11 04:08:29 2009
@@ -34,17 +34,14 @@
  */
 public interface ArtifactResolver
 {
+    ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
 
+    // The rest is deprecated
+    
     // USED BY MAVEN ASSEMBLY PLUGIN 2.2-beta-2 
     @Deprecated
     String ROLE = ArtifactResolver.class.getName();
 
-    void setOnline( boolean online );
-
-    boolean isOnline();
-
-    ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
-
     // USED BY SUREFIRE
     @Deprecated
     ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactCollector.java Mon May 11 04:08:29 2009
@@ -42,55 +42,29 @@
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.logging.Logger;
 
 /**
- * Default implementation of the artifact collector.
- *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author Jason van Zyl
- * @version $Id$
- * @todo This needs to collect all errors and not die on the first error. If there are problems retrieving the metadata
- *       then we need all the information so that we can tell users about what we attempted to do.
- * @todo there 8 places where we can can range exceptions which is bad, again the result of not using a graph.
  */
 @Component(role=ArtifactCollector.class)
 public class DefaultArtifactCollector
-    implements ArtifactCollector, LogEnabled
+    implements ArtifactCollector
 {
-    /**
-     * The conflict resolver to use when none is specified.
-     */
 	@Requirement(hint="nearest")
     private ConflictResolver defaultConflictResolver;
 
+	@Requirement
     private Logger logger;
 
-    public ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact,
+    public ArtifactResolutionResult collect( Set<Artifact> artifacts, 
+                                             Artifact originatingArtifact,
+                                             Map managedVersions, 
                                              ArtifactRepository localRepository,
                                              List<ArtifactRepository> remoteRepositories,
-                                             ArtifactMetadataSource source, ArtifactFilter filter,
-                                             List<ResolutionListener> listeners )
-    {
-        return collect( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository, remoteRepositories,
-                        source, filter, listeners );
-    }
-
-    public ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                             Map managedVersions, ArtifactRepository localRepository,
-                                             List<ArtifactRepository> remoteRepositories,
-                                             ArtifactMetadataSource source, ArtifactFilter filter,
-                                             List<ResolutionListener> listeners )
-    {
-        return collect( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source,
-                        filter, listeners, null );
-    }
-
-    public ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                             Map managedVersions, ArtifactRepository localRepository,
-                                             List<ArtifactRepository> remoteRepositories,
-                                             ArtifactMetadataSource source, ArtifactFilter filter,
+                                             ArtifactMetadataSource source, 
+                                             ArtifactFilter filter,
                                              List<ResolutionListener> listeners,
                                              List<ConflictResolver> conflictResolvers )
     {
@@ -100,8 +74,6 @@
 
         if ( conflictResolvers == null )
         {
-            // TODO: warn that we're using the default conflict resolver
-
             conflictResolvers = Collections.singletonList( defaultConflictResolver );
         }
 
@@ -130,8 +102,7 @@
 
         try
         {
-            recurse( result, root, resolvedArtifacts, versionMap, localRepository, remoteRepositories, source, filter,
-                     listeners, conflictResolvers );
+            recurse( result, root, resolvedArtifacts, versionMap, localRepository, remoteRepositories, source, filter, listeners, conflictResolvers );
         }
         catch ( CyclicDependencyException e )
         {
@@ -224,10 +195,15 @@
         return versionMap;
     }
 
-    private void recurse( ArtifactResolutionResult result, ResolutionNode node,
-                          Map<Object, List<ResolutionNode>> resolvedArtifacts, ManagedVersionMap managedVersions,
-                          ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
-                          ArtifactMetadataSource source, ArtifactFilter filter, List<ResolutionListener> listeners,
+    private void recurse( ArtifactResolutionResult result, 
+                          ResolutionNode node,
+                          Map<Object, List<ResolutionNode>> resolvedArtifacts, 
+                          ManagedVersionMap managedVersions,
+                          ArtifactRepository localRepository, 
+                          List<ArtifactRepository> remoteRepositories,
+                          ArtifactMetadataSource source, 
+                          ArtifactFilter filter, 
+                          List<ResolutionListener> listeners,
                           List<ConflictResolver> conflictResolvers )
         throws ArtifactResolutionException
     {
@@ -293,26 +269,19 @@
                                     {
                                         try
                                         {
-                                            versions =
-                                                source.retrieveAvailableVersions( resetArtifact, localRepository,
-                                                                                  remoteRepositories );
+                                            versions = source.retrieveAvailableVersions( resetArtifact, localRepository, remoteRepositories );
                                             resetArtifact.setAvailableVersions( versions );
                                         }
                                         catch ( ArtifactMetadataRetrievalException e )
                                         {
                                             resetArtifact.setDependencyTrail( node.getDependencyTrail() );
-                                            throw new ArtifactResolutionException(
-                                                                                   "Unable to get dependency information: "
-                                                                                       + e.getMessage(), resetArtifact,
-                                                                                   remoteRepositories, e );
+                                            throw new ArtifactResolutionException( "Unable to get dependency information: " + e.getMessage(), resetArtifact, remoteRepositories, e );
                                         }
                                     }
                                     // end hack
 
                                     // MNG-2861: match version can return null
-                                    ArtifactVersion selectedVersion =
-                                        resetArtifact.getVersionRange().matchVersion(
-                                                                                      resetArtifact.getAvailableVersions() );
+                                    ArtifactVersion selectedVersion = resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() );
                                     if ( selectedVersion != null )
                                     {
                                         resetArtifact.selectVersion( selectedVersion.toString() );
@@ -341,20 +310,15 @@
                         if ( resolved == null )
                         {
                             // TODO: add better exception that can detail the two conflicting artifacts
-                            result.addVersionRangeViolation( new ArtifactResolutionException(
-                                                                                              "Cannot resolve artifact version conflict between "
-                                                                                                  + previous.getArtifact().getVersion()
-                                                                                                  + " and "
-                                                                                                  + node.getArtifact().getVersion(),
-                                                                                              previous.getArtifact() ) );
+                            ArtifactResolutionException are = new ArtifactResolutionException( "Cannot resolve artifact version conflict between " + previous.getArtifact().getVersion()
+                                                                                              + " and " + node.getArtifact().getVersion(), previous.getArtifact() ); 
+                            result.addVersionRangeViolation( are );
                         }
 
                         if ( ( resolved != previous ) && ( resolved != node ) )
                         {
                             // TODO: add better exception
-                            result.addVersionRangeViolation( new ArtifactResolutionException(
-                                                                                              "Conflict resolver returned unknown resolution node: ",
-                                                                                              resolved.getArtifact() ) );
+                            result.addVersionRangeViolation( new ArtifactResolutionException( "Conflict resolver returned unknown resolution node: ", resolved.getArtifact() ) );
                         }
 
                         // TODO: should this be part of mediation?
@@ -565,8 +529,7 @@
         }
     }
 
-    private void manageArtifact( ResolutionNode node, ManagedVersionMap managedVersions,
-                                 List<ResolutionListener> listeners )
+    private void manageArtifact( ResolutionNode node, ManagedVersionMap managedVersions, List<ResolutionListener> listeners )
     {
         Artifact artifact = (Artifact) managedVersions.get( node.getKey() );
 
@@ -737,9 +700,4 @@
             }
         }
     }
-
-    public void enableLogging( Logger logger )
-    {
-        this.logger = logger;
-    }
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Mon May 11 04:08:29 2009
@@ -56,13 +56,6 @@
 public class DefaultArtifactResolver
     implements ArtifactResolver
 {
-
-    private boolean online = true;
-
-    // ----------------------------------------------------------------------
-    // Components
-    // ----------------------------------------------------------------------
-
     @Requirement 
     private Logger logger;
     
@@ -84,23 +77,6 @@
     @Requirement
     private PlexusContainer container;
     
-    //@Requirement 
-    private ArtifactMetadataSource metadataSource;
-    
-    // ----------------------------------------------------------------------
-    // Implementation
-    // ----------------------------------------------------------------------
-
-    public void setOnline( boolean online )
-    {
-        this.online = online;
-    }
-
-    public boolean isOnline()
-    {
-        return online;
-    }
-
     public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, TransferListener resolutionListener )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
@@ -122,6 +98,7 @@
         }
 
         File destination;
+        
         if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
         {
             File systemFile = artifact.getFile();
@@ -142,8 +119,11 @@
             }
 
             artifact.setResolved( true );
+            
+            return;
         }
-        else if ( !artifact.isResolved() )
+        
+        if ( !artifact.isResolved() )
         {
             // ----------------------------------------------------------------------
             // Check for the existence of the artifact in the specified local
@@ -151,9 +131,21 @@
             // request for resolution has been satisfied.
             // ----------------------------------------------------------------------
 
-            String localPath = localRepository.pathOf( artifact );
+            artifact = localRepository.find( artifact );
+            
+            if ( artifact.isFromAuthoritativeRepository() )
+            {
+                return;
+            }
+            
+            if ( artifact.isSnapshot() && artifact.isResolved() )
+            {
+                return;
+            }
+            
+            //String localPath = localRepository.pathOf( artifact );
 
-            artifact.setFile( new File( localRepository.getBasedir(), localPath ) );
+            //artifact.setFile( new File( localRepository.getBasedir(), localPath ) );
 
             transformationManager.transformForResolve( artifact, remoteRepositories, localRepository );
 
@@ -168,15 +160,8 @@
             // 2. the artifact's file doesn't exist (this would be true for release or snapshot artifacts)
             // 3. the artifact is a snapshot and is not a locally installed snapshot
 
-            // TODO: Should it matter whether it's a locally installed snapshot??
-            if ( force || !destination.exists() || ( artifact.isSnapshot() && !localCopy && isOnline() ) )
+            if ( force || !destination.exists() || ( artifact.isSnapshot() && !localCopy ) )
             {
-                if ( !isOnline() )
-                {
-                    throw new ArtifactResolutionException( "The repository system is offline and the artifact "
-                        + artifact + " is not available in the local repository.", artifact );
-                }
-
                 try
                 {
                     if ( artifact.getRepository() != null )
@@ -209,18 +194,27 @@
 
             if ( destination.exists() )
             {
-                // locally resolved...no need to hit the remote repo.
                 artifact.setResolved( true );
             }
-
+                                        
+            // 1.0-SNAPSHOT
+            //
+            // 1)         pom = 1.0-SoNAPSHOT
+            // 2)         pom = 1.0-yyyymmdd.hhmmss
+            // 3) baseVersion = 1.0-SNAPSHOT
             if ( artifact.isSnapshot() && !artifact.getBaseVersion().equals( artifact.getVersion() ) )
             {
                 String version = artifact.getVersion();
 
+                // 1.0-SNAPSHOT
                 artifact.selectVersion( artifact.getBaseVersion() );
 
+                // Make a file with a 1.0-SNAPSHOT format
                 File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
-
+                
+                // if the timestamped version was resolved or the copy doesn't exist then copy a version
+                // of the file like 1.0-SNAPSHOT. Even if there is a timestamped version the non-timestamped
+                // version will be created.
                 if ( resolved || !copy.exists() )
                 {
                     // recopy file if it was reresolved, or doesn't exist.
@@ -236,13 +230,15 @@
                     }
                 }
 
+                // We are only going to use the 1.0-SNAPSHOT version
                 artifact.setFile( copy );
 
+                // Set the version to the 1.0-SNAPSHOT version
                 artifact.selectVersion( version );
             }
         }
     }
-
+        
     private boolean isLocalCopy( Artifact artifact )
     {
         boolean localCopy = false;
@@ -427,8 +423,7 @@
         {
             try
             {
-                Set<Artifact> directArtifacts =
-                    source.retrieve( rootArtifact, localRepository, remoteRepositories ).getArtifacts();
+                Set<Artifact> directArtifacts = source.retrieve( rootArtifact, localRepository, remoteRepositories ).getArtifacts();
 
                 if ( artifacts == null || artifacts.isEmpty() )
                 {
@@ -467,7 +462,7 @@
         } 
                                 
         // After the collection we will have the artifact object in the result but they will not be resolved yet.
-        result = artifactCollector.collect( artifacts, rootArtifact, managedVersions, localRepository, remoteRepositories, source, filter, listeners );
+        result = artifactCollector.collect( artifacts, rootArtifact, managedVersions, localRepository, remoteRepositories, source, filter, listeners, null );
                 
         // We have metadata retrieval problems, or there are cycles that have been detected
         // so we give this back to the calling code and let them deal with this information

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Mon May 11 04:08:29 2009
@@ -51,9 +51,7 @@
     @Requirement
     protected WagonManager wagonManager;
 
-    protected String resolveVersion( Artifact artifact,
-                                     ArtifactRepository localRepository,
-                                     List<ArtifactRepository> remoteRepositories )
+    protected String resolveVersion( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
         throws RepositoryMetadataResolutionException
     {
         RepositoryMetadata metadata;
@@ -110,6 +108,5 @@
         return version;
     }
 
-    protected abstract String constructVersion( Versioning versioning,
-                                                String baseVersion );
+    protected abstract String constructVersion( Versioning versioning, String baseVersion );
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java Mon May 11 04:08:29 2009
@@ -41,9 +41,7 @@
      * @param remoteRepositories the repositories to check
      * @param localRepository    the local repository
      */
-    void transformForResolve( Artifact artifact,
-                              List<ArtifactRepository> remoteRepositories,
-                              ArtifactRepository localRepository )
+    void transformForResolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /**
@@ -53,8 +51,7 @@
      * @param artifact        Artifact to be transformed.
      * @param localRepository the local repository it will be stored in
      */
-    void transformForInstall( Artifact artifact,
-                              ArtifactRepository localRepository )
+    void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
         throws ArtifactInstallationException;
 
     /**
@@ -65,11 +62,8 @@
      * @param remoteRepository the repository to deploy to
      * @param localRepository  the local repository the metadata is stored in
      */
-    void transformForDeployment( Artifact artifact,
-                                 ArtifactRepository remoteRepository,
-                                 ArtifactRepository localRepository )
+    void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository, ArtifactRepository localRepository )
         throws ArtifactDeploymentException;
 
-
     List getArtifactTransformations();
 }

Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java Mon May 11 04:08:29 2009
@@ -54,9 +54,7 @@
     private static final String UTC_TIMESTAMP_PATTERN = "yyyyMMdd.HHmmss";
 
 
-    public void transformForResolve( Artifact artifact,
-                                     List<ArtifactRepository> remoteRepositories,
-                                     ArtifactRepository localRepository )
+    public void transformForResolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactResolutionException
     {
         // Only select snapshots that are unresolved (eg 1.0-SNAPSHOT, not 1.0-20050607.123456)

Modified: maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java Mon May 11 04:08:29 2009
@@ -73,7 +73,7 @@
 
         source = new Source();
         artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
-        artifactCollector = (ArtifactCollector) lookup( ArtifactCollector.ROLE );
+        artifactCollector = (ArtifactCollector) lookup( ArtifactCollector.class );
 
         projectArtifact = createArtifactSpec( "project", "1.0", null );
     }
@@ -726,23 +726,23 @@
 
     private ArtifactResolutionResult collect( Set artifacts, ArtifactFilter filter )
         throws ArtifactResolutionException
-    {
-        return artifactCollector.collect( artifacts, projectArtifact.artifact, null, null, source, filter,
-                                          Collections.EMPTY_LIST );
+    {        
+        return artifactCollector.collect( artifacts, projectArtifact.artifact, null, null, null, source, filter,
+                                          Collections.EMPTY_LIST, null );
     }
 
     private ArtifactResolutionResult collect( ArtifactSpec a )
         throws ArtifactResolutionException
     {
         return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact, null, null,
-                                          source, null, Collections.EMPTY_LIST );
+                                          null, source, null, Collections.EMPTY_LIST, null );
     }
 
     private ArtifactResolutionResult collect( ArtifactSpec a, ArtifactFilter filter )
         throws ArtifactResolutionException
     {
         return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact, null, null,
-                                          source, filter, Collections.EMPTY_LIST );
+                                          null, source, filter, Collections.EMPTY_LIST, null );
     }
 
     private ArtifactResolutionResult collect( ArtifactSpec a, Artifact managedVersion )
@@ -750,7 +750,7 @@
     {
         Map managedVersions = Collections.singletonMap( managedVersion.getDependencyConflictId(), managedVersion );
         return artifactCollector.collect( Collections.singleton( a.artifact ), projectArtifact.artifact,
-                                          managedVersions, null, null, source, null, Collections.EMPTY_LIST );
+                                          managedVersions, null, null, source, null, Collections.EMPTY_LIST, null );
     }
 
     private ArtifactSpec createArtifactSpec( String id, String version )

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Mon May 11 04:08:29 2009
@@ -21,8 +21,12 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.exception.DefaultExceptionHandler;
 import org.apache.maven.exception.ExceptionHandler;
@@ -69,14 +73,6 @@
         return lifecycleExecutor.getLifecyclePhases();
     }
 
-    // ----------------------------------------------------------------------
-    // Project execution
-    // ----------------------------------------------------------------------
-
-    // project build
-    // artifact resolution
-    // lifecycle execution
-
     public MavenExecutionResult execute( MavenExecutionRequest request )
     {
         // Need a general way to inject standard properties
@@ -88,117 +84,110 @@
         request.setStartTime( new Date() );
         
         MavenExecutionResult result = new DefaultMavenExecutionResult();
-
-        MavenSession session = createMavenSession( request, result );        
         
-        try
-        {
-            lifecycleExecutor.execute( session );
-        }        
-        catch ( Exception e )
-        {            
-            ExceptionHandler handler = new DefaultExceptionHandler();
-            
-            // This will only be more then one if we have fail at end on and we collect
-            // them per project.
-            ExceptionSummary es = handler.handleException( e );                        
-         
-            result.addException( e );
-
-            result.setExceptionSummary( es );
-            
-            return result;
-        }
-
-        result.setTopologicallySortedProjects( session.getSortedProjects() );
-
-        result.setProject( session.getTopLevelProject() );
-
-        return result;
-    }
-
-    public MavenSession createMavenSession( MavenExecutionRequest request, MavenExecutionResult result )
-    {
+        DelegatingLocalArtifactRepository delegatingLocalArtifactRepository = new DelegatingLocalArtifactRepository();
+        delegatingLocalArtifactRepository.addLocalArtifactRepository( new UserLocalArtifactRepository( request.getLocalRepository() ) ); 
+        request.setLocalRepository( delegatingLocalArtifactRepository );        
+                
         MavenSession session;
         
-        List<MavenProject> projects;
+        Map<String,MavenProject> projects;
 
         try
         {
             projects = getProjects( request );
 
+            //TODO: We really need to get rid of this requirement in here. If we know there is no project present
             if ( projects.isEmpty() )
             {
-                projects.add( projectBuilder.buildStandaloneSuperProject( request.getProjectBuildingConfiguration() ) );
-
+                MavenProject project = projectBuilder.buildStandaloneSuperProject( request.getProjectBuildingConfiguration() ); 
+                projects.put( ArtifactUtils.key( project.getGroupId(), project.getArtifactId(), project.getVersion() ), project );
                 request.setProjectPresent( false );
             }
         }
         catch ( ProjectBuildingException e )
         {
-            result.addException( e );
-            return null;
+            return processResult( result, e );
         }
         catch ( MavenExecutionException e )
         {
-            result.addException( e );
-            return null;
+            return processResult( result, e );
         }
-
+        
         try
         {                        
-            ProjectSorter projectSorter = new ProjectSorter( projects );
+            ProjectSorter projectSorter = new ProjectSorter( projects.values() );
             
             session = new MavenSession( container, request, projectSorter.getSortedProjects() );            
         }
         catch ( CycleDetectedException e )
-        {
+        {            
             String message = "The projects in the reactor contain a cyclic reference: " + e.getMessage();
 
-            ProjectCycleException error = new ProjectCycleException( projects, message, e );
+            ProjectCycleException error = new ProjectCycleException( message, e );
 
-            result.addException( error );
-
-            return null;
+            return processResult( result, error );
         }
         catch ( DuplicateProjectException e )
         {
-            result.addException( e );
+            return processResult( result, e );
+        }
+        
+        delegatingLocalArtifactRepository.addLocalArtifactRepository( new ReactorArtifactRepository( projects ) );
+        
+        if ( result.hasExceptions() )
+        {
+            return result;
+        }        
 
-            return null;
+        try
+        {
+            lifecycleExecutor.execute( session );
+        }        
+        catch ( Exception e )
+        {            
+            return processResult( result, e );
         }
 
-        return session;
+        result.setTopologicallySortedProjects( session.getProjects() );
+
+        result.setProject( session.getTopLevelProject() );
+
+        return result;
     }
 
-    protected List<MavenProject> getProjects( MavenExecutionRequest request )
-        throws MavenExecutionException
+    private MavenExecutionResult processResult( MavenExecutionResult result, Exception e )
+    {
+        ExceptionHandler handler = new DefaultExceptionHandler();
+        
+        ExceptionSummary es = handler.handleException( e );                        
+     
+        result.addException( e );
+        
+        result.setExceptionSummary( es );    
+        
+        return result;
+    }
+    
+    protected Map<String,MavenProject> getProjects( MavenExecutionRequest request )
+        throws MavenExecutionException, ProjectBuildingException
     {
         List<File> files = Arrays.asList( new File[] { request.getPom() } );
 
-        List<MavenProject> projects = collectProjects( files, request );
+        Map<String,MavenProject> projects = collectProjects( files, request );
 
         return projects;
     }
 
-    private List<MavenProject> collectProjects( List<File> files, MavenExecutionRequest request )
-        throws MavenExecutionException
+    private Map<String,MavenProject> collectProjects( List<File> files, MavenExecutionRequest request )
+        throws MavenExecutionException, ProjectBuildingException
     {
-        List<MavenProject> projects = new ArrayList<MavenProject>();
+        Map<String,MavenProject> projects = new LinkedHashMap<String,MavenProject>();
 
         for ( File file : files )
         {
-            MavenProject project;
-
-            try
-            {
-                project = projectBuilder.build( file, request.getProjectBuildingConfiguration() );
-            }
-            catch ( ProjectBuildingException e )
-            {
-                throw new MavenExecutionException( "Failed to build MavenProject instance for: " + file, file, e );
-            }
-
+            MavenProject project = projectBuilder.build( file, request.getProjectBuildingConfiguration() );
+            
             if ( ( project.getPrerequisites() != null ) && ( project.getPrerequisites().getMaven() != null ) )
             {
                 DefaultArtifactVersion version = new DefaultArtifactVersion( project.getPrerequisites().getMaven() );
@@ -253,14 +242,12 @@
                     moduleFiles.add( moduleFile );
                 }
 
-                List<MavenProject> collectedProjects = collectProjects( moduleFiles, request );
+                Map<String,MavenProject> collectedProjects = collectProjects( moduleFiles, request );
 
-                projects.addAll( collectedProjects );
-                
-                project.setCollectedProjects( collectedProjects );
+                projects.putAll( collectedProjects );                
             }
             
-            projects.add( project );
+            projects.put( ArtifactUtils.key( project.getGroupId(), project.getArtifactId(), project.getVersion() ), project );
         }
 
         return projects;

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java?rev=773456&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java Mon May 11 04:08:29 2009
@@ -0,0 +1,76 @@
+package org.apache.maven;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+
+public class DelegatingLocalArtifactRepository
+    extends DefaultArtifactRepository
+{
+    private List<LocalArtifactRepository> localRepositories;        
+    
+    public void addLocalArtifactRepository( LocalArtifactRepository localRepository )
+    {
+        if ( localRepositories == null )
+        {
+            localRepositories = new ArrayList<LocalArtifactRepository>();
+        }
+        
+        localRepositories.add( localRepository );
+    }
+    
+    @Override
+    public Artifact find( Artifact artifact )
+    {
+        for( LocalArtifactRepository repository : localRepositories )
+        {
+            artifact = repository.find( artifact );
+            
+            if ( artifact.isResolved() )
+            {
+                return artifact;
+            }
+        }
+        
+        return artifact;
+    }
+    
+    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
+    {
+        for( LocalArtifactRepository localRepository : localRepositories )
+        {
+            if ( localRepository.hasLocalMetadata() )
+            {
+                return localRepository.pathOfLocalRepositoryMetadata( metadata, localRepository );
+            }
+        }
+        
+        return null;
+    }    
+    
+    // This ID is necessary of the metadata lookup doesn't work correctly.
+    public String getId()
+    {
+        return "local";
+    }
+    
+    @Override
+    public String pathOf( Artifact artifact )
+    {
+        for( LocalArtifactRepository localRepository : localRepositories )
+        {
+            if( localRepository.hasLocalMetadata() )
+            {
+                String path = localRepository.pathOf( artifact );
+                
+                return path;
+            }
+        }
+        
+        return null;
+    }
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DelegatingLocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java?rev=773456&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java Mon May 11 04:08:29 2009
@@ -0,0 +1,22 @@
+package org.apache.maven;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+
+public abstract class LocalArtifactRepository
+    extends DefaultArtifactRepository
+{   
+    public abstract Artifact find( Artifact artifact );
+    
+    /** 
+     * If an artifact is found in this repository and this method returns true the search is over. This would
+     * be the case if we look for artifacts in the reactor or a IDE workspace. We don't want to search any
+     * further.
+     * 
+     * @return
+     */
+    // workspace or reactor
+    public abstract boolean isAuthoritative();
+    
+    public abstract boolean hasLocalMetadata();    
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/LocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ProjectCycleException.java Mon May 11 04:08:29 2009
@@ -1,7 +1,5 @@
 package org.apache.maven;
 
-import java.util.List;
-
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 /**
@@ -10,19 +8,8 @@
 public class ProjectCycleException
     extends BuildFailureException
 {
-
-    private final List projects;
-
-    public ProjectCycleException( List projects, String message,
-                                  CycleDetectedException cause )
+    public ProjectCycleException( String message, CycleDetectedException cause )
     {
         super( message, cause );
-        this.projects = projects;
     }
-
-    public List getProjects()
-    {
-        return projects;
-    }
-
 }

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java?rev=773456&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java Mon May 11 04:08:29 2009
@@ -0,0 +1,82 @@
+package org.apache.maven;
+
+import java.io.File;
+import java.util.Map;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * An implementation of a repository that knows how to search the Maven reactor for artifacts.
+ * 
+ * @author Jason van Zyl
+ */
+
+// maven-compat
+//   target/classes
+// maven-core
+//   target/classes
+// maven-embedder
+//   target/classes
+// maven-model
+//   target/classes
+// maven-model-builder
+//   target/classes
+// maven-plugin-api
+//   target/classes
+// maven-repository
+//   target/classes
+// maven-toolchain
+//   target/classes
+
+public class ReactorArtifactRepository
+    extends LocalArtifactRepository
+{
+    private Map<String,MavenProject> reactorProjects;
+    
+    public ReactorArtifactRepository( Map<String,MavenProject> reactorProjects )
+    {
+        this.reactorProjects = reactorProjects;
+    }
+        
+    @Override
+    public Artifact find( Artifact artifact )
+    {
+        String projectKey = ArtifactUtils.key( artifact );
+                
+        MavenProject project = reactorProjects.get( projectKey );
+                        
+        if ( project != null )
+        {
+            //TODO: determine if we want to pass the artifact produced by the project if it
+            // is present and under what conditions we will do such a thing.            
+            
+            File classesDirectory = new File( project.getBuild().getOutputDirectory() );
+            
+            if( classesDirectory.exists() )
+            {
+                artifact.setFile( classesDirectory );
+             
+                artifact.setFromAuthoritativeRepository( true );
+                
+                artifact.setResolved( true );                
+            }            
+        }
+        
+        return artifact;
+    }
+
+    @Override
+    public boolean isAuthoritative()
+    {
+        return true;
+    }
+
+    @Override
+    public boolean hasLocalMetadata()
+    {
+        return false;
+    }
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/ReactorArtifactRepository.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java?rev=773456&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java Mon May 11 04:08:29 2009
@@ -0,0 +1,64 @@
+package org.apache.maven;
+
+import java.io.File;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+
+public class UserLocalArtifactRepository
+    extends LocalArtifactRepository
+{
+    private ArtifactRepository localRepository;
+    
+    public UserLocalArtifactRepository( ArtifactRepository localRepository )
+    {
+        this.localRepository = localRepository;
+    }
+    
+    @Override
+    public Artifact find( Artifact artifact )
+    {
+        File artifactFile = new File( localRepository.getBasedir(), pathOf( artifact ) );
+                
+        if( artifactFile.exists() )
+        {
+            artifact.setFile( artifactFile );
+            
+            artifact.setResolved( true );            
+        }
+        
+        return artifact;
+    }
+
+    @Override
+    public String getId()
+    {
+        return localRepository.getId();
+    }
+    
+    @Override
+    public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
+    {
+        return localRepository.pathOfLocalRepositoryMetadata( metadata, repository );
+    }
+    
+    @Override
+    public String pathOf( Artifact artifact )
+    {
+        return localRepository.pathOf( artifact );
+    }
+    
+    @Override
+    public boolean isAuthoritative()
+    {
+        return false;
+    }
+
+    @Override
+    public boolean hasLocalMetadata()
+    {
+        return true;
+    }
+}

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/UserLocalArtifactRepository.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=773456&r1=773455&r2=773456&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java Mon May 11 04:08:29 2009
@@ -701,6 +701,7 @@
             projectBuildingConfiguration.setExecutionProperties( getProperties() );
             projectBuildingConfiguration.setGlobalProfileManager( getProfileManager() );
             projectBuildingConfiguration.setRemoteRepositories( getRemoteRepositories() );
+            projectBuildingConfiguration.setProcessPlugins( true );
         }
 
         return projectBuildingConfiguration;