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 [4/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/test/java/org/apache/maven/repository/LegacyRepositorySystemTest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/LegacyRepositorySystemTest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/LegacyRepositorySystemTest.java (original)
+++ maven/maven-3/trunk/maven-compat/src/test/java/org/apache/maven/repository/LegacyRepositorySystemTest.java Tue Aug 24 22:46:07 2010
@@ -24,11 +24,17 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.DefaultMavenExecutionResult;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.RepositoryPolicy;
+import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.repository.RepositorySystem;
 import org.codehaus.plexus.PlexusTestCase;
+import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
+import org.sonatype.aether.util.DefaultRepositorySystemSession;
 
 /**
  * Tests {@link LegacyRepositorySystem}.
@@ -107,6 +113,12 @@ public class LegacyRepositorySystemTest
             .setRemoteRepositories( getRemoteRepositories() )
             .setLocalRepository( getLocalRepository() );            
                             
+        DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
+        session.setLocalRepositoryManager( new SimpleLocalRepositoryManager( request.getLocalRepository().getBasedir() ) );
+        LegacySupport legacySupport = lookup( LegacySupport.class );
+        legacySupport.setSession( new MavenSession( getContainer(), session, new DefaultMavenExecutionRequest(),
+                                                    new DefaultMavenExecutionResult() ) );
+
         ArtifactResolutionResult result = repositorySystem.resolve( request );
         resolutionErrorHandler.throwErrors( request, result );        
         assertEquals( 2, result.getArtifacts().size() );

Modified: maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/artifact/resolver/ArtifactResolverTest.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/artifact/resolver/ArtifactResolverTest.xml?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/artifact/resolver/ArtifactResolverTest.xml (original)
+++ maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/artifact/resolver/ArtifactResolverTest.xml Tue Aug 24 22:46:07 2010
@@ -31,16 +31,6 @@ under the License.
           <field-name>logger</field-name>
         </requirement>
         <requirement>
-          <role>org.apache.maven.repository.legacy.WagonManager</role>
-          <role-hint>default</role-hint>
-          <field-name>wagonManager</field-name>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.repository.legacy.resolver.transform.ArtifactTransformationManager</role>
-          <role-hint>default</role-hint>
-          <field-name>transformationManager</field-name>
-        </requirement>
-        <requirement>
           <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
           <role-hint>default</role-hint>
           <field-name>artifactFactory</field-name>
@@ -66,15 +56,14 @@ under the License.
           <field-name>container</field-name>
         </requirement>
         <requirement>
-          <role>org.apache.maven.repository.LocalRepositoryMaintainer</role>
+          <role>org.apache.maven.plugin.LegacySupport</role>
           <role-hint>default</role-hint>
-          <field-name>localRepositoryMaintainer</field-name>
-          <optional>true</optional>
+          <field-name>legacySupport</field-name>
         </requirement>
         <requirement>
-          <role>org.apache.maven.plugin.LegacySupport</role>
+          <role>org.sonatype.aether.RepositorySystem</role>
           <role-hint>default</role-hint>
-          <field-name>legacySupport</field-name>
+          <field-name>repoSystem</field-name>
         </requirement>
       </requirements>
     </component>

Modified: maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/project/AbstractMavenProjectTestCase.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/project/AbstractMavenProjectTestCase.xml?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/project/AbstractMavenProjectTestCase.xml (original)
+++ maven/maven-3/trunk/maven-compat/src/test/resources/org/apache/maven/project/AbstractMavenProjectTestCase.xml Tue Aug 24 22:46:07 2010
@@ -2,8 +2,8 @@
 <plexus>
   <components>
     <component>
-      <role>org.apache.maven.lifecycle.LifecycleExecutor</role>
-      <implementation>org.apache.maven.project.EmptyLifecycleExecutor</implementation>
+      <role>org.apache.maven.lifecycle.LifeCyclePluginAnalyzer</role>
+      <implementation>org.apache.maven.project.EmptyLifecyclePluginAnalyzer</implementation>
     </component>
   </components>
 </plexus>

Modified: maven/maven-3/trunk/maven-core/pom.xml
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/pom.xml?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/pom.xml (original)
+++ maven/maven-3/trunk/maven-core/pom.xml Tue Aug 24 22:46:07 2010
@@ -53,6 +53,15 @@
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model-builder</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-aether-provider</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.aether</groupId>
+      <artifactId>aether-impl</artifactId>
+      <version>${aetherVersion}</version>
+    </dependency>
     <!-- Plexus -->
     <dependency>
       <groupId>org.sonatype.spice</groupId>

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java Tue Aug 24 22:46:07 2010
@@ -19,6 +19,8 @@ package org.apache.maven;
  * under the License.
  */
 
+import java.util.Set;
+
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 
 public interface ArtifactFilterManager
@@ -39,4 +41,7 @@ public interface ArtifactFilterManager
      * @param artifactId
      */
     void excludeArtifact( String artifactId );
-}
\ No newline at end of file
+
+    Set<String> getCoreArtifactExcludes();
+
+}

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java Tue Aug 24 22:46:07 2010
@@ -59,6 +59,7 @@ public class DefaultArtifactFilterManage
         artifacts.add( "plexus:plexus-container-default" );
         artifacts.add( "org.sonatype.spice:spice-inject-plexus" );
         artifacts.add( "org.apache.maven:maven-artifact" );
+        artifacts.add( "org.apache.maven:maven-aether-provider" );
         artifacts.add( "org.apache.maven:maven-artifact-manager" );
         artifacts.add( "org.apache.maven:maven-compat" );
         artifacts.add( "org.apache.maven:maven-core" );
@@ -78,6 +79,8 @@ public class DefaultArtifactFilterManage
         artifacts.add( "org.apache.maven:maven-settings-builder" );
         artifacts.add( "org.apache.maven:maven-toolchain" );
         artifacts.add( "org.apache.maven.wagon:wagon-provider-api" );
+        artifacts.add( "org.sonatype.aether:aether-api" );
+        artifacts.add( "org.sonatype.aether:aether-spi" );
 
         /*
          * NOTE: Don't exclude the wagons or any of their dependencies (apart from the wagon API). This would otherwise
@@ -120,18 +123,11 @@ public class DefaultArtifactFilterManage
     /**
      * Returns the artifact filter for the standard core artifacts.
      *
-     * @see org.apache.maven.ArtifactFilterManager#getExtensionArtifactFilter()
+     * @see org.apache.maven.ArtifactFilterManager#getExtensionDependencyFilter()
      */
     public ArtifactFilter getCoreArtifactFilter()
     {
-        Set<String> excludes = new LinkedHashSet<String>( DEFAULT_EXCLUSIONS );
-
-        for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
-        {
-            delegate.addCoreExcludes( excludes );
-        }
-
-        return new ExclusionSetFilter( excludes );
+        return new ExclusionSetFilter( getCoreArtifactExcludes() );
     }
 
     private List<ArtifactFilterManagerDelegate> getDelegates()
@@ -154,4 +150,16 @@ public class DefaultArtifactFilterManage
         excludedArtifacts.add( artifactId );
     }
 
+    public Set<String> getCoreArtifactExcludes()
+    {
+        Set<String> excludes = new LinkedHashSet<String>( DEFAULT_EXCLUSIONS );
+
+        for ( ArtifactFilterManagerDelegate delegate : getDelegates() )
+        {
+            delegate.addCoreExcludes( excludes );
+        }
+
+        return excludes;
+    }
+
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Tue Aug 24 22:46:07 2010
@@ -1,22 +1,18 @@
 package org.apache.maven;
 
 /*
- * 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;
@@ -33,6 +29,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.execution.DefaultMavenExecutionResult;
 import org.apache.maven.execution.ExecutionEvent;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -47,6 +44,7 @@ import org.apache.maven.model.building.M
 import org.apache.maven.model.building.ModelProblemUtils;
 import org.apache.maven.model.building.ModelSource;
 import org.apache.maven.model.building.UrlModelSource;
+import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
@@ -56,6 +54,13 @@ import org.apache.maven.project.ProjectB
 import org.apache.maven.project.ProjectSorter;
 import org.apache.maven.repository.DelegatingLocalArtifactRepository;
 import org.apache.maven.repository.LocalRepositoryNotAccessibleException;
+import org.apache.maven.settings.Mirror;
+import org.apache.maven.settings.Proxy;
+import org.apache.maven.settings.Server;
+import org.apache.maven.settings.building.SettingsProblem;
+import org.apache.maven.settings.crypto.DefaultSettingsDecryptionRequest;
+import org.apache.maven.settings.crypto.SettingsDecrypter;
+import org.apache.maven.settings.crypto.SettingsDecryptionResult;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -63,11 +68,39 @@ import org.codehaus.plexus.component.rep
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
+import org.sonatype.aether.RepositoryEvent;
+import org.sonatype.aether.RepositorySystem;
+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.repository.Authentication;
+import org.sonatype.aether.repository.LocalRepository;
+import org.sonatype.aether.repository.RepositoryPolicy;
+import org.sonatype.aether.repository.WorkspaceReader;
+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;
+import org.sonatype.aether.util.listener.AbstractRepositoryListener;
+import org.sonatype.aether.util.repository.ChainedWorkspaceReader;
+import org.sonatype.aether.util.repository.DefaultAuthenticationSelector;
+import org.sonatype.aether.util.repository.DefaultMirrorSelector;
+import org.sonatype.aether.util.repository.DefaultProxySelector;
 
 /**
  * @author Jason van Zyl
  */
-@Component( role = Maven.class )
+@Component(role = Maven.class)
 public class DefaultMaven
     implements Maven
 {
@@ -78,7 +111,6 @@ public class DefaultMaven
     @Requirement
     protected ProjectBuilder projectBuilder;
 
-
     @Requirement
     private LifecycleStarter lifecycleStarter;
 
@@ -91,6 +123,21 @@ public class DefaultMaven
     @Requirement
     private ExecutionEventCatapult eventCatapult;
 
+    @Requirement
+    private ArtifactHandlerManager artifactHandlerManager;
+
+    @Requirement( optional = true, hint = "ide" )
+    private WorkspaceReader workspaceRepository;
+
+    @Requirement
+    private RepositorySystem repoSystem;
+
+    @Requirement
+    private SettingsDecrypter settingsDecrypter;
+
+    @Requirement
+    private LegacySupport legacySupport;
+
     public MavenExecutionResult execute( MavenExecutionRequest request )
     {
         MavenExecutionResult result;
@@ -113,22 +160,25 @@ public class DefaultMaven
                 processResult( new DefaultMavenExecutionResult(),
                                new InternalErrorException( "Internal error: " + e, e ) );
         }
+        finally
+        {
+            legacySupport.setSession( null );
+        }
 
         return result;
     }
 
-    @SuppressWarnings( { "ThrowableInstanceNeverThrown", "ThrowableResultOfMethodCallIgnored" } )
+    @SuppressWarnings({"ThrowableInstanceNeverThrown", "ThrowableResultOfMethodCallIgnored"})
     private MavenExecutionResult doExecute( MavenExecutionRequest request )
     {
         //TODO: Need a general way to inject standard properties
         if ( request.getStartTime() != null )
         {
-            request.getSystemProperties().put( "${build.timestamp}",
-                                               new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( request.getStartTime() ) );
-        }
-
+            request.getSystemProperties().put( "${build.timestamp}", new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( request.getStartTime() ) );
+        }        
+        
         request.setStartTime( new Date() );
-
+        
         MavenExecutionResult result = new DefaultMavenExecutionResult();
 
         try
@@ -142,10 +192,13 @@ public class DefaultMaven
 
         DelegatingLocalArtifactRepository delegatingLocalArtifactRepository =
             new DelegatingLocalArtifactRepository( request.getLocalRepository() );
+        
+        request.setLocalRepository( delegatingLocalArtifactRepository );        
 
-        request.setLocalRepository( delegatingLocalArtifactRepository );
+        DefaultRepositorySystemSession repoSession = (DefaultRepositorySystemSession) newRepositorySession( request );
 
-        MavenSession session = new MavenSession( container, request, result );
+        MavenSession session = new MavenSession( container, repoSession, request, result );
+        legacySupport.setSession( session );
 
         try
         {
@@ -161,12 +214,14 @@ public class DefaultMaven
 
         eventCatapult.fire( ExecutionEvent.Type.ProjectDiscoveryStarted, session, null );
 
-        //TODO: optimize for the single project or no project
+        request.getProjectBuildingRequest().setRepositorySession( session.getRepositorySession() );
 
+        //TODO: optimize for the single project or no project
+        
         List<MavenProject> projects;
         try
         {
-            projects = getProjectsForMavenReactor( request );
+            projects = getProjectsForMavenReactor( request );                                                
         }
         catch ( ProjectBuildingException e )
         {
@@ -176,20 +231,23 @@ public class DefaultMaven
         session.setProjects( projects );
 
         result.setTopologicallySortedProjects( session.getProjects() );
-
+        
         result.setProject( session.getTopLevelProject() );
 
         try
         {
             Map<String, MavenProject> projectMap;
             projectMap = getProjectMap( session.getProjects() );
-
+    
             // Desired order of precedence for local artifact repositories
             //
             // Reactor
             // Workspace
             // User Local Repository
-            delegatingLocalArtifactRepository.setBuildReactor( new ReactorArtifactRepository( projectMap ) );
+            ReactorReader reactorRepository = new ReactorReader( projectMap );
+
+            repoSession.setWorkspaceReader( ChainedWorkspaceReader.newInstance( reactorRepository,
+                                                                                repoSession.getWorkspaceReader() ) );
         }
         catch ( org.apache.maven.DuplicateProjectException e )
         {
@@ -226,7 +284,7 @@ public class DefaultMaven
             session.setProjectDependencyGraph( projectDependencyGraph );
         }
         catch ( CycleDetectedException e )
-        {
+        {            
             String message = "The projects in the reactor contain a cyclic reference: " + e.getMessage();
 
             ProjectCycleException error = new ProjectCycleException( message, e );
@@ -261,7 +319,133 @@ public class DefaultMaven
         return result;
     }
 
-    @SuppressWarnings( { "ResultOfMethodCallIgnored" } )
+    public RepositorySystemSession newRepositorySession( MavenExecutionRequest request )
+    {
+        DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
+
+        session.setCache( request.getRepositoryCache() );
+
+        session.setIgnoreInvalidArtifactDescriptor( true ).setIgnoreMissingArtifactDescriptor( true );
+
+        session.setUserProps( request.getUserProperties() );
+        session.setSystemProps( request.getSystemProperties() );
+        session.setConfigProps( request.getSystemProperties() );
+
+        session.setOffline( request.isOffline() );
+        session.setChecksumPolicy( request.getGlobalChecksumPolicy() );
+        session.setUpdatePolicy( request.isUpdateSnapshots() ? RepositoryPolicy.UPDATE_POLICY_ALWAYS : null );
+
+        session.setNotFoundCachingEnabled( !request.isUpdateSnapshots() );
+        session.setTransferErrorCachingEnabled( !request.isUpdateSnapshots() );
+
+        session.setArtifactTypeRegistry( RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ) );
+
+        LocalRepository localRepo = new LocalRepository( request.getLocalRepository().getBasedir() );
+        session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( localRepo ) );
+
+        session.setWorkspaceReader( workspaceRepository );
+
+        DefaultSettingsDecryptionRequest decrypt = new DefaultSettingsDecryptionRequest();
+        decrypt.setProxies( request.getProxies() );
+        decrypt.setServers( request.getServers() );
+        SettingsDecryptionResult decrypted = settingsDecrypter.decrypt( decrypt );
+
+        if ( logger.isDebugEnabled() )
+        {
+            for ( SettingsProblem problem : decrypted.getProblems() )
+            {
+                logger.debug( problem.getMessage(), problem.getException() );
+            }
+        }
+
+        DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
+        for ( Mirror mirror : request.getMirrors() )
+        {
+            mirrorSelector.add( mirror.getId(), mirror.getUrl(), mirror.getLayout(), false, mirror.getMirrorOf(),
+                                mirror.getMirrorOfLayouts() );
+        }
+        session.setMirrorSelector( mirrorSelector );
+
+        DefaultProxySelector proxySelector = new DefaultProxySelector();
+        for ( Proxy proxy : decrypted.getProxies() )
+        {
+            Authentication proxyAuth = new Authentication( proxy.getUsername(), proxy.getPassword() );
+            proxySelector.add( new org.sonatype.aether.repository.Proxy( proxy.getProtocol(), proxy.getHost(), proxy.getPort(),
+                                                                proxyAuth ), proxy.getNonProxyHosts() );
+        }
+        session.setProxySelector( proxySelector );
+
+        DefaultAuthenticationSelector authSelector = new DefaultAuthenticationSelector();
+        for ( Server server : decrypted.getServers() )
+        {
+            Authentication auth =
+                new Authentication( server.getUsername(), server.getPassword(), server.getPrivateKey(),
+                                    server.getPassphrase() );
+            authSelector.add( server.getId(), auth );
+        }
+        session.setAuthenticationSelector( authSelector );
+
+        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.setTransferListener( request.getTransferListener() );
+
+        session.setRepositoryListener( new AbstractRepositoryListener()
+        {
+            @Override
+            public void artifactInstalling( RepositoryEvent event )
+            {
+                logger.info( "Installing " + event.getArtifact().getFile() + " to " + event.getFile() );
+            }
+
+            @Override
+            public void metadataInstalling( RepositoryEvent event )
+            {
+                logger.debug( "Installing " + event.getMetadata() + " to " + event.getFile() );
+            }
+
+            @Override
+            public void artifactDescriptorInvalid( RepositoryEvent event )
+            {
+                if ( logger.isDebugEnabled() )
+                {
+                    logger.warn( "The POM for " + event.getArtifact() + " is invalid"
+                        + ", transitive dependencies (if any) will not be available: "
+                        + event.getException().getMessage() );
+                }
+                else
+                {
+                    logger.warn( "The POM for " + event.getArtifact() + " is invalid"
+                        + ", transitive dependencies (if any) will not be available"
+                        + ", enable debug logging for more details" );
+                }
+            }
+
+            @Override
+            public void artifactDescriptorMissing( RepositoryEvent event )
+            {
+                logger.warn( "The POM for " + event.getArtifact() + " is missing, no dependency information available" );
+            }
+        } );
+
+        return session;
+    }
+
+    @SuppressWarnings({"ResultOfMethodCallIgnored"})
     private void validateLocalRepository( MavenExecutionRequest request )
         throws LocalRepositoryNotAccessibleException
     {
@@ -334,7 +518,7 @@ public class DefaultMaven
 
         return result;
     }
-
+    
     private List<MavenProject> getProjectsForMavenReactor( MavenExecutionRequest request )
         throws ProjectBuildingException
     {
@@ -352,8 +536,8 @@ public class DefaultMaven
             request.setProjectPresent( false );
             return projects;
         }
-
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
+        
+        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );        
         collectProjects( projects, files, request );
         return projects;
     }
@@ -405,8 +589,7 @@ public class DefaultMaven
     {
         ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
 
-        List<ProjectBuildingResult> results =
-            projectBuilder.build( files, request.isRecursive(), projectBuildingRequest );
+        List<ProjectBuildingResult> results = projectBuilder.build( files, request.isRecursive(), projectBuildingRequest );
 
         boolean problems = false;
 
@@ -423,8 +606,7 @@ public class DefaultMaven
                 for ( ModelProblem problem : result.getProblems() )
                 {
                     String location = ModelProblemUtils.formatLocation( problem, result.getProjectId() );
-                    logger.warn( problem.getMessage()
-                                 + ( StringUtils.isNotEmpty( location ) ? " @ " + location : "" ) );
+                    logger.warn( problem.getMessage() + ( StringUtils.isNotEmpty( location ) ? " @ " + location : "" ) );
                 }
 
                 problems = true;

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/DefaultProjectDependenciesResolver.java Tue Aug 24 22:46:07 2010
@@ -42,7 +42,7 @@ import org.apache.maven.repository.Repos
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
-@Component( role = ProjectDependenciesResolver.class )
+@Component(role = ProjectDependenciesResolver.class)
 public class DefaultProjectDependenciesResolver
     implements ProjectDependenciesResolver
 {
@@ -97,15 +97,15 @@ public class DefaultProjectDependenciesR
             return resolved;
         }
 
-        if ( ( scopesToCollect == null || scopesToCollect.isEmpty() )
-            && ( scopesToResolve == null || scopesToResolve.isEmpty() ) )
+        if ( ( scopesToCollect == null || scopesToCollect.isEmpty() ) &&
+            ( scopesToResolve == null || scopesToResolve.isEmpty() ) )
         {
             return resolved;
         }
 
         /*
 
-        Logic for transitive global exclusions
+        Logic for transitve global exclusions
 
         List<String> exclusions = new ArrayList<String>();
 
@@ -126,8 +126,7 @@ public class DefaultProjectDependenciesR
 
         if ( ! exclusions.isEmpty() )
         {
-            filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ),
-                                                                                 scopeFilter } ) );
+            filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ), scopeFilter } ) );
         }
         else
         {
@@ -141,11 +140,10 @@ public class DefaultProjectDependenciesR
         collectionScopeFilter = new CumulativeScopeArtifactFilter( collectionScopeFilter, resolutionScopeFilter );
 
         ArtifactResolutionRequest request =
-            new ArtifactResolutionRequest().setResolveRoot( false ).setResolveTransitively( true )
-                .setCollectionFilter( collectionScopeFilter ).setResolutionFilter( resolutionScopeFilter )
-                .setLocalRepository( session.getLocalRepository() ).setOffline( session.isOffline() )
-                .setForceUpdate( session.getRequest().isUpdateSnapshots() ).setCache( session.getRepositoryCache() );
-        request.setTransferListener( session.getRequest().getTransferListener() );
+            new ArtifactResolutionRequest().setResolveRoot( false ).setResolveTransitively( true ).setCollectionFilter(
+                collectionScopeFilter ).setResolutionFilter( resolutionScopeFilter ).setLocalRepository(
+                session.getLocalRepository() ).setOffline( session.isOffline() ).setForceUpdate(
+                session.getRequest().isUpdateSnapshots() );
         request.setServers( session.getRequest().getServers() );
         request.setMirrors( session.getRequest().getMirrors() );
         request.setProxies( session.getRequest().getProxies() );

Added: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java (added)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,251 @@
+package org.apache.maven;
+
+/*
+ * 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 org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.project.MavenProject;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.repository.WorkspaceReader;
+import org.sonatype.aether.repository.WorkspaceRepository;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * An implementation of a workspace reader that knows how to search the Maven reactor for artifacts.
+ * 
+ * @author Jason van Zyl
+ */
+class ReactorReader
+    implements WorkspaceReader
+{
+
+    private Map<String, MavenProject> projectsByGAV;
+
+    private Map<String, List<MavenProject>> projectsByGA;
+
+    private WorkspaceRepository repository;
+
+    @SuppressWarnings( { "ConstantConditions" } )
+    public ReactorReader( Map<String, MavenProject> reactorProjects )
+    {
+        projectsByGAV = reactorProjects;
+
+        projectsByGA = new HashMap<String, List<MavenProject>>( reactorProjects.size() * 2 );
+        for ( MavenProject project : reactorProjects.values() )
+        {
+            String key = ArtifactUtils.versionlessKey( project.getGroupId(), project.getArtifactId() );
+
+            List<MavenProject> projects = projectsByGA.get( key );
+
+            if ( projects == null )
+            {
+                projects = new ArrayList<MavenProject>( 1 );
+                projectsByGA.put( key, projects );
+            }
+
+            projects.add( project );
+        }
+
+        repository = new WorkspaceRepository( "reactor", new HashSet<String>( projectsByGAV.keySet() ) );
+    }
+
+    private File find( MavenProject project, Artifact artifact )
+    {
+        if ( "pom".equals( artifact.getExtension() ) )
+        {
+            return project.getFile();
+        }
+
+        org.apache.maven.artifact.Artifact projectArtifact = findMatchingArtifact( project, artifact );
+
+        if ( hasArtifactFileFromPackagePhase( projectArtifact ) )
+        {
+            return projectArtifact.getFile();
+        }
+        else if ( !project.hasCompletedPhase( "package" ) )
+        {
+            if ( isTestArtifact( artifact ) )
+            {
+                if ( project.hasCompletedPhase( "test-compile" ) )
+                {
+                    return new File( project.getBuild().getTestOutputDirectory() );
+                }
+            }
+            else
+            {
+                if ( project.hasCompletedPhase( "compile" ) )
+                {
+                    return new File( project.getBuild().getOutputDirectory() );
+                }
+            }
+        }
+
+        // The fall-through indicates that the artifact cannot be found;
+        // for instance if package produced nothing or classifier problems.
+        return null;
+    }
+
+    private boolean hasArtifactFileFromPackagePhase( org.apache.maven.artifact.Artifact projectArtifact )
+    {
+        return projectArtifact != null && projectArtifact.getFile() != null && projectArtifact.getFile().exists();
+    }
+
+    /**
+     * Tries to resolve the specified artifact from the artifacts of the given project.
+     * 
+     * @param project The project to try to resolve the artifact from, must not be <code>null</code>.
+     * @param requestedArtifact The artifact to resolve, must not be <code>null</code>.
+     * @return The matching artifact from the project or <code>null</code> if not found.
+     */
+    private org.apache.maven.artifact.Artifact findMatchingArtifact( MavenProject project, Artifact requestedArtifact )
+    {
+        String requestedRepositoryConflictId = getConflictId( requestedArtifact );
+
+        org.apache.maven.artifact.Artifact mainArtifact = project.getArtifact();
+        if ( requestedRepositoryConflictId.equals( getConflictId( mainArtifact ) ) )
+        {
+            return mainArtifact;
+        }
+
+        Collection<org.apache.maven.artifact.Artifact> attachedArtifacts = project.getAttachedArtifacts();
+        if ( attachedArtifacts != null && !attachedArtifacts.isEmpty() )
+        {
+            for ( org.apache.maven.artifact.Artifact attachedArtifact : attachedArtifacts )
+            {
+                if ( requestedRepositoryConflictId.equals( getConflictId( attachedArtifact ) ) )
+                {
+                    return attachedArtifact;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Gets the repository conflict id of the specified artifact. Unlike the dependency conflict id, the repository
+     * conflict id uses the artifact file extension instead of the artifact type. Hence, the repository conflict id more
+     * closely reflects the identity of artifacts as perceived by a repository.
+     * 
+     * @param artifact The artifact, must not be <code>null</code>.
+     * @return The repository conflict id, never <code>null</code>.
+     */
+    private String getConflictId( org.apache.maven.artifact.Artifact artifact )
+    {
+        StringBuilder buffer = new StringBuilder( 128 );
+        buffer.append( artifact.getGroupId() );
+        buffer.append( ':' ).append( artifact.getArtifactId() );
+        if ( artifact.getArtifactHandler() != null )
+        {
+            buffer.append( ':' ).append( artifact.getArtifactHandler().getExtension() );
+        }
+        else
+        {
+            buffer.append( ':' ).append( artifact.getType() );
+        }
+        if ( artifact.hasClassifier() )
+        {
+            buffer.append( ':' ).append( artifact.getClassifier() );
+        }
+        return buffer.toString();
+    }
+
+    private String getConflictId( Artifact artifact )
+    {
+        StringBuilder buffer = new StringBuilder( 128 );
+        buffer.append( artifact.getGroupId() );
+        buffer.append( ':' ).append( artifact.getArtifactId() );
+        buffer.append( ':' ).append( artifact.getExtension() );
+        if ( artifact.getClassifier().length() > 0 )
+        {
+            buffer.append( ':' ).append( artifact.getClassifier() );
+        }
+        return buffer.toString();
+    }
+
+    /**
+     * Determines whether the specified artifact refers to test classes.
+     * 
+     * @param artifact The artifact to check, must not be {@code null}.
+     * @return {@code true} if the artifact refers to test classes, {@code false} otherwise.
+     */
+    private static boolean isTestArtifact( Artifact artifact )
+    {
+        if ( "test-jar".equals( artifact.getProperty( "type", "" ) ) )
+        {
+            return true;
+        }
+        else if ( "jar".equals( artifact.getExtension() ) && "tests".equals( artifact.getClassifier() ) )
+        {
+            return true;
+        }
+        return false;
+    }
+
+    public File findArtifact( Artifact artifact )
+    {
+        String projectKey = artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getVersion();
+
+        MavenProject project = projectsByGAV.get( projectKey );
+
+        if ( project != null )
+        {
+            return find( project, artifact );
+        }
+
+        return null;
+    }
+
+    public List<String> findVersions( Artifact artifact )
+    {
+        String key = artifact.getGroupId() + ':' + artifact.getArtifactId();
+
+        List<MavenProject> projects = projectsByGA.get( key );
+        if ( projects == null || projects.isEmpty() )
+        {
+            return Collections.emptyList();
+        }
+
+        List<String> versions = new ArrayList<String>();
+
+        for ( MavenProject project : projects )
+        {
+            if ( find( project, artifact ) != null )
+            {
+                versions.add( project.getVersion() );
+            }
+        }
+
+        return Collections.unmodifiableList( versions );
+    }
+
+    public WorkspaceRepository getRepository()
+    {
+        return repository;
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/ReactorReader.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java?rev=988749&view=auto
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java (added)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java Tue Aug 24 22:46:07 2010
@@ -0,0 +1,325 @@
+package org.apache.maven;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.sonatype.aether.artifact.Artifact;
+import org.sonatype.aether.artifact.ArtifactType;
+import org.sonatype.aether.artifact.ArtifactTypeRegistry;
+import org.sonatype.aether.graph.Dependency;
+import org.sonatype.aether.graph.DependencyFilter;
+import org.sonatype.aether.graph.DependencyNode;
+import org.sonatype.aether.graph.Exclusion;
+import org.sonatype.aether.repository.Authentication;
+import org.sonatype.aether.repository.Proxy;
+import org.sonatype.aether.repository.RemoteRepository;
+import org.sonatype.aether.repository.RepositoryPolicy;
+import org.sonatype.aether.util.artifact.ArtifactProperties;
+import org.sonatype.aether.util.artifact.DefaultArtifact;
+import org.sonatype.aether.util.artifact.DefaultArtifactType;
+
+/**
+ * <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 class RepositoryUtils
+{
+
+    private static String nullify( String string )
+    {
+        return ( string == null || string.length() <= 0 ) ? null : string;
+    }
+
+    private static org.apache.maven.artifact.Artifact toArtifact( Dependency dependency )
+    {
+        if ( dependency == null )
+        {
+            return null;
+        }
+
+        org.apache.maven.artifact.Artifact result = toArtifact( dependency.getArtifact() );
+        result.setScope( dependency.getScope() );
+        result.setOptional( dependency.isOptional() );
+
+        return result;
+    }
+
+    public static org.apache.maven.artifact.Artifact toArtifact( Artifact artifact )
+    {
+        if ( artifact == null )
+        {
+            return null;
+        }
+
+        ArtifactHandler handler = newHandler( artifact );
+
+        /*
+         * NOTE: From Artifact.hasClassifier(), an empty string and a null both denote "no classifier". However, some
+         * plugins only check for null, so be sure to nullify an empty classifier.
+         */
+        org.apache.maven.artifact.Artifact result =
+            new org.apache.maven.artifact.DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(),
+                                                           artifact.getVersion(), null,
+                                                           artifact.getProperty( ArtifactProperties.TYPE,
+                                                                                 artifact.getExtension() ),
+                                                           nullify( artifact.getClassifier() ), handler );
+
+        result.setFile( artifact.getFile() );
+        result.setResolved( artifact.getFile() != null );
+
+        List<String> trail = new ArrayList<String>( 1 );
+        trail.add( result.getId() );
+        result.setDependencyTrail( trail );
+
+        return result;
+    }
+
+    public static void toArtifacts( Collection<org.apache.maven.artifact.Artifact> artifacts,
+                                    Collection<? extends DependencyNode> nodes, List<String> trail,
+                                    DependencyFilter filter )
+    {
+        for ( DependencyNode node : nodes )
+        {
+            org.apache.maven.artifact.Artifact artifact = toArtifact( node.getDependency() );
+
+            List<String> nodeTrail = new ArrayList<String>( trail.size() + 1 );
+            nodeTrail.addAll( trail );
+            nodeTrail.add( artifact.getId() );
+
+            if ( filter == null || filter.accept( node, Collections.<DependencyNode> emptyList() ) )
+            {
+                artifact.setDependencyTrail( nodeTrail );
+                artifacts.add( artifact );
+            }
+
+            toArtifacts( artifacts, node.getChildren(), nodeTrail, filter );
+        }
+    }
+
+    public static Artifact toArtifact( org.apache.maven.artifact.Artifact artifact )
+    {
+        if ( artifact == null )
+        {
+            return null;
+        }
+
+        String version = artifact.getVersion();
+        if ( version == null && artifact.getVersionRange() != null )
+        {
+            version = artifact.getVersionRange().toString();
+        }
+
+        Map<String, String> props = null;
+        if ( org.apache.maven.artifact.Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
+        {
+            props = Collections.singletonMap( ArtifactProperties.LACKS_DESCRIPTOR, Boolean.TRUE.toString() );
+        }
+
+        Artifact result =
+            new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getClassifier(),
+                                 artifact.getArtifactHandler().getExtension(), version, props,
+                                 newArtifactType( artifact.getType(), artifact.getArtifactHandler() ) );
+        result = result.setFile( artifact.getFile() );
+
+        return result;
+    }
+
+    public static Dependency toDependency( org.apache.maven.artifact.Artifact artifact,
+                                           Collection<org.apache.maven.model.Exclusion> exclusions )
+    {
+        if ( artifact == null )
+        {
+            return null;
+        }
+
+        Artifact result = toArtifact( artifact );
+
+        List<Exclusion> excl = null;
+        if ( exclusions != null )
+        {
+            excl = new ArrayList<Exclusion>( exclusions.size() );
+            for ( org.apache.maven.model.Exclusion exclusion : exclusions )
+            {
+                excl.add( toExclusion( exclusion ) );
+            }
+        }
+
+        return new Dependency( result, artifact.getScope(), artifact.isOptional(), excl );
+    }
+
+    public static List<RemoteRepository> toRepos( List<ArtifactRepository> repos )
+    {
+        if ( repos == null )
+        {
+            return null;
+        }
+
+        List<RemoteRepository> results = new ArrayList<RemoteRepository>( repos.size() );
+        for ( ArtifactRepository repo : repos )
+        {
+            results.add( toRepo( repo ) );
+        }
+        return results;
+    }
+
+    public static RemoteRepository toRepo( ArtifactRepository repo )
+    {
+        RemoteRepository result = null;
+        if ( repo != null )
+        {
+            result = new RemoteRepository( repo.getId(), repo.getLayout().getId(), repo.getUrl() );
+            result.setPolicy( true, toPolicy( repo.getSnapshots() ) );
+            result.setPolicy( false, toPolicy( repo.getReleases() ) );
+            result.setAuthentication( toAuthentication( repo.getAuthentication() ) );
+            result.setProxy( toProxy( repo.getProxy() ) );
+        }
+        return result;
+    }
+
+    private static RepositoryPolicy toPolicy( ArtifactRepositoryPolicy policy )
+    {
+        RepositoryPolicy result = null;
+        if ( policy != null )
+        {
+            result = new RepositoryPolicy( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() );
+        }
+        return result;
+    }
+
+    private static Authentication toAuthentication( org.apache.maven.artifact.repository.Authentication auth )
+    {
+        Authentication result = null;
+        if ( auth != null )
+        {
+            result = new Authentication( auth.getUsername(), auth.getPassword() );
+        }
+        return result;
+    }
+
+    private static Proxy toProxy( org.apache.maven.repository.Proxy proxy )
+    {
+        Proxy result = null;
+        if ( proxy != null )
+        {
+            Authentication auth = new Authentication( proxy.getUserName(), proxy.getPassword() );
+            result = new Proxy( proxy.getProtocol(), proxy.getHost(), proxy.getPort(), auth );
+        }
+        return result;
+    }
+
+    public static ArtifactHandler newHandler( Artifact artifact )
+    {
+        String type = artifact.getProperty( ArtifactProperties.TYPE, artifact.getExtension() );
+        DefaultArtifactHandler handler = new DefaultArtifactHandler( type );
+        handler.setExtension( artifact.getExtension() );
+        handler.setLanguage( artifact.getProperty( ArtifactProperties.LANGUAGE, null ) );
+        handler.setAddedToClasspath( Boolean.parseBoolean( artifact.getProperty( ArtifactProperties.CONSTITUTES_BUILD_PATH,
+                                                                                 "" ) ) );
+        handler.setIncludesDependencies( Boolean.parseBoolean( artifact.getProperty( ArtifactProperties.INCLUDES_DEPENDENCIES,
+                                                                                     "" ) ) );
+        return handler;
+    }
+
+    public static ArtifactType newArtifactType( String id, ArtifactHandler handler )
+    {
+        return new DefaultArtifactType( id, handler.getExtension(), handler.getClassifier(), handler.getLanguage(),
+                                        handler.isAddedToClasspath(), handler.isIncludesDependencies() );
+    }
+
+    public static Dependency toDependency( org.apache.maven.model.Dependency dependency,
+                                           ArtifactTypeRegistry stereotypes )
+    {
+        ArtifactType stereotype = stereotypes.get( dependency.getType() );
+        if ( stereotype == null )
+        {
+            stereotype = new DefaultArtifactType( dependency.getType() );
+        }
+
+        boolean system = dependency.getSystemPath() != null && dependency.getSystemPath().length() > 0;
+
+        Map<String, String> props = null;
+        if ( system )
+        {
+            props = Collections.singletonMap( ArtifactProperties.LACKS_DESCRIPTOR, Boolean.TRUE.toString() );
+        }
+
+        Artifact artifact =
+            new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null,
+                                 dependency.getVersion(), props, stereotype );
+
+        if ( system )
+        {
+            artifact = artifact.setFile( new File( dependency.getSystemPath() ) );
+        }
+
+        List<Exclusion> exclusions = new ArrayList<Exclusion>( dependency.getExclusions().size() );
+        for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() )
+        {
+            exclusions.add( toExclusion( exclusion ) );
+        }
+
+        Dependency result = new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions );
+
+        return result;
+    }
+
+    private static Exclusion toExclusion( org.apache.maven.model.Exclusion exclusion )
+    {
+        return new Exclusion( exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*" );
+    }
+
+    public static ArtifactTypeRegistry newArtifactTypeRegistry( ArtifactHandlerManager handlerManager )
+    {
+        return new MavenArtifactTypeRegistry( handlerManager );
+    }
+
+    static class MavenArtifactTypeRegistry
+        implements ArtifactTypeRegistry
+    {
+
+        private final ArtifactHandlerManager handlerManager;
+
+        public MavenArtifactTypeRegistry( ArtifactHandlerManager handlerManager )
+        {
+            this.handlerManager = handlerManager;
+        }
+
+        public ArtifactType get( String stereotypeId )
+        {
+            ArtifactHandler handler = handlerManager.getArtifactHandler( stereotypeId );
+            return newArtifactType( stereotypeId, handler );
+        }
+
+    }
+
+}

Propchange: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/handler/DefaultArtifactHandler.java Tue Aug 24 22:46:07 2010
@@ -64,6 +64,11 @@ public class DefaultArtifactHandler
         return extension;
     }
 
+    public void setExtension( String extension )
+    {
+        this.extension = extension;
+    }
+
     public String getType()
     {
         return type;
@@ -97,6 +102,11 @@ public class DefaultArtifactHandler
         return includesDependencies;
     }
 
+    public void setIncludesDependencies( boolean includesDependencies )
+    {
+        this.includesDependencies = includesDependencies;
+    }
+
     public String getLanguage()
     {
         if ( language == null )
@@ -107,8 +117,19 @@ public class DefaultArtifactHandler
         return language;
     }
 
+    public void setLanguage( String language )
+    {
+        this.language = language;
+    }
+
     public boolean isAddedToClasspath()
     {
         return addedToClasspath;
     }
+
+    public void setAddedToClasspath( boolean addedToClasspath )
+    {
+        this.addedToClasspath = addedToClasspath;
+    }
+
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultRepositoryRequest.java Tue Aug 24 22:46:07 2010
@@ -24,11 +24,10 @@ import java.util.List;
 
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.repository.ArtifactTransferListener;
 
 /**
  * Collects basic settings to access the repository system.
- *
+ * 
  * @author Benjamin Bentmann
  */
 public class DefaultRepositoryRequest
@@ -43,10 +42,6 @@ public class DefaultRepositoryRequest
 
     private List<ArtifactRepository> remoteRepositories;
 
-    private RepositoryCache cache;
-
-    private ArtifactTransferListener transferListener;
-
     /**
      * Creates an empty repository request.
      */
@@ -57,7 +52,7 @@ public class DefaultRepositoryRequest
 
     /**
      * Creates a shallow copy of the specified repository request.
-     *
+     * 
      * @param repositoryRequest The repository request to copy from, must not be {@code null}.
      */
     public DefaultRepositoryRequest( RepositoryRequest repositoryRequest )
@@ -65,16 +60,13 @@ public class DefaultRepositoryRequest
         setLocalRepository( repositoryRequest.getLocalRepository() );
         setRemoteRepositories( repositoryRequest.getRemoteRepositories() );
         setOffline( repositoryRequest.isOffline() );
-        setCache( repositoryRequest.getCache() );
         setForceUpdate( repositoryRequest.isForceUpdate() );
-        setTransferListener( repositoryRequest.getTransferListener() );
     }
 
     public static RepositoryRequest getRepositoryRequest( MavenSession session, MavenProject project )
     {
         RepositoryRequest request = new DefaultRepositoryRequest();
 
-        request.setCache( session.getRepositoryCache() );
         request.setLocalRepository( session.getLocalRepository() );
         if ( project != null )
         {
@@ -82,7 +74,6 @@ public class DefaultRepositoryRequest
         }
         request.setOffline( session.isOffline() );
         request.setForceUpdate( session.getRequest().isUpdateSnapshots() );
-        request.setTransferListener( session.getRequest().getTransferListener() );
 
         return request;
     }
@@ -140,28 +131,4 @@ public class DefaultRepositoryRequest
         return this;
     }
 
-    public RepositoryCache getCache()
-    {
-        return cache;
-    }
-
-    public DefaultRepositoryRequest setCache( RepositoryCache cache )
-    {
-        this.cache = cache;
-
-        return this;
-    }
-
-    public ArtifactTransferListener getTransferListener()
-    {
-        return transferListener;
-    }
-
-    public DefaultRepositoryRequest setTransferListener( ArtifactTransferListener transferListener )
-    {
-        this.transferListener = transferListener;
-
-        return this;
-    }
-
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryCache.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryCache.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryCache.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryCache.java Tue Aug 24 22:46:07 2010
@@ -25,6 +25,7 @@ package org.apache.maven.artifact.reposi
  * 
  * @author Benjamin Bentmann
  */
+@Deprecated
 public interface RepositoryCache
 {
 

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryRequest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/repository/RepositoryRequest.java Tue Aug 24 22:46:07 2010
@@ -21,8 +21,6 @@ package org.apache.maven.artifact.reposi
 
 import java.util.List;
 
-import org.apache.maven.repository.ArtifactTransferListener;
-
 /**
  * Collects basic settings to access the repository system.
  * 
@@ -94,34 +92,4 @@ public interface RepositoryRequest
      */
     RepositoryRequest setRemoteRepositories( List<ArtifactRepository> remoteRepositories );
 
-    /**
-     * Gets the repository cache to use.
-     * 
-     * @return The repository cache to use or {@code null} if none.
-     */
-    RepositoryCache getCache();
-
-    /**
-     * Sets the repository cache to use.
-     * 
-     * @param cache The repository cache to use, may be {@code null}.
-     * @return This request, never {@code null}.
-     */
-    RepositoryRequest setCache( RepositoryCache cache );
-
-    /**
-     * Gets the listener to notify of transfer events.
-     * 
-     * @return The transfer listener or {@code null} if none.
-     */
-    ArtifactTransferListener getTransferListener();
-
-    /**
-     * Sets the listener to notify of transfer events.
-     * 
-     * @param transferListener The transfer listener to notify, may be {@code null}.
-     * @return This request, never {@code null}.
-     */
-    RepositoryRequest setTransferListener( ArtifactTransferListener transferListener );
-
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionRequest.java Tue Aug 24 22:46:07 2010
@@ -29,7 +29,6 @@ import org.apache.maven.artifact.reposit
 import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.repository.ArtifactTransferListener;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
@@ -55,8 +54,6 @@ public class ArtifactResolutionRequest
 
     private List<ArtifactRepository> remoteRepositories;
 
-    private RepositoryCache cache;
-
     private ArtifactFilter collectionFilter;
 
     private ArtifactFilter resolutionFilter;
@@ -66,8 +63,6 @@ public class ArtifactResolutionRequest
 
     // This is like a filter but overrides all transitive versions 
     private Map managedVersionMap;
-
-    private ArtifactTransferListener transferListener;
     
     private boolean resolveRoot = true;
 
@@ -92,10 +87,8 @@ public class ArtifactResolutionRequest
     {
         setLocalRepository( request.getLocalRepository() );
         setRemoteRepositories( request.getRemoteRepositories() );
-        setCache( request.getCache() );
         setOffline( request.isOffline() );
         setForceUpdate( request.isForceUpdate() );
-        setTransferListener( request.getTransferListener() );
     }
 
     public Artifact getArtifact()
@@ -237,17 +230,6 @@ public class ArtifactResolutionRequest
     {
         return resolveTransitively;
     }        
-    
-    public ArtifactTransferListener getTransferListener()
-    {
-        return transferListener;
-    }
-
-    public ArtifactResolutionRequest setTransferListener( ArtifactTransferListener transferListener )
-    {
-        this.transferListener = transferListener;
-        return this;
-    }
 
     public String toString()
     {
@@ -263,13 +245,11 @@ public class ArtifactResolutionRequest
 
     public RepositoryCache getCache()
     {
-        return cache;
+        return null;
     }
 
     public ArtifactResolutionRequest setCache( RepositoryCache cache )
     {
-        this.cache = cache;
-
         return this;
     }
 

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ArtifactClassRealmConstituent.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ArtifactClassRealmConstituent.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ArtifactClassRealmConstituent.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ArtifactClassRealmConstituent.java Tue Aug 24 22:46:07 2010
@@ -21,7 +21,7 @@ package org.apache.maven.classrealm;
 
 import java.io.File;
 
-import org.apache.maven.artifact.Artifact;
+import org.sonatype.aether.artifact.Artifact;
 
 /**
  * @author Benjamin Bentmann
@@ -49,12 +49,12 @@ class ArtifactClassRealmConstituent
 
     public String getType()
     {
-        return artifact.getType();
+        return artifact.getExtension();
     }
 
     public String getClassifier()
     {
-        return artifact.hasClassifier() ? artifact.getClassifier() : "";
+        return artifact.getClassifier();
     }
 
     public String getVersion()
@@ -70,7 +70,7 @@ class ArtifactClassRealmConstituent
     @Override
     public String toString()
     {
-        return artifact.getId();
+        return artifact.toString();
     }
 
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ClassRealmManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ClassRealmManager.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ClassRealmManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/ClassRealmManager.java Tue Aug 24 22:46:07 2010
@@ -21,10 +21,10 @@ package org.apache.maven.classrealm;
 
 import java.util.List;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
+import org.sonatype.aether.artifact.Artifact;
 
 /**
  * Manages the class realms used by Maven. <strong>Warning:</strong> This is an internal utility interface that is only

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/classrealm/DefaultClassRealmManager.java Tue Aug 24 22:46:07 2010
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Random;
 import java.util.Set;
 
-import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.classrealm.ClassRealmRequest.RealmType;
 import org.apache.maven.model.Model;
@@ -43,11 +42,12 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.sonatype.aether.artifact.Artifact;
 
 /**
  * Manages the class realms used by Maven. <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 interface can be changed or
- * deleted without prior notice.
+ * 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
  */
@@ -133,7 +133,7 @@ public class DefaultClassRealmManager
         {
             for ( Artifact artifact : artifacts )
             {
-                artifactIds.add( artifact.getId() );
+                artifactIds.add( getId( artifact ) );
                 if ( artifact.getFile() != null )
                 {
                     constituents.add( new ArtifactClassRealmConstituent( artifact ) );
@@ -260,6 +260,9 @@ public class DefaultClassRealmManager
         // maven-*
         importingRealm.importFrom( coreRealm, "org.apache.maven" );
 
+        // aether
+        importingRealm.importFrom( coreRealm, "org.sonatype.aether" );
+
         // plexus-classworlds
         importingRealm.importFrom( coreRealm, "org.codehaus.plexus.classworlds" );
 
@@ -334,11 +337,21 @@ public class DefaultClassRealmManager
             + version;
     }
 
+    private static String getId( Artifact artifact )
+    {
+        return getId( artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(), artifact.getClassifier(),
+                      artifact.getBaseVersion() );
+    }
+
     private static String getId( ClassRealmConstituent constituent )
     {
-        return constituent.getGroupId() + ':' + constituent.getArtifactId() + ':' + constituent.getType()
-            + ( StringUtils.isNotEmpty( constituent.getClassifier() ) ? ':' + constituent.getClassifier() : "" ) + ':'
-            + constituent.getVersion();
+        return getId( constituent.getGroupId(), constituent.getArtifactId(), constituent.getType(),
+                      constituent.getClassifier(), constituent.getVersion() );
+    }
+
+    private static String getId( String gid, String aid, String type, String cls, String ver )
+    {
+        return gid + ':' + aid + ':' + type + ( StringUtils.isNotEmpty( cls ) ? ':' + cls : "" ) + ':' + ver;
     }
 
     private List<ClassRealmManagerDelegate> getDelegates()

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java Tue Aug 24 22:46:07 2010
@@ -26,14 +26,15 @@ import java.util.List;
 import java.util.Properties;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.ProjectBuildingRequest;
-import org.apache.maven.repository.ArtifactTransferListener;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
+import org.sonatype.aether.RepositoryCache;
+import org.sonatype.aether.transfer.TransferListener;
+import org.sonatype.aether.util.DefaultRepositoryCache;
 
 /**
  * @author Jason van Zyl
@@ -42,7 +43,7 @@ public class DefaultMavenExecutionReques
     implements MavenExecutionRequest
 {
 
-    private RepositoryCache repositoryCache = new SessionRepositoryCache();
+    private RepositoryCache repositoryCache = new DefaultRepositoryCache();
 
     private ArtifactRepository localRepository;
 
@@ -110,7 +111,7 @@ public class DefaultMavenExecutionReques
 
     private List<String> inactiveProfiles;
 
-    private ArtifactTransferListener transferListener;
+    private TransferListener transferListener;
 
     private int loggingLevel = LOGGING_LEVEL_INFO;
 
@@ -350,7 +351,7 @@ public class DefaultMavenExecutionReques
         return inactiveProfiles;
     }
 
-    public ArtifactTransferListener getTransferListener()
+    public TransferListener getTransferListener()
     {
         return transferListener;
     }
@@ -592,7 +593,7 @@ public class DefaultMavenExecutionReques
         return this;
     }
 
-    public MavenExecutionRequest setTransferListener( ArtifactTransferListener transferListener )
+    public MavenExecutionRequest setTransferListener( TransferListener transferListener )
     {
         this.transferListener = transferListener;
 
@@ -953,7 +954,6 @@ public class DefaultMavenExecutionReques
             projectBuildingRequest.setUserProperties( getUserProperties() );
             projectBuildingRequest.setRemoteRepositories( getRemoteRepositories() );
             projectBuildingRequest.setPluginArtifactRepositories( getPluginArtifactRepositories() );
-            projectBuildingRequest.setRepositoryCache( getRepositoryCache() );
             projectBuildingRequest.setOffline( isOffline() );
             projectBuildingRequest.setForceUpdate( isUpdateSnapshots() );
             projectBuildingRequest.setServers( getServers() );
@@ -964,7 +964,6 @@ public class DefaultMavenExecutionReques
             projectBuildingRequest.setProfiles( getProfiles() );
             projectBuildingRequest.setProcessPlugins( true );
             projectBuildingRequest.setBuildStartTime( getStartTime() );
-            projectBuildingRequest.setTransferListener( getTransferListener() );
         }
 
         return projectBuildingRequest;

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionResult.java Tue Aug 24 22:46:07 2010
@@ -25,7 +25,7 @@ import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.project.DependencyResolutionResult;
 import org.apache.maven.project.MavenProject;
 
 /** @author Jason van Zyl */
@@ -36,7 +36,7 @@ public class DefaultMavenExecutionResult
 
     private List<MavenProject> topologicallySortedProjects;
 
-    private ArtifactResolutionResult artifactResolutionResult;
+    private DependencyResolutionResult dependencyResolutionResult;
 
     private List<Throwable> exceptions;
 
@@ -66,14 +66,14 @@ public class DefaultMavenExecutionResult
         return topologicallySortedProjects;
     }
 
-    public ArtifactResolutionResult getArtifactResolutionResult()
+    public DependencyResolutionResult getDependencyResolutionResult()
     {
-        return artifactResolutionResult;
+        return dependencyResolutionResult;
     }
 
-    public MavenExecutionResult setArtifactResolutionResult( ArtifactResolutionResult artifactResolutionResult )
+    public MavenExecutionResult setDependencyResolutionResult( DependencyResolutionResult dependencyResolutionResult )
     {
-        this.artifactResolutionResult = artifactResolutionResult;
+        this.dependencyResolutionResult = dependencyResolutionResult;
 
         return this;
     }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java Tue Aug 24 22:46:07 2010
@@ -26,14 +26,14 @@ import java.util.Properties;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
-import org.apache.maven.artifact.repository.RepositoryCache;
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.ProjectBuildingRequest;
-import org.apache.maven.repository.ArtifactTransferListener;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Server;
 import org.codehaus.plexus.logging.Logger;
+import org.sonatype.aether.RepositoryCache;
+import org.sonatype.aether.transfer.TransferListener;
 
 /**
  * @author Jason van Zyl
@@ -170,8 +170,8 @@ public interface MavenExecutionRequest
     boolean isShowErrors();
 
     // Transfer listeners
-    MavenExecutionRequest setTransferListener( ArtifactTransferListener transferListener );
-    ArtifactTransferListener getTransferListener();
+    MavenExecutionRequest setTransferListener( TransferListener transferListener );
+    TransferListener getTransferListener();
 
     // Logging
     MavenExecutionRequest setLoggingLevel( int loggingLevel );

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionResult.java Tue Aug 24 22:46:07 2010
@@ -21,7 +21,7 @@ package org.apache.maven.execution;
 
 import java.util.List;
 
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.project.DependencyResolutionResult;
 import org.apache.maven.project.MavenProject;
 
 /**
@@ -35,8 +35,8 @@ public interface MavenExecutionResult
     MavenExecutionResult setTopologicallySortedProjects( List<MavenProject> projects );
     List<MavenProject> getTopologicallySortedProjects();
 
-    MavenExecutionResult setArtifactResolutionResult( ArtifactResolutionResult result );
-    ArtifactResolutionResult getArtifactResolutionResult();
+    MavenExecutionResult setDependencyResolutionResult( DependencyResolutionResult result );
+    DependencyResolutionResult getDependencyResolutionResult();
 
     // for each exception
     // - knowing what artifacts are missing

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java Tue Aug 24 22:46:07 2010
@@ -36,6 +36,7 @@ import org.apache.maven.project.ProjectB
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.sonatype.aether.RepositorySystemSession;
 
 /**
  * @author Jason van Zyl
@@ -50,6 +51,8 @@ public class MavenSession
 
     private MavenExecutionResult result;
 
+    private RepositorySystemSession repositorySession;
+
     private final Settings settings;
 
     private Properties executionProperties;
@@ -115,12 +118,14 @@ public class MavenSession
         setProjects( projects );
     }
 
-    public MavenSession( PlexusContainer container, MavenExecutionRequest request, MavenExecutionResult result )
+    public MavenSession( PlexusContainer container, RepositorySystemSession repositorySession, MavenExecutionRequest request,
+                         MavenExecutionResult result )
     {
         this.container = container;
         this.request = request;
         this.result = result;
         this.settings = new SettingsAdapter( request );
+        this.repositorySession = repositorySession;
     }
 
     public void setProjects( List<MavenProject> projects )
@@ -180,9 +185,10 @@ public class MavenSession
         return container.lookupMap( role );
     }
 
+    @Deprecated
     public RepositoryCache getRepositoryCache()
     {
-        return request.getRepositoryCache();
+        return null;
     }
 
     public ArtifactRepository getLocalRepository()
@@ -277,7 +283,7 @@ public class MavenSession
 
     public ProjectBuildingRequest getProjectBuildingRequest()
     {
-        return request.getProjectBuildingRequest();
+        return request.getProjectBuildingRequest().setRepositorySession( getRepositorySession() );
     }
 
     public List<String> getPluginGroups()
@@ -382,4 +388,10 @@ public class MavenSession
     {
         this.parallel = parallel;
     }
+
+    public RepositorySystemSession getRepositorySession()
+    {
+        return repositorySession;
+    }
+
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java?rev=988749&r1=988748&r2=988749&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java Tue Aug 24 22:46:07 2010
@@ -21,14 +21,7 @@ package org.apache.maven.lifecycle;
 
 import org.apache.maven.lifecycle.internal.BuilderCommon;
 import org.apache.maven.lifecycle.internal.ExecutionPlanItem;
-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;
 import org.apache.maven.project.MavenProject;
 
 import java.util.ArrayList;
@@ -55,9 +48,6 @@ public class DefaultSchedules
     }
 
     public List<ExecutionPlanItem> createExecutionPlanItem( MavenProject mavenProject, List<MojoExecution> executions )
-        throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException,
-        PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException,
-        NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException
     {
         BuilderCommon.attachToThread( mavenProject );