Author: jdcasey
Date: Thu Aug 27 16:58:21 2009
New Revision: 808520

URL: http://svn.apache.org/viewvc?rev=808520&view=rev
Log:
clean up the API some more, to avoid duplicate storage for remote repositories, 
eliminate the resulting simplistic wrapper around the local repository, then 
use the MavenSession as a better local-repository wrapper that can also supply 
caches and online/offline flags in 3.x without the need to change the API 
further.

Added:
    
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java
   (with props)
Removed:
    
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/artifact/
    
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultRepositoryRequest.java
    
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilter.java
Modified:
    maven/shared/trunk/maven-artifact-resolver/pom.xml
    
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
    
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java
    
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java

Modified: maven/shared/trunk/maven-artifact-resolver/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/pom.xml?rev=808520&r1=808519&r2=808520&view=diff
==============================================================================
--- maven/shared/trunk/maven-artifact-resolver/pom.xml (original)
+++ maven/shared/trunk/maven-artifact-resolver/pom.xml Thu Aug 27 16:58:21 2009
@@ -21,31 +21,35 @@
     </dependency>
     <dependency>
        <groupId>org.apache.maven</groupId>
-       <artifactId>maven-core</artifactId>
+       <artifactId>maven-artifact-manager</artifactId>
        <version>2.2.1</version>
        <type>jar</type>
        <scope>compile</scope>
     </dependency>
     <dependency>
        <groupId>org.apache.maven</groupId>
-       <artifactId>maven-artifact-manager</artifactId>
+       <artifactId>maven-artifact</artifactId>
        <version>2.2.1</version>
        <type>jar</type>
        <scope>compile</scope>
     </dependency>
     <dependency>
        <groupId>org.apache.maven</groupId>
-       <artifactId>maven-artifact</artifactId>
+       <artifactId>maven-project</artifactId>
        <version>2.2.1</version>
        <type>jar</type>
        <scope>compile</scope>
     </dependency>
     <dependency>
+       <groupId>org.easymock</groupId>
+       <artifactId>easymock</artifactId>
+       <version>2.4</version>
+       <scope>test</scope>
+    </dependency>
+    <dependency>
        <groupId>org.apache.maven</groupId>
-       <artifactId>maven-project</artifactId>
+       <artifactId>maven-core</artifactId>
        <version>2.2.1</version>
-       <type>jar</type>
-       <scope>compile</scope>
     </dependency>
   </dependencies>
   

Modified: 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/ProjectDependenciesResolver.java?rev=808520&r1=808519&r2=808520&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/ProjectDependenciesResolver.java
 Thu Aug 27 16:58:21 2009
@@ -19,17 +19,16 @@
  * under the License.
  */
 
-import java.util.Collection;
-import java.util.Set;
-
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.project.MavenProject;
 
+import java.util.Collection;
+import java.util.Set;
+
 /**
  * Common interface for plugins and other third-party components running 
inside a Maven runtime to
  * resolve the transitive dependency closure for various {...@link 
MavenProject} instances.
@@ -45,16 +44,14 @@
      * 
      * @param projects The projects whose dependencies should be resolved.
      * @param scopes The list of scopes to resolve. These scopes may imply 
other scopes.
-     * @param repositoryRequest The request containing a {...@link 
RepositoryCache}, along with 
-     *          zero or more {...@link ArtifactRepository} remote 
repositories, a local {...@link ArtifactRepository},
-     *          and a flag determining whether to run in offline mode.
+     * @param session Contains the local repository, along with other settings 
related to artifact resolution.
      * @return The set of resolved artifacts. If the projects contain no 
dependencies, this will return an empty set.
      * @throws ArtifactResolutionException In case {...@link Artifact} 
instances cannot be created from 
      *          project {...@link Dependency} instances, or artifact 
resolution fails.
      * @throws ArtifactNotFoundException In cases where one or more dependency 
artifacts cannot be found in the
      *          various repositories.
      */
-    public Set<Artifact> resolve( Collection<MavenProject> projects, 
Collection<String> scopes, RepositoryRequest repositoryRequest )
+    public Set<Artifact> resolve( Collection<MavenProject> projects, 
Collection<String> scopes, MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /**
@@ -63,15 +60,13 @@
      * 
      * @param project The project whose dependencies should be resolved.
      * @param scopes The list of scopes to resolve. These scopes may imply 
other scopes.
-     * @param repositoryRequest The request containing a {...@link 
RepositoryCache}, along with 
-     *          zero or more {...@link ArtifactRepository} remote 
repositories, a local {...@link ArtifactRepository},
-     *          and a flag determining whether to run in offline mode.
+     * @param session Contains the local repository, along with other settings 
related to artifact resolution.
      * @return The set of resolved artifacts. If the project contains no 
dependencies, this will return an empty set.
      * @throws ArtifactResolutionException In case {...@link Artifact} 
instances cannot be created from the
      *          project {...@link Dependency} instance, or artifact resolution 
fails.
      * @throws ArtifactNotFoundException In cases where one or more dependency 
artifacts cannot be found in the
      *          various repositories.
      */
-    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopes, RepositoryRequest repositoryRequest )
+    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopes, MavenSession session  )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 }

Modified: 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java?rev=808520&r1=808519&r2=808520&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/CumulativeScopeArtifactFilter.java
 Thu Aug 27 16:58:21 2009
@@ -34,7 +34,7 @@
  * @author jdcasey
  * @version $Id$
  */
-public class CumulativeScopeArtifactFilter
+final class CumulativeScopeArtifactFilter
     implements ArtifactFilter
 {
     private boolean compileScope;
@@ -50,7 +50,7 @@
     /**
      * Create a new filter with all scopes disabled.
      */
-    public CumulativeScopeArtifactFilter()
+    CumulativeScopeArtifactFilter()
     {
     }
     
@@ -58,7 +58,7 @@
      * Create a new filter with the specified scope and its implied scopes 
enabled.
      * @param scope The scope to enable, along with all implied scopes.
      */
-    public CumulativeScopeArtifactFilter( String scope )
+    CumulativeScopeArtifactFilter( String scope )
     {
         addScope( scope );
     }
@@ -67,7 +67,7 @@
      * Enable a new scope, along with its implied scopes, in this filter.
      * @param scope The scope to enable, along with all implied scopes.
      */
-    public void addScope( String scope )
+    void addScope( String scope )
     {
         if ( DefaultArtifact.SCOPE_COMPILE.equals( scope ) )
         {

Modified: 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java?rev=808520&r1=808519&r2=808520&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java
 (original)
+++ 
maven/shared/trunk/maven-artifact-resolver/src/main/java/org/apache/maven/shared/artifact/resolver/DefaultProjectDependenciesResolver.java
 Thu Aug 27 16:58:21 2009
@@ -24,14 +24,13 @@
 import org.apache.maven.ProjectDependenciesResolver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 
@@ -50,7 +49,7 @@
  * @see ProjectDependenciesResolver
  * @plexus.component 
role="org.apache.maven.shared.artifact.resolver.ProjectDependenciesResolver" 
role-hint="default"
  */
-public class DefaultProjectDependenciesResolver
+public final class DefaultProjectDependenciesResolver
     implements ProjectDependenciesResolver
 {
 
@@ -70,15 +69,10 @@
     private ArtifactMetadataSource metadataSource;
 
     /**
-     * @plexus.requirement
-     */
-    private WagonManager wagonManager;
-
-    /**
      * {...@inheritdoc}
      */
     @SuppressWarnings( "unchecked" )
-    public Set<Artifact> resolve( Collection<MavenProject> projects, 
Collection<String> scopes, RepositoryRequest repositoryRequest )
+    public Set<Artifact> resolve( final Collection<MavenProject> projects, 
final Collection<String> scopes, final MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         if ( projects == null || projects.isEmpty() )
@@ -86,105 +80,95 @@
             return Collections.emptySet();
         }
         
-        boolean online = wagonManager.isOnline();
         Set<Artifact> resolved = new LinkedHashSet<Artifact>();
-        try
+        CumulativeScopeArtifactFilter scopeFilter = new 
CumulativeScopeArtifactFilter();
+        if ( scopes == null )
         {
-            wagonManager.setOnline( !repositoryRequest.isOffline() );
-            
-            CumulativeScopeArtifactFilter scopeFilter = new 
CumulativeScopeArtifactFilter();
-            if ( scopes == null )
+            scopeFilter.addScope( Artifact.SCOPE_COMPILE );
+        }
+        else
+        {
+            for ( String scope : scopes )
             {
-                scopeFilter.addScope( Artifact.SCOPE_COMPILE );
+                scopeFilter.addScope( scope );
             }
-            else
+        }
+        
+        for ( MavenProject project : projects )
+        {
+            Set<Artifact> depArtifacts = (Set<Artifact>) 
project.getDependencyArtifacts();
+            if ( depArtifacts == null )
             {
-                for ( String scope : scopes )
+                try
                 {
-                    scopeFilter.addScope( scope );
+                    depArtifacts = project.createArtifacts( artifactFactory, 
null, scopeFilter );
+                }
+                catch ( InvalidDependencyVersionException e )
+                {
+                    throw new ArtifactResolutionException( "Failed to create 
Artifact instances for project dependencies: "
+                        + e.getMessage(), null, e );
                 }
             }
             
-            for ( MavenProject project : projects )
+            if ( depArtifacts == null || depArtifacts.isEmpty() )
+            {
+                continue;
+            }
+            
+            for ( Iterator<Artifact> it = depArtifacts.iterator(); 
it.hasNext(); )
             {
-                Set<Artifact> depArtifacts = (Set<Artifact>) 
project.getDependencyArtifacts();
-                if ( depArtifacts == null )
+                Artifact artifact = it.next();
+                if ( resolved.contains( artifact ) )
                 {
-                    try
-                    {
-                        depArtifacts = project.createArtifacts( 
artifactFactory, null, scopeFilter );
-                    }
-                    catch ( InvalidDependencyVersionException e )
-                    {
-                        throw new ArtifactResolutionException( "Failed to 
create Artifact instances for project dependencies: "
-                            + e.getMessage(), null, e );
-                    }
+                    // already resolved, don't do it again.
+                    it.remove();
                 }
-                
-                if ( depArtifacts == null || depArtifacts.isEmpty() )
+            }
+            
+            Artifact projectArtifact = project.getArtifact();
+            if ( projectArtifact == null )
+            {
+                projectArtifact = artifactFactory.createProjectArtifact( 
project.getGroupId(), project.getArtifactId(),
+                                                                     
project.getVersion() );
+            }
+            
+            try
+            {
+                ArtifactResolutionResult result = 
resolver.resolveTransitively( depArtifacts, projectArtifact,
+                                                                               
 project.getManagedVersionMap(),
+                                                                               
 session.getLocalRepository(),
+                                                                               
 project.getRemoteArtifactRepositories(),
+                                                                               
 metadataSource, scopeFilter );
+
+                if ( result.getArtifacts() != null && 
!result.getArtifacts().isEmpty() )
                 {
-                    continue;
+                    resolved.addAll( result.getArtifacts() );
                 }
-                
-                for ( Iterator<Artifact> it = depArtifacts.iterator(); 
it.hasNext(); )
+            }
+            catch ( MultipleArtifactsNotFoundException me )
+            {
+                Set<String> projectIds = getProjectIds( projects );
+                Collection<Artifact> missing = new HashSet<Artifact>( 
me.getMissingArtifacts() );
+                for ( Iterator<Artifact> it = missing.iterator(); 
it.hasNext(); )
                 {
                     Artifact artifact = it.next();
-                    if ( resolved.contains( artifact ) )
+                    if ( projectIds.contains( getProjectReferenceId( 
artifact.getGroupId(), artifact.getArtifactId(),
+                                                                     
artifact.getVersion() ) ) )
                     {
-                        // already resolved, don't do it again.
                         it.remove();
                     }
                 }
-                
-                Artifact projectArtifact = project.getArtifact();
-                if ( projectArtifact == null )
-                {
-                    projectArtifact = artifactFactory.createProjectArtifact( 
project.getGroupId(), project.getArtifactId(),
-                                                                         
project.getVersion() );
-                }
-                
-                try
-                {
-                    ArtifactResolutionResult result = 
resolver.resolveTransitively( depArtifacts, projectArtifact,
-                                                                               
     project.getManagedVersionMap(),
-                                                                               
     repositoryRequest.getLocalRepository(),
-                                                                               
     repositoryRequest.getRemoteRepositories(),
-                                                                               
     metadataSource, scopeFilter );
 
-                    if ( result.getArtifacts() != null && 
!result.getArtifacts().isEmpty() )
-                    {
-                        resolved.addAll( result.getArtifacts() );
-                    }
+                if ( missing.isEmpty() )
+                {
+                    resolved.addAll( me.getResolvedArtifacts() );
                 }
-                catch ( MultipleArtifactsNotFoundException me )
+                else
                 {
-                    Set<String> projectIds = getProjectIds( projects );
-                    Collection<Artifact> missing = new HashSet<Artifact>( 
me.getMissingArtifacts() );
-                    for ( Iterator<Artifact> it = missing.iterator(); 
it.hasNext(); )
-                    {
-                        Artifact artifact = it.next();
-                        if ( projectIds.contains( getProjectReferenceId( 
artifact.getGroupId(), artifact.getArtifactId(),
-                                                                         
artifact.getVersion() ) ) )
-                        {
-                            it.remove();
-                        }
-                    }
-
-                    if ( missing.isEmpty() )
-                    {
-                        resolved.addAll( me.getResolvedArtifacts() );
-                    }
-                    else
-                    {
-                        throw me;
-                    }
+                    throw me;
                 }
             }
         }
-        finally
-        {
-            wagonManager.setOnline( online );
-        }
         
         return resolved;
     }
@@ -192,15 +176,15 @@
     /**
      * {...@inheritdoc}
      */
-    public Set<Artifact> resolve( MavenProject project, Collection<String> 
scopes, RepositoryRequest repositoryRequest )
+    public Set<Artifact> resolve( final MavenProject project, final 
Collection<String> scopes, final MavenSession session )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
         Collection<MavenProject> projects = Collections.singleton( project );
 
-        return resolve( projects, scopes, repositoryRequest );
+        return resolve( projects, scopes, session );
     }
 
-    private Set<String> getProjectIds( Collection<MavenProject> projects )
+    private Set<String> getProjectIds( final Collection<MavenProject> projects 
)
     {
         Set<String> ids = new HashSet<String>();
         if ( projects != null && !projects.isEmpty() )

Added: 
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java?rev=808520&view=auto
==============================================================================
--- 
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java
 (added)
+++ 
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java
 Thu Aug 27 16:58:21 2009
@@ -0,0 +1,14 @@
+package org.apache.maven.shared.artifact.resolver;
+
+import org.junit.Test;
+
+public class CumlativeScopeArtifactFilterTest
+{
+    
+    @Test
+    public void testNothingEnabledWhenNoScopesAdded()
+    {
+        
+    }
+
+}

Propchange: 
maven/shared/trunk/maven-artifact-resolver/src/test/java/org/apache/maven/shared/artifact/resolver/CumlativeScopeArtifactFilterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to