You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/08/25 00:46:12 UTC

svn commit: r988749 [3/9] - in /maven/maven-3/trunk: ./ apache-maven/ maven-aether-provider/ maven-aether-provider/src/ maven-aether-provider/src/main/ maven-aether-provider/src/main/java/ maven-aether-provider/src/main/java/org/ maven-aether-provider/...

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/installer/DefaultArtifactInstaller.java Tue Aug 24 22:46:07 2010
@@ -20,21 +20,27 @@ package org.apache.maven.artifact.instal
  */
 
 import java.io.File;
-import java.io.IOException;
 
+import org.apache.maven.RepositoryUtils;
 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.metadata.RepositoryMetadataInstallationException;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
-import org.apache.maven.repository.DefaultLocalRepositoryMaintainerEvent;
-import org.apache.maven.repository.LocalRepositoryMaintainer;
-import org.apache.maven.repository.LocalRepositoryMaintainerEvent;
-import org.apache.maven.repository.legacy.resolver.transform.ArtifactTransformationManager;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.MetadataBridge;
+import org.apache.maven.artifact.repository.metadata.Snapshot;
+import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.plugin.LegacySupport;
+import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.FileUtils;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.installation.InstallRequest;
+import org.sonatype.aether.installation.InstallationException;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.sonatype.aether.util.artifact.SubArtifact;
 
 /**
  * @author Jason van Zyl
@@ -44,15 +50,13 @@ public class DefaultArtifactInstaller
     extends AbstractLogEnabled
     implements ArtifactInstaller
 {
-    @Requirement
-    private ArtifactTransformationManager transformationManager;
 
     @Requirement
-    private RepositoryMetadataManager repositoryMetadataManager;
-
-    @Requirement( optional = true )
-    private LocalRepositoryMaintainer localRepositoryMaintainer;
-
+    private RepositorySystem repoSystem;
+    
+    @Requirement
+    private LegacySupport legacySupport;
+    
     /** @deprecated we want to use the artifact method only, and ensure artifact.file is set correctly. */
     @Deprecated
     public void install( String basedir, String finalName, Artifact artifact, ArtifactRepository localRepository )
@@ -67,59 +71,64 @@ public class DefaultArtifactInstaller
     public void install( File source, Artifact artifact, ArtifactRepository localRepository )
         throws ArtifactInstallationException
     {
-        try
-        {
-            transformationManager.transformForInstall( artifact, localRepository );
-
-            String localPath = localRepository.pathOf( artifact );
+        DefaultRepositorySystemSession session =
+            new DefaultRepositorySystemSession( legacySupport.getRepositorySession() );
+        LocalRepository localRepo = new LocalRepository( localRepository.getBasedir() );
+        session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+
+        InstallRequest request = new InstallRequest();
+
+        org.sonatype.aether.artifact.Artifact mainArtifact = RepositoryUtils.toArtifact( artifact );
+        mainArtifact = mainArtifact.setFile( source );
+        request.addArtifact( mainArtifact );
 
-            // TODO: use a file: wagon and the wagon manager?
-            File destination = new File( localRepository.getBasedir(), localPath );
-            if ( !destination.getParentFile().exists() )
+        for ( ArtifactMetadata metadata : artifact.getMetadataList() )
+        {
+            if ( metadata instanceof ProjectArtifactMetadata )
             {
-                destination.getParentFile().mkdirs();
+                org.sonatype.aether.artifact.Artifact pomArtifact = new SubArtifact( mainArtifact, "", "pom" );
+                pomArtifact = pomArtifact.setFile( ( (ProjectArtifactMetadata) metadata ).getFile() );
+                request.addArtifact( pomArtifact );
             }
-
-            boolean copy =
-                !destination.exists() || "pom".equals( artifact.getType() )
-                    || source.lastModified() != destination.lastModified() || source.length() != destination.length();
-
-            if ( copy )
+            else if ( metadata instanceof SnapshotArtifactRepositoryMetadata
+                || metadata instanceof ArtifactRepositoryMetadata )
             {
-                getLogger().info( "Installing " + source + " to " + destination );
-
-                FileUtils.copyFile( source, destination );
-                destination.setLastModified( source.lastModified() );
+                // eaten, handled by repo system
             }
             else
             {
-                getLogger().info( "Skipped re-installing " + source + " to " + destination + ", seems unchanged" );
+                request.addMetadata( new MetadataBridge( metadata ) );
             }
+        }
 
-            // must be after the artifact is installed
-            for ( ArtifactMetadata metadata : artifact.getMetadataList() )
-            {
-                repositoryMetadataManager.install( metadata, localRepository );
-            }
-            // TODO: would like to flush this, but the plugin metadata is added in advance, not as an install/deploy
-            // transformation
-            // This would avoid the need to merge and clear out the state during deployment
-            // artifact.getMetadataList().clear();
-
-            if ( localRepositoryMaintainer != null )
-            {
-                LocalRepositoryMaintainerEvent event =
-                    new DefaultLocalRepositoryMaintainerEvent( localRepository, artifact, destination );
-                localRepositoryMaintainer.artifactInstalled( event );
-            }
+        try
+        {
+            repoSystem.install( session, request );
         }
-        catch ( IOException e )
+        catch ( InstallationException e )
         {
-            throw new ArtifactInstallationException( "Error installing artifact: " + e.getMessage(), e );
+            throw new ArtifactInstallationException( e.getMessage(), e );
         }
-        catch ( RepositoryMetadataInstallationException e )
+
+        /*
+         * NOTE: Not used by Maven core, only here to provide backward-compat with plugins like the Install Plugin.
+         */
+
+        if ( artifact.isSnapshot() )
+        {
+            Snapshot snapshot = new Snapshot();
+            snapshot.setLocalCopy( true );
+            artifact.addMetadata( new SnapshotArtifactRepositoryMetadata( artifact, snapshot ) );
+        }
+
+        Versioning versioning = new Versioning();
+        versioning.updateTimestamp();
+        versioning.addVersion( artifact.getBaseVersion() );
+        if ( artifact.isRelease() )
         {
-            throw new ArtifactInstallationException( "Error installing artifact's metadata: " + e.getMessage(), e );
+            versioning.setRelease( artifact.getBaseVersion() );
         }
+        artifact.addMetadata( new ArtifactRepositoryMetadata( artifact, versioning ) );
     }
-}
\ No newline at end of file
+
+}

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Tue Aug 24 22:46:07 2010
@@ -6,9 +6,9 @@ package org.apache.maven.artifact.reposi
  * 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
@@ -22,7 +22,6 @@ import java.io.Reader;
 import java.io.Writer;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -30,7 +29,6 @@ import org.apache.maven.artifact.metadat
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
-import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
@@ -49,7 +47,7 @@ import org.codehaus.plexus.util.xml.pull
 /**
  * @author Jason van Zyl
  */
-@Component( role = RepositoryMetadataManager.class )
+@Component(role=RepositoryMetadataManager.class)
 public class DefaultRepositoryMetadataManager
     extends AbstractLogEnabled
     implements RepositoryMetadataManager
@@ -60,8 +58,7 @@ public class DefaultRepositoryMetadataMa
     @Requirement
     private UpdateCheckManager updateCheckManager;
 
-    public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories,
-                         ArtifactRepository localRepository )
+    public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws RepositoryMetadataResolutionException
     {
         RepositoryRequest request = new DefaultRepositoryRequest();
@@ -73,41 +70,6 @@ public class DefaultRepositoryMetadataMa
     public void resolve( RepositoryMetadata metadata, RepositoryRequest request )
         throws RepositoryMetadataResolutionException
     {
-        RepositoryCache cache = request.getCache();
-
-        CacheKey cacheKey = null;
-
-        if ( cache != null )
-        {
-            cacheKey = new CacheKey( metadata, request );
-
-            CacheRecord cacheRecord = (CacheRecord) cache.get( request, cacheKey );
-
-            if ( cacheRecord != null )
-            {
-                if ( getLogger().isDebugEnabled() )
-                {
-                    getLogger().debug( "Resolved metadata from cache: " + metadata + " @ " + cacheRecord.repository );
-                }
-
-                metadata.setMetadata( MetadataUtils.cloneMetadata( cacheRecord.metadata ) );
-
-                if ( cacheRecord.repository != null )
-                {
-                    for ( ArtifactRepository repository : request.getRemoteRepositories() )
-                    {
-                        if ( cacheRecord.repository.equals( repository.getId() ) )
-                        {
-                            metadata.setRepository( repository );
-                            break;
-                        }
-                    }
-                }
-
-                return;
-            }
-        }
-
         ArtifactRepository localRepository = request.getLocalRepository();
         List<ArtifactRepository> remoteRepositories = request.getRemoteRepositories();
 
@@ -209,13 +171,7 @@ public class DefaultRepositoryMetadataMa
         }
         catch ( RepositoryMetadataStoreException e )
         {
-            throw new RepositoryMetadataResolutionException( "Unable to store local copy of metadata: "
-                + e.getMessage(), e );
-        }
-
-        if ( cache != null )
-        {
-            cache.put( request, cacheKey, new CacheRecord( metadata ) );
+            throw new RepositoryMetadataResolutionException( "Unable to store local copy of metadata: " + e.getMessage(), e );
         }
     }
 
@@ -226,130 +182,7 @@ public class DefaultRepositoryMetadataMa
         return metadataFile.isFile() ? new Date( metadataFile.lastModified() ) : null;
     }
 
-    private static final class CacheKey
-    {
-
-        final Object metadataKey;
-
-        final ArtifactRepository localRepository;
-
-        final List<ArtifactRepository> remoteRepositories;
-
-        final int hashCode;
-
-        CacheKey( RepositoryMetadata metadata, RepositoryRequest request )
-        {
-            metadataKey = metadata.getKey();
-            localRepository = request.getLocalRepository();
-            remoteRepositories = request.getRemoteRepositories();
-
-            int hash = 17;
-            hash = hash * 31 + metadata.getKey().hashCode();
-            hash = hash * 31 + repoHashCode( localRepository );
-            for ( ArtifactRepository remoteRepository : remoteRepositories )
-            {
-                hash = hash * 31 + repoHashCode( remoteRepository );
-            }
-            hashCode = hash;
-        }
-
-        int repoHashCode( ArtifactRepository repository )
-        {
-            return ( repository != null && repository.getUrl() != null ) ? repository.getUrl().hashCode() : 0;
-        }
-
-        boolean repoEquals( ArtifactRepository repo1, ArtifactRepository repo2 )
-        {
-            if ( repo1 == repo2 )
-            {
-                return true;
-            }
-
-            if ( repo1 == null || repo2 == null )
-            {
-                return false;
-            }
-
-            return equal( repo1.getUrl(), repo2.getUrl() ) && repo1.getClass() == repo2.getClass();
-        }
-
-        private static <T> boolean equal( T s1, T s2 )
-        {
-            return s1 != null ? s1.equals( s2 ) : s2 == null;
-        }
-
-        @Override
-        public boolean equals( Object obj )
-        {
-            if ( this == obj )
-            {
-                return true;
-            }
-
-            if ( !( obj instanceof CacheKey ) )
-            {
-                return false;
-            }
-
-            CacheKey that = (CacheKey) obj;
-
-            if ( !this.metadataKey.equals( that.metadataKey ) )
-            {
-                return false;
-            }
-
-            if ( !repoEquals( this.localRepository, that.localRepository ) )
-            {
-                return false;
-            }
-
-            for ( Iterator<ArtifactRepository> it1 = this.remoteRepositories.iterator(), it2 =
-                that.remoteRepositories.iterator();; )
-            {
-                if ( !it1.hasNext() || !it2.hasNext() )
-                {
-                    if ( it1.hasNext() != it2.hasNext() )
-                    {
-                        return false;
-                    }
-                    break;
-                }
-                ArtifactRepository repo1 = it1.next();
-                ArtifactRepository repo2 = it2.next();
-                if ( !repoEquals( repo1, repo2 ) )
-                {
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-        @Override
-        public int hashCode()
-        {
-            return hashCode;
-        }
-
-    }
-
-    private static final class CacheRecord
-    {
-
-        final Metadata metadata;
-
-        final String repository;
-
-        CacheRecord( RepositoryMetadata metadata )
-        {
-            this.metadata = MetadataUtils.cloneMetadata( metadata.getMetadata() );
-            this.repository = ( metadata.getRepository() != null ) ? metadata.getRepository().getId() : null;
-        }
-
-    }
-
-    private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories,
-                                ArtifactRepository localRepository )
+    private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws RepositoryMetadataStoreException
     {
         // TODO: currently this is first wins, but really we should take the latest by comparing either the
@@ -378,9 +211,7 @@ public class DefaultRepositoryMetadataMa
         updateSnapshotMetadata( metadata, previousMetadata, selected, localRepository );
     }
 
-    private void updateSnapshotMetadata( RepositoryMetadata metadata,
-                                         Map<ArtifactRepository, Metadata> previousMetadata,
-                                         ArtifactRepository selected, ArtifactRepository localRepository )
+    private void updateSnapshotMetadata( RepositoryMetadata metadata, Map<ArtifactRepository, Metadata> previousMetadata, ArtifactRepository selected, ArtifactRepository localRepository )
         throws RepositoryMetadataStoreException
     {
         // TODO: this could be a lot nicer... should really be in the snapshot transformation?
@@ -405,8 +236,7 @@ public class DefaultRepositoryMetadataMa
                 }
                 else
                 {
-                    if ( ( m.getVersioning() != null ) && ( m.getVersioning().getSnapshot() != null )
-                        && m.getVersioning().getSnapshot().isLocalCopy() )
+                    if ( ( m.getVersioning() != null ) && ( m.getVersioning().getSnapshot() != null ) && m.getVersioning().getSnapshot().isLocalCopy() )
                     {
                         m.getVersioning().getSnapshot().setLocalCopy( false );
                         metadata.setMetadata( m );
@@ -419,14 +249,11 @@ public class DefaultRepositoryMetadataMa
         }
     }
 
-    private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
-                                  ArtifactRepository localRepository, Map<ArtifactRepository, Metadata> previousMetadata )
+    private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository, ArtifactRepository localRepository, Map<ArtifactRepository, Metadata> previousMetadata )
     {
         boolean setRepository = false;
 
-        File metadataFile =
-            new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( repoMetadata,
-                                                                                                   remoteRepository ) );
+        File metadataFile = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) );
 
         if ( metadataFile.exists() )
         {
@@ -488,13 +315,11 @@ public class DefaultRepositoryMetadataMa
         }
         catch ( IOException e )
         {
-            throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': "
-                + e.getMessage(), e );
+            throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': " + e.getMessage(), e );
         }
         catch ( XmlPullParserException e )
         {
-            throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': "
-                + e.getMessage(), e );
+            throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': " + e.getMessage(), e );
         }
         finally
         {
@@ -505,8 +330,8 @@ public class DefaultRepositoryMetadataMa
     }
 
     /**
-     * Ensures the last updated timestamp of the specified metadata does not refer to the future and fixes the local
-     * metadata if necessary to allow proper merging/updating of metadata during deployment.
+     * Ensures the last updated timestamp of the specified metadata does not refer to the future and fixes the local metadata if necessary to allow
+     * proper merging/updating of metadata during deployment.
      */
     private void fixTimestamp( File metadataFile, Metadata metadata, Metadata reference )
     {
@@ -562,8 +387,7 @@ public class DefaultRepositoryMetadataMa
         }
     }
 
-    public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository,
-                               ArtifactRepository remoteRepository )
+    public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository )
         throws RepositoryMetadataResolutionException
     {
         File file;
@@ -573,8 +397,7 @@ public class DefaultRepositoryMetadataMa
         }
         catch ( TransferFailedException e )
         {
-            throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: "
-                + remoteRepository.getId() + " due to an error: " + e.getMessage(), e );
+            throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: " + remoteRepository.getId() + " due to an error: " + e.getMessage(), e );
         }
 
         try
@@ -591,24 +414,18 @@ public class DefaultRepositoryMetadataMa
         }
     }
 
-    private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata,
-                                                              ArtifactRepository localRepository,
-                                                              ArtifactRepository remoteRepository )
+    private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository )
         throws TransferFailedException
     {
-        File file =
-            new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata,
-                                                                                                   remoteRepository ) );
+        File file = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
 
         try
         {
-            wagonManager.getArtifactMetadataFromDeploymentRepository( metadata, remoteRepository, file,
-                                                                      ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+            wagonManager.getArtifactMetadataFromDeploymentRepository( metadata, remoteRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
         }
         catch ( ResourceDoesNotExistException e )
         {
-            getLogger().info( metadata + " could not be found on repository: " + remoteRepository.getId()
-                                  + ", so will be created" );
+            getLogger().info( metadata + " could not be found on repository: " + remoteRepository.getId() + ", so will be created" );
 
             // delete the local copy so the old details aren't used.
             if ( file.exists() )
@@ -626,8 +443,7 @@ public class DefaultRepositoryMetadataMa
         return file;
     }
 
-    public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepository,
-                        ArtifactRepository deploymentRepository )
+    public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepository, ArtifactRepository deploymentRepository )
         throws RepositoryMetadataDeploymentException
     {
         File file;
@@ -640,8 +456,7 @@ public class DefaultRepositoryMetadataMa
             }
             catch ( TransferFailedException e )
             {
-                throw new RepositoryMetadataDeploymentException( metadata + " could not be retrieved from repository: "
-                    + deploymentRepository.getId() + " due to an error: " + e.getMessage(), e );
+                throw new RepositoryMetadataDeploymentException( metadata + " could not be retrieved from repository: " + deploymentRepository.getId() + " due to an error: " + e.getMessage(), e );
             }
 
             if ( file.isFile() )
@@ -659,9 +474,7 @@ public class DefaultRepositoryMetadataMa
         else
         {
             // It's a POM - we don't need to retrieve it first
-            file =
-                new File( localRepository.getBasedir(),
-                          localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) );
+            file = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) );
         }
 
         try

Added: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java (added)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,157 @@
+package org.apache.maven.artifact.repository.metadata;
+
+/*
+ * 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 org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
+import org.codehaus.plexus.util.FileUtils;
+import org.sonatype.aether.RepositoryException;
+import org.sonatype.aether.metadata.MergeableMetadata;
+
+/**
+ * <strong>Warning:</strong> This is an internal utility class that is only public for technical reasons, it is not part
+ * of the public API. In particular, this class can be changed or deleted without prior notice.
+ * 
+ * @author Benjamin Bentmann
+ */
+public final class MetadataBridge
+    implements MergeableMetadata
+{
+
+    private ArtifactMetadata metadata;
+
+    private boolean merged;
+
+    public MetadataBridge( ArtifactMetadata metadata )
+    {
+        this.metadata = metadata;
+    }
+
+    public void merge( File current, File result )
+        throws RepositoryException
+    {
+        try
+        {
+            if ( current.exists() )
+            {
+                FileUtils.copyFile( current, result );
+            }
+            ArtifactRepository localRepo = new MetadataRepository( result );
+            metadata.storeInLocalRepository( localRepo, localRepo );
+            merged = true;
+        }
+        catch ( Exception e )
+        {
+            throw new RepositoryException( e.getMessage(), e );
+        }
+    }
+
+    public boolean isMerged()
+    {
+        return merged;
+    }
+
+    public String getGroupId()
+    {
+        return emptify( metadata.getGroupId() );
+    }
+
+    public String getArtifactId()
+    {
+        return metadata.storedInGroupDirectory() ? "" : emptify( metadata.getArtifactId() );
+    }
+
+    public String getVersion()
+    {
+        return metadata.storedInArtifactVersionDirectory() ? emptify( metadata.getBaseVersion() ) : "";
+    }
+
+    public String getType()
+    {
+        return metadata.getRemoteFilename();
+    }
+
+    private String emptify( String string )
+    {
+        return ( string != null ) ? string : "";
+    }
+
+    public File getFile()
+    {
+        return null;
+    }
+
+    public MetadataBridge setFile( File file )
+    {
+        return this;
+    }
+
+    public Nature getNature()
+    {
+        if ( metadata instanceof RepositoryMetadata )
+        {
+            switch ( ( (RepositoryMetadata) metadata ).getNature() )
+            {
+                case RepositoryMetadata.RELEASE_OR_SNAPSHOT:
+                    return Nature.RELEASE_OR_SNAPSHOT;
+                case RepositoryMetadata.SNAPSHOT:
+                    return Nature.SNAPSHOT;
+                default:
+                    return Nature.RELEASE;
+            }
+        }
+        else
+        {
+            return Nature.RELEASE;
+        }
+    }
+
+    @SuppressWarnings( "deprecation" )
+    static class MetadataRepository
+        extends DefaultArtifactRepository
+    {
+
+        private File metadataFile;
+
+        public MetadataRepository( File metadataFile )
+        {
+            super( "local", "", null );
+            this.metadataFile = metadataFile;
+        }
+
+        @Override
+        public String getBasedir()
+        {
+            return metadataFile.getParent();
+        }
+
+        @Override
+        public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
+        {
+            return metadataFile.getName();
+        }
+
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Tue Aug 24 22:46:07 2010
@@ -1,26 +1,21 @@
 package org.apache.maven.artifact.resolver;
 
 /*
- * 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.
+ * 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.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -37,58 +32,44 @@ import java.util.concurrent.ThreadPoolEx
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
 import org.apache.maven.artifact.repository.RepositoryRequest;
-import org.apache.maven.artifact.repository.metadata.Metadata;
-import org.apache.maven.artifact.repository.metadata.Snapshot;
-import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
-import org.apache.maven.artifact.repository.metadata.Versioning;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.LegacySupport;
-import org.apache.maven.repository.DefaultLocalRepositoryMaintainerEvent;
-import org.apache.maven.repository.LocalRepositoryMaintainer;
-import org.apache.maven.repository.LocalRepositoryMaintainerEvent;
-import org.apache.maven.repository.legacy.TransferListenerAdapter;
-import org.apache.maven.repository.legacy.WagonManager;
-import org.apache.maven.repository.legacy.metadata.ArtifactMetadata;
 import org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
 import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
 import org.apache.maven.repository.legacy.resolver.conflict.ConflictResolver;
-import org.apache.maven.repository.legacy.resolver.transform.ArtifactTransformationManager;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.events.TransferListener;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.util.FileUtils;
+import org.sonatype.aether.RepositorySystem;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.resolution.ArtifactRequest;
+import org.sonatype.aether.resolution.ArtifactResult;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
 
 /**
  * @author Jason van Zyl
  */
-@Component( role = ArtifactResolver.class )
+@Component(role = ArtifactResolver.class)
 public class DefaultArtifactResolver
     implements ArtifactResolver
 {
-    @Requirement
+    @Requirement 
     private Logger logger;
 
     @Requirement
-    private WagonManager wagonManager;
-
-    @Requirement
-    private ArtifactTransformationManager transformationManager;
-
-    @Requirement
     protected ArtifactFactory artifactFactory;
 
     @Requirement
@@ -99,16 +80,16 @@ public class DefaultArtifactResolver
 
     @Requirement
     private ArtifactMetadataSource source;
-
+    
     @Requirement
     private PlexusContainer container;
 
-    @Requirement( optional = true )
-    private LocalRepositoryMaintainer localRepositoryMaintainer;
-
     @Requirement
     private LegacySupport legacySupport;
 
+    @Requirement
+    private RepositorySystem repoSystem;
+
     private final Executor executor;
 
     public DefaultArtifactResolver()
@@ -141,13 +122,32 @@ public class DefaultArtifactResolver
         }
     }
 
+    private RepositorySystemSession getSession( ArtifactRepository localRepository )
+    {
+        MavenSession mavenSession = legacySupport.getSession();
+        DefaultRepositorySystemSession session;
+        if ( mavenSession != null )
+        {
+            session = new DefaultRepositorySystemSession( mavenSession.getRepositorySession() );
+        }
+        else
+        {
+            session = new DefaultRepositorySystemSession();
+        }
+        if ( localRepository != null && localRepository.getBasedir() != null )
+        {
+            LocalRepository localRepo = new LocalRepository( localRepository.getBasedir() );
+            session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+        }
+        return session;
+    }
+
     private void injectSession1( RepositoryRequest request, MavenSession session )
     {
         if ( session != null )
         {
             request.setOffline( session.isOffline() );
             request.setForceUpdate( session.getRequest().isUpdateSnapshots() );
-            request.setTransferListener( session.getRequest().getTransferListener() );
         }
     }
 
@@ -163,297 +163,125 @@ public class DefaultArtifactResolver
         }
     }
 
-    public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
-                         ArtifactRepository localRepository, TransferListener resolutionListener )
+    public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, TransferListener resolutionListener )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        RepositoryRequest request = new DefaultRepositoryRequest();
-        injectSession1( request, legacySupport.getSession() );
-        request.setLocalRepository( localRepository );
-        request.setRemoteRepositories( remoteRepositories );
-        resolve( artifact, request, resolutionListener, false );
+        resolve( artifact, remoteRepositories, getSession( localRepository ) );
     }
 
-    public void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories,
-                               ArtifactRepository localRepository )
+    public void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        RepositoryRequest request = new DefaultRepositoryRequest();
-        injectSession1( request, legacySupport.getSession() );
-        request.setLocalRepository( localRepository );
-        request.setRemoteRepositories( remoteRepositories );
-        resolve( artifact, request, null, true );
+        resolve( artifact, remoteRepositories, getSession( localRepository ) );
     }
 
-    private void resolve( Artifact artifact, RepositoryRequest request, TransferListener downloadMonitor,
-                          boolean force )
+    private void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, RepositorySystemSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         if ( artifact == null )
         {
             return;
         }
-
-        File destination;
-
+        
         if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
         {
             File systemFile = artifact.getFile();
 
             if ( systemFile == null )
             {
-                throw new ArtifactNotFoundException( "System artifact: " + artifact + " has no file attached",
-                                                     artifact );
+                throw new ArtifactNotFoundException( "System artifact: " + artifact + " has no file attached", artifact );
             }
 
             if ( !systemFile.exists() )
             {
-                throw new ArtifactNotFoundException( "System artifact: " + artifact + " not found in path: "
-                    + systemFile, artifact );
+                throw new ArtifactNotFoundException( "System artifact: " + artifact + " not found in path: " + systemFile, artifact );
             }
 
             if ( !systemFile.isFile() )
             {
-                throw new ArtifactNotFoundException( "System artifact: " + artifact + " is not a file: " + systemFile,
-                                                     artifact );
+                throw new ArtifactNotFoundException( "System artifact: " + artifact + " is not a file: " + systemFile, artifact );
             }
 
             artifact.setResolved( true );
-
+            
             return;
         }
 
-        ArtifactRepository localRepository = request.getLocalRepository();
-
-        List<ArtifactRepository> remoteRepositories = request.getRemoteRepositories();
-
         if ( !artifact.isResolved() )
         {
-            // ----------------------------------------------------------------------
-            // Check for the existence of the artifact in the specified local
-            // ArtifactRepository. If it is present then simply return as the
-            // request for resolution has been satisfied.
-            // ----------------------------------------------------------------------
-
-            artifact = localRepository.find( artifact );
+            ArtifactResult result;
 
-            if ( artifact.isResolved() )
+            try
             {
-                return;
+                ArtifactRequest artifactRequest = new ArtifactRequest();
+                artifactRequest.setArtifact( RepositoryUtils.toArtifact( artifact ) );
+                artifactRequest.setRepositories( RepositoryUtils.toRepos( remoteRepositories ) );
+                result = repoSystem.resolveArtifact( session, artifactRequest );
             }
-
-            transformationManager.transformForResolve( artifact, request );
-
-            destination = artifact.getFile();
-
-            if ( !request.isOffline() && ( force || !destination.exists() || isMutable( artifact ) ) )
+            catch ( org.sonatype.aether.resolution.ArtifactResolutionException e )
             {
-                try
-                {
-                    if ( artifact.getRepository() != null )
-                    {
-                        // the transformations discovered the artifact - so use it exclusively
-                        wagonManager.getArtifact( artifact, artifact.getRepository(), downloadMonitor,
-                                                  request.isForceUpdate() );
-                    }
-                    else
-                    {
-                        wagonManager.getArtifact( artifact, remoteRepositories, downloadMonitor,
-                                                  request.isForceUpdate() );
-                    }
-
-                    if ( localRepositoryMaintainer != null )
-                    {
-                        LocalRepositoryMaintainerEvent event =
-                            new DefaultLocalRepositoryMaintainerEvent( localRepository, artifact, null );
-                        localRepositoryMaintainer.artifactDownloaded( event );
-                    }
-
-                }
-                catch ( ResourceDoesNotExistException e )
+                if ( e.getCause() instanceof org.sonatype.aether.transfer.ArtifactNotFoundException )
                 {
                     throw new ArtifactNotFoundException( e.getMessage(), artifact, remoteRepositories, e );
                 }
-                catch ( TransferFailedException e )
-                {
-                    throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e );
-                }
-            }
-
-            if ( destination.exists() )
-            {
-                artifact.setResolved( true );
-            }
-            else
-            {
-                if ( request.isOffline() )
-                {
-                    throw new ArtifactResolutionException( "The repository system is offline"
-                        + " and the requested artifact is not locally available at " + destination, artifact,
-                                                           remoteRepositories );
-                }
                 else
                 {
-                    throw new ArtifactResolutionException( "Failed to resolve artifact, possibly due to a "
-                        + "repository list that is not appropriately equipped for this artifact's metadata.", artifact,
-                                                           remoteRepositories );
-                }
-            }
-
-            // 1.0-SNAPSHOT
-            //
-            // 1)         pom = 1.0-SNAPSHOT
-            // 2)         pom = 1.0-yyyymmdd.hhmmss
-            // 3) baseVersion = 1.0-SNAPSHOT
-            if ( artifact.isSnapshot() && isTimestamped( artifact ) )
-            {
-                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 ( !copy.exists() || copy.lastModified() != destination.lastModified()
-                    || copy.length() != destination.length() )
-                {
-                    // recopy file if it was reresolved, or doesn't exist.
-                    try
-                    {
-                        FileUtils.copyFile( destination, copy );
-
-                        copy.setLastModified( destination.lastModified() );
-                    }
-                    catch ( IOException e )
-                    {
-                        throw new ArtifactResolutionException( "Unable to copy resolved artifact for local use: "
-                            + e.getMessage(), artifact, remoteRepositories, e );
-                    }
+                    throw new ArtifactResolutionException( e.getMessage(), artifact, remoteRepositories, e );
                 }
-
-                // We are only going to use the 1.0-SNAPSHOT version
-                artifact.setFile( copy );
-
-                // Set the version to the 1.0-yyyymmdd.hhmmss version
-                artifact.selectVersion( version );
             }
-        }
-    }
-
-    private boolean isMutable( Artifact artifact )
-    {
-        return artifact.isSnapshot() && !isTimestamped( artifact ) && !isLocalCopy( artifact );
-    }
-
-    private boolean isTimestamped( Artifact artifact )
-    {
-        return !artifact.getBaseVersion().equals( artifact.getVersion() );
-    }
 
-    private boolean isLocalCopy( Artifact artifact )
-    {
-        boolean localCopy = false;
-
-        for ( ArtifactMetadata m : artifact.getMetadataList() )
-        {
-            if ( m instanceof SnapshotArtifactRepositoryMetadata )
-            {
-                SnapshotArtifactRepositoryMetadata snapshotMetadata = (SnapshotArtifactRepositoryMetadata) m;
-
-                Metadata metadata = snapshotMetadata.getMetadata();
-
-                if ( metadata != null )
-                {
-                    Versioning versioning = metadata.getVersioning();
-
-                    if ( versioning != null )
-                    {
-                        Snapshot snapshot = versioning.getSnapshot();
-
-                        if ( snapshot != null )
-                        {
-                            // TODO is it possible to have more than one SnapshotArtifactRepositoryMetadata
-                            localCopy = snapshot.isLocalCopy();
-                        }
-                    }
-                }
-            }
+            artifact.selectVersion( result.getArtifact().getVersion() );
+            artifact.setFile( result.getArtifact().getFile() );
+            artifact.setResolved( true );
         }
-
-        return localCopy;
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         ArtifactRepository localRepository,
-                                                         List<ArtifactRepository> remoteRepositories,
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
                                                          ArtifactMetadataSource source, ArtifactFilter filter )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
-                                    remoteRepositories, source, filter );
+        return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository, remoteRepositories, source, filter );
 
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         Map managedVersions, ArtifactRepository localRepository,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactMetadataSource source )
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
+                                                         List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
-                                    remoteRepositories, source, null );
+        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, null );
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         Map managedVersions, ArtifactRepository localRepository,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactMetadataSource source, ArtifactFilter filter )
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
+                                                         List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
-                                    remoteRepositories, source, filter, null );
+        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, null );
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactRepository localRepository,
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository,
                                                          ArtifactMetadataSource source )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         return resolveTransitively( artifacts, originatingArtifact, localRepository, remoteRepositories, source, null );
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactRepository localRepository,
-                                                         ArtifactMetadataSource source,
-                                                         List<ResolutionListener> listeners )
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository,
+                                                         ArtifactMetadataSource source, List<ResolutionListener> listeners )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
                                     remoteRepositories, source, null, listeners );
     }
 
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         Map managedVersions, ArtifactRepository localRepository,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactMetadataSource source, ArtifactFilter filter,
-                                                         List<ResolutionListener> listeners )
-        throws ArtifactResolutionException, ArtifactNotFoundException
-    {
-        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
-                                    remoteRepositories, source, filter, listeners, null );
-    }
-
-    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
-                                                         Map managedVersions, ArtifactRepository localRepository,
-                                                         List<ArtifactRepository> remoteRepositories,
-                                                         ArtifactMetadataSource source, ArtifactFilter filter,
-                                                         List<ResolutionListener> listeners,
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
+                                                         List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List<ResolutionListener> listeners )
+        throws ArtifactResolutionException, ArtifactNotFoundException
+    {
+        return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, listeners, null );
+    }
+
+    public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
+                                                         List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List<ResolutionListener> listeners,
                                                          List<ConflictResolver> conflictResolvers )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
@@ -461,7 +289,7 @@ public class DefaultArtifactResolver
             .setArtifact( originatingArtifact )
             .setResolveRoot( false )
             // This is required by the surefire plugin
-            .setArtifactDependencies( artifacts )
+            .setArtifactDependencies( artifacts )            
             .setManagedVersionMap( managedVersions )
             .setLocalRepository( localRepository )
             .setRemoteRepositories( remoteRepositories )
@@ -497,10 +325,10 @@ public class DefaultArtifactResolver
         Set<Artifact> artifacts = request.getArtifactDependencies();
         Map managedVersions = request.getManagedVersionMap();
         List<ResolutionListener> listeners = request.getListeners();
-        ArtifactFilter collectionFilter = request.getCollectionFilter();
+        ArtifactFilter collectionFilter = request.getCollectionFilter();                       
         ArtifactFilter resolutionFilter = request.getResolutionFilter();
-        TransferListener transferListener = TransferListenerAdapter.newAdapter( request.getTransferListener() );
-
+        RepositorySystemSession session = getSession( request.getLocalRepository() );
+        
         //TODO: hack because metadata isn't generated in m2e correctly and i want to run the maven i have in the workspace
         if ( source == null )
         {
@@ -532,12 +360,12 @@ public class DefaultArtifactResolver
         // This is often an artifact like a POM that is taken from disk and we already have hold of the
         // file reference. But this may be a Maven Plugin that we need to resolve from a remote repository
         // as well as its dependencies.
-
+                        
         if ( request.isResolveRoot() /* && rootArtifact.getFile() == null */ )
-        {
+        {            
             try
             {
-                resolve( rootArtifact, request, transferListener, false );
+                resolve( rootArtifact, request.getRemoteRepositories(), session );
             }
             catch ( ArtifactResolutionException e )
             {
@@ -609,7 +437,7 @@ public class DefaultArtifactResolver
                 return result;
             }
         }
-
+        
         if ( artifacts == null || artifacts.isEmpty() )
         {
             if ( request.isResolveRoot() )
@@ -617,19 +445,18 @@ public class DefaultArtifactResolver
                 result.addArtifact( rootArtifact );
             }
             return result;
-        }
+        } 
 
         // 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, collectionRequest, source,
                                        collectionFilter, 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
         // appropriately.
 
-        if ( result.hasMetadataResolutionExceptions() || result.hasVersionRangeViolations()
-            || result.hasCircularDependencyExceptions() )
+        if ( result.hasMetadataResolutionExceptions() || result.hasVersionRangeViolations() || result.hasCircularDependencyExceptions() )
         {
             return result;
         }
@@ -646,11 +473,8 @@ public class DefaultArtifactResolver
 
                 if ( resolutionFilter == null || resolutionFilter.include( artifact ) )
                 {
-                    ArtifactResolutionRequest childRequest = new ArtifactResolutionRequest( request );
-                    childRequest.setRemoteRepositories( node.getRemoteRepositories() );
-
-                    executor.execute( new ResolveTask( classLoader, latch, artifact, transferListener, childRequest,
-                                                       result ) );
+                    executor.execute( new ResolveTask( classLoader, latch, artifact, session,
+                                                       node.getRemoteRepositories(), result ) );
                 }
                 else
                 {
@@ -671,19 +495,18 @@ public class DefaultArtifactResolver
         // We want to send the root artifact back in the result but we need to do this after the other dependencies
         // have been resolved.
         if ( request.isResolveRoot() )
-        {
+        {            
             // Add the root artifact (as the first artifact to retain logical order of class path!)
             Set<Artifact> allArtifacts = new LinkedHashSet<Artifact>();
             allArtifacts.add( rootArtifact );
             allArtifacts.addAll( result.getArtifacts() );
             result.setArtifacts( allArtifacts );
-        }
-
+        }                        
+                 
         return result;
     }
 
-    public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
-                         ArtifactRepository localRepository )
+    public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         resolve( artifact, remoteRepositories, localRepository, null );
@@ -719,21 +542,20 @@ public class DefaultArtifactResolver
 
         private final Artifact artifact;
 
-        private final TransferListener transferListener;
+        private final RepositorySystemSession session;
 
-        private final ArtifactResolutionRequest request;
+        private final List<ArtifactRepository> remoteRepositories;
 
         private final ArtifactResolutionResult result;
 
-        public ResolveTask( ClassLoader classLoader, CountDownLatch latch, Artifact artifact,
-                            TransferListener transferListener, ArtifactResolutionRequest request,
-                            ArtifactResolutionResult result )
+        public ResolveTask( ClassLoader classLoader, CountDownLatch latch, Artifact artifact, RepositorySystemSession session,
+                            List<ArtifactRepository> remoteRepositories, ArtifactResolutionResult result )
         {
             this.classLoader = classLoader;
             this.latch = latch;
             this.artifact = artifact;
-            this.transferListener = transferListener;
-            this.request = request;
+            this.session = session;
+            this.remoteRepositories = remoteRepositories;
             this.result = result;
         }
 
@@ -742,7 +564,7 @@ public class DefaultArtifactResolver
             try
             {
                 Thread.currentThread().setContextClassLoader( classLoader );
-                resolve( artifact, request, transferListener, false );
+                resolve( artifact, remoteRepositories, session );
             }
             catch ( ArtifactNotFoundException anfe )
             {

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Aug 24 22:46:07 2010
@@ -94,6 +94,7 @@ public class DefaultMavenProjectBuilder
         MavenSession session = legacySupport.getSession();
         if ( session != null )
         {
+            request.setRepositorySession( session.getRepositorySession() );
             request.setOffline( session.isOffline() );
             request.setSystemProperties( session.getSystemProperties() );
             if ( request.getUserProperties().isEmpty() )
@@ -108,7 +109,6 @@ public class DefaultMavenProjectBuilder
                 request.setMirrors( req.getMirrors() );
                 request.setProxies( req.getProxies() );
                 request.setRemoteRepositories( req.getRemoteRepositories() );
-                request.setTransferListener( req.getTransferListener() );
                 request.setForceUpdate( req.isUpdateSnapshots() );
             }
         }

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/DefaultLegacyArtifactCollector.java Tue Aug 24 22:46:07 2010
@@ -83,7 +83,6 @@ public class DefaultLegacyArtifactCollec
             request.setServers( session.getRequest().getServers() );
             request.setMirrors( session.getRequest().getMirrors() );
             request.setProxies( session.getRequest().getProxies() );
-            request.setTransferListener( session.getRequest().getTransferListener() );
         }
     }
 

Modified: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java Tue Aug 24 22:46:07 2010
@@ -29,11 +29,33 @@ import java.util.List;
 
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.repository.legacy.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.DefaultMavenExecutionResult;
+import org.apache.maven.execution.MavenSession;
 import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.collection.DependencyGraphTransformer;
+import org.sonatype.aether.collection.DependencyManager;
+import org.sonatype.aether.collection.DependencySelector;
+import org.sonatype.aether.collection.DependencyTraverser;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
+import org.sonatype.aether.util.graph.manager.ClassicDependencyManager;
+import org.sonatype.aether.util.graph.selector.AndDependencySelector;
+import org.sonatype.aether.util.graph.selector.ExclusionDependencySelector;
+import org.sonatype.aether.util.graph.selector.OptionalDependencySelector;
+import org.sonatype.aether.util.graph.selector.ScopeDependencySelector;
+import org.sonatype.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
+import org.sonatype.aether.util.graph.transformer.NearestVersionConflictResolver;
+import org.sonatype.aether.util.graph.transformer.ConflictMarker;
+import org.sonatype.aether.util.graph.transformer.JavaDependencyContextRefiner;
+import org.sonatype.aether.util.graph.transformer.JavaEffectiveScopeCalculator;
+import org.sonatype.aether.util.graph.traverser.FatArtifactTraverser;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -53,6 +75,14 @@ public abstract class AbstractArtifactCo
         super.setUp();
         artifactFactory = lookup( ArtifactFactory.class);        
         artifactRepositoryFactory = lookup( ArtifactRepositoryFactory.class );
+
+        RepositorySystemSession repoSession = initRepoSession();
+        MavenSession session =
+            new MavenSession( getContainer(), repoSession, new DefaultMavenExecutionRequest(),
+                              new DefaultMavenExecutionResult() );
+
+        LegacySupport legacySupport = lookup(LegacySupport.class);
+        legacySupport.setSession( session );
     }
     
     @Override
@@ -297,4 +327,33 @@ public abstract class AbstractArtifactCo
             }
         }
     }
+
+    protected RepositorySystemSession initRepoSession()
+        throws Exception
+    {
+        DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
+        session.setIgnoreMissingArtifactDescriptor( true );
+        session.setIgnoreInvalidArtifactDescriptor( true );
+        DependencyTraverser depTraverser = new FatArtifactTraverser();
+        session.setDependencyTraverser( depTraverser );
+
+        DependencyManager depManager = new ClassicDependencyManager();
+        session.setDependencyManager( depManager );
+
+        DependencySelector depFilter =
+            new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ),
+                                       new OptionalDependencySelector(), new ExclusionDependencySelector() );
+        session.setDependencySelector( depFilter );
+
+        DependencyGraphTransformer transformer =
+            new ChainedDependencyGraphTransformer( new ConflictMarker(), new JavaEffectiveScopeCalculator(),
+                                                   new NearestVersionConflictResolver(),
+                                                   new JavaDependencyContextRefiner() );
+        session.setDependencyGraphTransformer( transformer );
+
+        session.setLocalRepositoryManager( new SimpleLocalRepositoryManager( localRepository().getBasedir() ) );
+
+        return session;
+    }
+
 }

Modified: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java Tue Aug 24 22:46:07 2010
@@ -27,6 +27,7 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.model.building.ModelBuildingException;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.repository.RepositorySystem;
+import org.apache.maven.repository.internal.MavenRepositorySystemSession;
 import org.codehaus.plexus.PlexusTestCase;
 
 /**
@@ -129,6 +130,7 @@ public abstract class AbstractMavenProje
         configuration.setRemoteRepositories( Arrays.asList( new ArtifactRepository[] {} ) );
         configuration.setProcessPlugins( false );
         configuration.setResolveDependencies( true );
+        initRepoSession( configuration );
 
         try
         {
@@ -157,8 +159,17 @@ public abstract class AbstractMavenProje
     {
         ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest();
         configuration.setLocalRepository( getLocalRepository() );
+        initRepoSession( configuration );
 
         return projectBuilder.build( pom, configuration ).getProject();
     }
 
+    protected void initRepoSession( ProjectBuildingRequest request )
+    {
+        File localRepo = new File( request.getLocalRepository().getBasedir() );
+        MavenRepositorySystemSession session = new MavenRepositorySystemSession();
+        session.setLocalRepositoryManager( new LegacyLocalRepositoryManager( localRepo ) );
+        request.setRepositorySession( session );
+    }
+
 }

Added: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java (added)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,82 @@
+package org.apache.maven.project;
+
+/*
+ * 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.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.codehaus.plexus.component.annotations.Component;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.impl.ArtifactResolver;
+import org.sonatype.aether.impl.internal.DefaultArtifactResolver;
+import org.sonatype.aether.resolution.ArtifactRequest;
+import org.sonatype.aether.resolution.ArtifactResolutionException;
+import org.sonatype.aether.resolution.ArtifactResult;
+import org.sonatype.aether.transfer.ArtifactNotFoundException;
+
+/**
+ * @author Benjamin Bentmann
+ */
+@Component( role = ArtifactResolver.class, hint = "classpath" )
+public class ClasspathArtifactResolver
+    extends DefaultArtifactResolver
+{
+
+    public List<ArtifactResult> resolveArtifacts( RepositorySystemSession session,
+                                                  Collection<? extends ArtifactRequest> requests )
+        throws ArtifactResolutionException
+    {
+        List<ArtifactResult> results = new ArrayList<ArtifactResult>();
+
+        for ( ArtifactRequest request : requests )
+        {
+            ArtifactResult result = new ArtifactResult( request );
+            results.add( result );
+
+            Artifact artifact = request.getArtifact();
+            if ( "maven-test".equals( artifact.getGroupId() ) )
+            {
+                String scope = artifact.getArtifactId().substring( "scope-".length() );
+
+                try
+                {
+                    artifact = artifact.setFile( ProjectClasspathTest.getFileForClasspathResource( ProjectClasspathTest.dir
+                        + "transitive-" + scope + "-dep.xml" ) );
+                    result.setArtifact( artifact );
+                }
+                catch ( FileNotFoundException e )
+                {
+                    throw new IllegalStateException( "Missing test POM for " + artifact );
+                }
+            }
+            else
+            {
+                result.addException( new ArtifactNotFoundException( artifact, null ) );
+                throw new ArtifactResolutionException( results );
+            }
+        }
+
+        return results;
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ClasspathArtifactResolver.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java Tue Aug 24 22:46:07 2010
@@ -26,17 +26,9 @@ import java.util.Set;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.lifecycle.*;
-import org.apache.maven.lifecycle.LifecycleExecutionException;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
-import org.apache.maven.plugin.InvalidPluginDescriptorException;
 import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.MojoNotFoundException;
-import org.apache.maven.plugin.PluginDescriptorParsingException;
-import org.apache.maven.plugin.PluginNotFoundException;
-import org.apache.maven.plugin.PluginResolutionException;
-import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException;
-import org.apache.maven.plugin.version.PluginVersionResolutionException;
 
 /**
  * A stub implementation that assumes an empty lifecycle to bypass interaction with the plugin manager and to avoid
@@ -49,8 +41,6 @@ public class EmptyLifecycleExecutor
 {
 
     public MavenExecutionPlan calculateExecutionPlan( MavenSession session, String... tasks )
-        throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
-        MojoNotFoundException
     {
         return new MavenExecutionPlan(null, null, null, new DefaultLifecycles() );
     }
@@ -102,14 +92,10 @@ public class EmptyLifecycleExecutor
     }
 
     public void calculateForkedExecutions( MojoExecution mojoExecution, MavenSession session )
-        throws MojoNotFoundException, PluginNotFoundException, PluginResolutionException,
-        PluginDescriptorParsingException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException,
-        LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException
     {
     }
 
     public List<MavenProject> executeForkedExecutions( MojoExecution mojoExecution, MavenSession session )
-        throws LifecycleExecutionException
     {
         return Collections.emptyList();
     }

Added: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java (added)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,78 @@
+package org.apache.maven.project;
+
+/*
+ * 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.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.apache.maven.lifecycle.LifeCyclePluginAnalyzer;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginExecution;
+
+/**
+ * @author Benjamin Bentmann
+ */
+public class EmptyLifecyclePluginAnalyzer
+    implements LifeCyclePluginAnalyzer
+{
+    public Set<Plugin> getPluginsBoundByDefaultToAllLifecycles( String packaging )
+    {
+        Set<Plugin> plugins;
+
+        // NOTE: The upper-case packaging name is intentional, that's a special hinting mode used for certain tests
+        if ( "JAR".equals( packaging ) )
+        {
+            plugins = new LinkedHashSet<Plugin>();
+
+            plugins.add( newPlugin( "maven-compiler-plugin", "compile", "testCompile" ) );
+            plugins.add( newPlugin( "maven-resources-plugin", "resources", "testResources" ) );
+            plugins.add( newPlugin( "maven-surefire-plugin", "test" ) );
+            plugins.add( newPlugin( "maven-jar-plugin", "jar" ) );
+            plugins.add( newPlugin( "maven-install-plugin", "install" ) );
+            plugins.add( newPlugin( "maven-deploy-plugin", "deploy" ) );
+        }
+        else
+        {
+            plugins = Collections.emptySet();
+        }
+
+        return plugins;
+    }
+
+    private Plugin newPlugin( String artifactId, String... goals )
+    {
+        Plugin plugin = new Plugin();
+
+        plugin.setGroupId( "org.apache.maven.plugins" );
+        plugin.setArtifactId( artifactId );
+
+        for ( String goal : goals )
+        {
+            PluginExecution pluginExecution = new PluginExecution();
+            pluginExecution.setId( "default-" + goal );
+            pluginExecution.addGoal( goal );
+            plugin.addExecution( pluginExecution );
+        }
+
+        return plugin;
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/EmptyLifecyclePluginAnalyzer.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java (added)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,59 @@
+package org.apache.maven.project;
+
+/*
+ * 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 org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+
+/**
+ * @author Benjamin Bentmann
+ */
+public class LegacyLocalRepositoryManager
+    extends SimpleLocalRepositoryManager
+{
+
+    public LegacyLocalRepositoryManager( File basedir )
+    {
+        super( basedir );
+    }
+
+    public String getPathForLocalArtifact( Artifact artifact )
+    {
+        StringBuilder path = new StringBuilder( 128 );
+
+        path.append( artifact.getGroupId() ).append( '/' );
+
+        path.append( artifact.getExtension() ).append( 's' ).append( '/' );
+
+        path.append( artifact.getArtifactId() ).append( '-' ).append( artifact.getVersion() );
+
+        if ( artifact.getClassifier().length() > 0 )
+        {
+            path.append( '-' ).append( artifact.getClassifier() );
+        }
+
+        path.append( '.' ).append( artifact.getExtension() );
+
+        return path.toString();
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/LegacyLocalRepositoryManager.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java Tue Aug 24 22:46:07 2010
@@ -24,6 +24,9 @@ import java.util.Iterator;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.repository.RepositorySystem;
+import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
+import org.sonatype.aether.impl.ArtifactDescriptorReader;
+import org.sonatype.aether.impl.ArtifactResolver;
 
 public class ProjectClasspathTest
     extends AbstractMavenProjectTestCase
@@ -33,11 +36,15 @@ public class ProjectClasspathTest
     public void setUp()
         throws Exception
     {
+        ArtifactResolver resolver = lookup( ArtifactResolver.class, "classpath" );
+        DefaultArtifactDescriptorReader pomReader = (DefaultArtifactDescriptorReader)lookup(ArtifactDescriptorReader.class);
+        pomReader.setArtifactResolver( resolver );
+
         projectBuilder = lookup( ProjectBuilder.class, "classpath" );
 
         // the metadata source looks up the default impl, so we have to trick it
         getContainer().addComponent( projectBuilder, ProjectBuilder.class, "default" );
-        
+
         repositorySystem = lookup( RepositorySystem.class );        
     }