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