You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/11/11 01:40:23 UTC
svn commit: r473597 - in /maven/sandbox/maven-artifact-tools/src:
main/java/org/apache/maven/shared/artifact/tools/components/
main/java/org/apache/maven/shared/artifact/tools/resolve/
test/java/org/apache/maven/shared/artifact/tools/components/ test/j...
Author: jdcasey
Date: Fri Nov 10 16:40:22 2006
New Revision: 473597
URL: http://svn.apache.org/viewvc?view=rev&rev=473597
Log:
Adding ability to retrieve available versions.
Added:
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java (with props)
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java (with props)
Modified:
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccess.java
maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionTool.java
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccessTest.java
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionToolTest.java
maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/testutils/MockedMavenComponentAccess.java
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccess.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccess.java?view=diff&rev=473597&r1=473596&r2=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccess.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccess.java Fri Nov 10 16:40:22 2006
@@ -1,25 +1,26 @@
package org.apache.maven.shared.artifact.tools.components;
-import java.util.Map;
-
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.settings.MavenSettingsBuilder;
import org.apache.maven.shared.artifact.tools.InvalidConfigurationException;
+import org.codehaus.classworlds.ClassRealm;
+import org.codehaus.classworlds.NoSuchRealmException;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.PlexusContainerException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.embed.Embedder;
-import org.codehaus.plexus.embed.PlexusEmbedder;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import java.util.Map;
+
/**
* @plexus.component role="org.apache.maven.shared.artifact.tools.components.MavenComponentAccess" role-hint="default"
*
@@ -55,6 +56,11 @@
* @plexus.requirement
*/
private MavenProjectBuilder mavenProjectBuilder;
+
+ /**
+ * @plexus.requirement
+ */
+ private RepositoryMetadataManager repositoryMetadataManager;
private PlexusContainer container;
@@ -62,6 +68,9 @@
private static MavenComponentAccess selfContainedInstance;
+ // used with self-contained instance.
+ private static Embedder embedder;
+
public MavenComponentAccess()
{
//used for Plexus-based initialization.
@@ -71,7 +80,9 @@
public MavenComponentAccess( MavenSettingsBuilder settingsBuilder, ArtifactResolver artifactResolver,
ArtifactHandlerManager artifactHandlerManager,
ArtifactRepositoryFactory artifactRepositoryFactory,
- MavenProjectBuilder mavenProjectBuilder, Map artifactRepositoryLayoutsById )
+ MavenProjectBuilder mavenProjectBuilder,
+ RepositoryMetadataManager repositoryMetadataManager,
+ Map artifactRepositoryLayoutsById )
{
this.settingsBuilder = settingsBuilder;
this.artifactResolver = artifactResolver;
@@ -79,6 +90,27 @@
this.artifactRepositoryFactory = artifactRepositoryFactory;
this.mavenProjectBuilder = mavenProjectBuilder;
this.artifactRepositoryLayoutsById = artifactRepositoryLayoutsById;
+ this.repositoryMetadataManager = repositoryMetadataManager;
+ }
+
+ public static void shutdown()
+ {
+ if ( selfContainedInstance != null )
+ {
+ PlexusContainer container = embedder.getContainer();
+ ClassRealm containerRealm = container.getContainerRealm();
+
+ embedder.stop();
+ container.dispose();
+ try
+ {
+ containerRealm.getWorld().disposeRealm( containerRealm.getId() );
+ }
+ catch ( NoSuchRealmException e )
+ {
+ // we're killing it anyway, so ignore this.
+ }
+ }
}
public static MavenComponentAccess createSelfContainedInstance()
@@ -86,24 +118,24 @@
{
if ( selfContainedInstance == null )
{
- PlexusEmbedder container = new Embedder();
+ embedder = new Embedder();
try
{
- container.start();
+ embedder.start();
}
catch ( PlexusContainerException e )
{
throw new ComponentAccessException( "Failed to start plexus container for maven artifact tooling.", e );
}
- catch ( PlexusConfigurationResourceException e )
- {
- throw new ComponentAccessException( "Failed to start plexus container for maven artifact tooling.", e );
- }
+// catch ( PlexusConfigurationResourceException e )
+// {
+// throw new ComponentAccessException( "Failed to start plexus container for maven artifact tooling.", e );
+// }
try
{
- selfContainedInstance = (MavenComponentAccess) container.lookup( ROLE );
+ selfContainedInstance = (MavenComponentAccess) embedder.lookup( ROLE );
}
catch ( ComponentLookupException e )
{
@@ -220,6 +252,16 @@
protected void setSettingsBuilder( MavenSettingsBuilder settingsBuilder )
{
this.settingsBuilder = settingsBuilder;
+ }
+
+ public RepositoryMetadataManager getRepositoryMetadataManager()
+ {
+ return repositoryMetadataManager;
+ }
+
+ public void setRepositoryMetadataManager( RepositoryMetadataManager repositoryMetadataManager )
+ {
+ this.repositoryMetadataManager = repositoryMetadataManager;
}
}
Modified: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionTool.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionTool.java?view=diff&rev=473597&r1=473596&r2=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionTool.java (original)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionTool.java Fri Nov 10 16:40:22 2006
@@ -3,6 +3,12 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -12,9 +18,19 @@
import org.apache.maven.shared.artifact.tools.InvalidConfigurationException;
import org.apache.maven.shared.artifact.tools.components.MavenComponentAccess;
import org.apache.maven.shared.artifact.tools.repository.ArtifactRepositorySource;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
/**
* Convenience API for resolving Artifacts and their associated POM metadata.
@@ -27,40 +43,154 @@
private final MavenProjectBuilder mavenProjectBuilder;
+ private final RepositoryMetadataManager repositoryMetadataManager;
+
public ArtifactResolutionTool( MavenComponentAccess componentAccess )
{
this.artifactResolver = componentAccess.getArtifactResolver();
this.artifactHandlerManager = componentAccess.getArtifactHandlerManager();
this.mavenProjectBuilder = componentAccess.getMavenProjectBuilder();
+ this.repositoryMetadataManager = componentAccess.getRepositoryMetadataManager();
}
-
+
public ArtifactResolutionResult resolve( ArtifactQuery query, ArtifactRepositorySource repositorySource )
- throws InvalidArtifactSpecificationException, ArtifactResolutionException, ArtifactNotFoundException,
- InvalidConfigurationException, ProjectBuildingException
+ throws InvalidArtifactSpecificationException, InvalidConfigurationException, ResolutionException
{
Artifact artifact = query.createArtifact( artifactHandlerManager );
ArtifactRepository localRepository = repositorySource.getLocalRepository();
List repositories = repositorySource.getArtifactRepositories();
-
- artifactResolver.resolve( artifact, repositories, localRepository );
- MavenProject project = mavenProjectBuilder.buildFromRepository( artifact, Collections.EMPTY_LIST,
- localRepository );
+ try
+ {
+ artifactResolver.resolve( artifact, repositories, localRepository );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new ResolutionException( artifact, "Failed to resolve: " + artifact.getId(), e );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new ResolutionException( artifact, "Artifact not found: " + artifact.getId(), e );
+ }
+
+ MavenProject project;
+ try
+ {
+ project = mavenProjectBuilder.buildFromRepository( artifact, Collections.EMPTY_LIST, localRepository );
+ }
+ catch ( ProjectBuildingException e )
+ {
+ throw new ResolutionException( artifact, "Failed to build POM metadata for: " + artifact.getId(), e );
+ }
ArtifactResolutionResult result = new ArtifactResolutionResult( artifact, project );
return result;
}
- public ArtifactResolutionResult resolveProjectMetadata( ArtifactQuery query, ArtifactRepositorySource repositorySource )
- throws InvalidArtifactSpecificationException, ArtifactResolutionException, ArtifactNotFoundException,
- InvalidConfigurationException, ProjectBuildingException
+ public ArtifactResolutionResult resolveProjectMetadata( ArtifactQuery query,
+ ArtifactRepositorySource repositorySource )
+ throws InvalidArtifactSpecificationException, ResolutionException, InvalidConfigurationException
{
ArtifactQuery pomQuery = query.copy();
pomQuery.setType( "pom" );
-
+
return resolve( pomQuery, repositorySource );
+ }
+
+ public List getAvailableVersions( String groupId, String artifactId, ArtifactRepositorySource repositorySource )
+ throws InvalidArtifactSpecificationException, InvalidConfigurationException, ResolutionException
+ {
+ ArtifactQuery query = new ArtifactQuery( groupId, artifactId );
+ query.setVersion( "not-used" );
+
+ Artifact artifact = query.createArtifact( artifactHandlerManager );
+
+ List remoteRepositories = repositorySource.getArtifactRepositories();
+ ArtifactRepository localRepository = repositorySource.getLocalRepository();
+
+ LinkedHashSet versions = new LinkedHashSet();
+ Map errors = new LinkedHashMap();
+
+ readVersionsFromLocalRepository( artifact, localRepository, versions, errors );
+
+ readVersionsFromRemoteRepositories( artifact, localRepository, remoteRepositories, versions, errors );
+
+ if ( !errors.isEmpty() )
+ {
+ throw new ResolutionException( new ArtifactRepositoryMetadata( artifact ), errors );
+ }
+
+ List versionList = new ArrayList( versions );
+
+ Collections.sort( versionList );
+
+ return versionList;
+ }
+
+ private void readVersionsFromRemoteRepositories( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories, LinkedHashSet versions, Map errors )
+ {
+ for ( Iterator it = remoteRepositories.iterator(); it.hasNext(); )
+ {
+ ArtifactRepository remoteRepository = (ArtifactRepository) it.next();
+
+ ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
+
+ try
+ {
+ repositoryMetadataManager.resolveAlways( metadata, localRepository, remoteRepository );
+ }
+ catch ( RepositoryMetadataResolutionException e )
+ {
+ errors.put( remoteRepository, e );
+ continue;
+ }
+
+ Metadata md = metadata.getMetadata();
+ Versioning versioning = md.getVersioning();
+
+ List availableVersions = versioning.getVersions();
+
+ versions.addAll( availableVersions );
+ }
+ }
+
+ private void readVersionsFromLocalRepository( Artifact artifact, ArtifactRepository localRepository, LinkedHashSet versions, Map errors )
+ {
+ FileReader reader = null;
+
+ try
+ {
+ ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
+
+ File localOnly = new File( localRepository.getBasedir(), localRepository
+ .pathOfLocalRepositoryMetadata( metadata, localRepository ) );
+
+ if ( localOnly.exists() && !localOnly.isDirectory() )
+ {
+ reader = new FileReader( localOnly );
+ Metadata md = new MetadataXpp3Reader().read( reader );
+
+ if ( md != null )
+ {
+ Versioning versioning = md.getVersioning();
+ versions.addAll( versioning.getVersions() );
+ }
+ }
+ }
+ catch ( IOException e )
+ {
+ errors.put( localRepository, e );
+ }
+ catch ( XmlPullParserException e )
+ {
+ errors.put( localRepository, e );
+ }
+ finally
+ {
+ IOUtil.close( reader );
+ }
}
}
Added: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java?view=auto&rev=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java (added)
+++ maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java Fri Nov 10 16:40:22 2006
@@ -0,0 +1,99 @@
+package org.apache.maven.shared.artifact.tools.resolve;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import java.util.Iterator;
+import java.util.Map;
+
+public class ResolutionException
+ extends Exception
+{
+
+ public static final String TYPE_METADATA = "metadata";
+
+ public static final String TYPE_ARTIFACT = "artifact";
+
+ private static final long serialVersionUID = 1L;
+
+ private Map resolutionExceptionsByRepository;
+
+ private String type;
+
+ public ResolutionException( Artifact artifact, String message, Throwable cause )
+ {
+ super( "Failed to resolve: " + artifact.getId() + ". Reason: " + message, cause );
+ this.type = TYPE_ARTIFACT;
+ }
+
+ public ResolutionException( Artifact artifact, String message )
+ {
+ super( "Failed to resolve: " + artifact.getId() + ". Reason: " + message );
+ this.type = TYPE_ARTIFACT;
+ }
+
+ public ResolutionException( Artifact artifact, Map resolutionExceptionsByRepository )
+ {
+ super( "Failed to resolve: " + artifact.getId() + " from:\n - "
+ + formatRepositories( resolutionExceptionsByRepository, "\n - " ) + "\n" );
+
+ this.type = TYPE_ARTIFACT;
+ this.resolutionExceptionsByRepository = resolutionExceptionsByRepository;
+ }
+
+ public ResolutionException( ArtifactMetadata metadata, String message, Throwable cause )
+ {
+ super( "Failed to resolve: " + metadata.getClass().getName() + "[" + metadata.getGroupId() + ", "
+ + metadata.getArtifactId() + "]. Reason: " + message, cause );
+ this.type = TYPE_METADATA;
+ }
+
+ public ResolutionException( ArtifactMetadata metadata, String message )
+ {
+ super( "Failed to resolve: " + metadata.getClass().getName() + "[" + metadata.getGroupId() + ", "
+ + metadata.getArtifactId() + "]. Reason: " + message );
+ this.type = TYPE_METADATA;
+ }
+
+ public ResolutionException( ArtifactMetadata metadata, Map resolutionExceptionsByRepository )
+ {
+ super( "Failed to resolve: " + metadata.getClass().getName() + "[" + metadata.getGroupId() + ", "
+ + metadata.getArtifactId() + "] from:\n - "
+ + formatRepositories( resolutionExceptionsByRepository, "\n - " ) + "\n" );
+
+ this.type = TYPE_METADATA;
+ this.resolutionExceptionsByRepository = resolutionExceptionsByRepository;
+ }
+
+ private static String formatRepositories( Map repositoryKeyedMap, String separator )
+ {
+ StringBuffer buffer = new StringBuffer();
+ for ( Iterator it = repositoryKeyedMap.keySet().iterator(); it.hasNext(); )
+ {
+ ArtifactRepository repo = (ArtifactRepository) it.next();
+
+ buffer.append( separator );
+ buffer.append( repo.getId() ).append( " (" ).append( repo.getUrl() ).append( ')' );
+
+ }
+
+ return buffer.toString();
+ }
+
+ public boolean isMetadataError()
+ {
+ return TYPE_METADATA.equals( type );
+ }
+
+ public boolean isArtifactError()
+ {
+ return TYPE_ARTIFACT.equals( type );
+ }
+
+ public Map getResolutionExceptionsByRepository()
+ {
+ return resolutionExceptionsByRepository;
+ }
+
+}
Propchange: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/maven-artifact-tools/src/main/java/org/apache/maven/shared/artifact/tools/resolve/ResolutionException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccessTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccessTest.java?view=diff&rev=473597&r1=473596&r2=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccessTest.java (original)
+++ maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/components/MavenComponentAccessTest.java Fri Nov 10 16:40:22 2006
@@ -66,7 +66,7 @@
Map layouts = Collections.singletonMap( "test", arl );
- MavenComponentAccess mca = new MavenComponentAccess( msb, ar, ahm, arf, mpb, layouts );
+ MavenComponentAccess mca = new MavenComponentAccess( msb, ar, ahm, arf, mpb, null, layouts );
assertSame( arl, mca.getArtifactRepositoryLayout( "test" ) );
}
Modified: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionToolTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionToolTest.java?view=diff&rev=473597&r1=473596&r2=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionToolTest.java (original)
+++ maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/ArtifactResolutionToolTest.java Fri Nov 10 16:40:22 2006
@@ -2,17 +2,27 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.artifact.repository.metadata.Versioning;
+import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer;
import org.apache.maven.model.Model;
import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.shared.artifact.tools.InvalidConfigurationException;
+import org.apache.maven.shared.artifact.tools.components.MavenComponentAccess;
import org.apache.maven.shared.artifact.tools.repository.ArtifactRepositorySource;
+import org.apache.maven.shared.artifact.tools.resolve.testutils.TestRepositorySource;
import org.apache.maven.shared.artifact.tools.testutils.MockedMavenComponentAccess;
import org.apache.maven.shared.tools.easymock.MockManager;
+import org.apache.maven.shared.tools.easymock.TestFileManager;
+import org.codehaus.plexus.util.IOUtil;
import org.easymock.MockControl;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.util.Collections;
import java.util.List;
@@ -22,36 +32,92 @@
extends TestCase
{
+ private TestFileManager fileManager = new TestFileManager( "ArtifactResolutionToolTest.", "" );
+
+ public void tearDown()
+ throws IOException
+ {
+ fileManager.cleanUp();
+ }
+
+ public void testGetAvailableVersions()
+ throws Exception
+ {
+ String groupId = "org.apache.maven";
+ String artifactId = "maven-artifact";
+
+ MockManager mm = new MockManager();
+
+ MavenComponentAccess componentAccess = buildComponentAccess( "jar", mm );
+
+ File dir = fileManager.createTempDir();
+
+ ArtifactRepositoryLayout layout = new DefaultRepositoryLayout();
+
+ ArtifactRepository repo = new DefaultArtifactRepository( "local", dir.toURL().toExternalForm(), layout, null,
+ null );
+
+ TestRepositorySource rs = new TestRepositorySource( repo, Collections.EMPTY_LIST );
+
+ Metadata md = new Metadata();
+ md.setArtifactId( artifactId );
+ md.setGroupId( groupId );
+
+ Versioning versioning = new Versioning();
+ versioning.addVersion( "2.0.4" );
+
+ md.setVersioning( versioning );
+
+ mm.replayAll();
+
+ File mdFile = new File( dir, "org/apache/maven/maven-artifact/maven-metadata-local.xml" );
+
+ mdFile.getParentFile().mkdirs();
+
+ FileWriter writer = null;
+
+ try
+ {
+ writer = new FileWriter( mdFile );
+ new MetadataXpp3Writer().write( writer, md );
+ }
+ finally
+ {
+ IOUtil.close( writer );
+ }
+
+ List versions = new ArtifactResolutionTool( componentAccess ).getAvailableVersions( groupId, artifactId, rs );
+
+ assertEquals( 1, versions.size() );
+ assertTrue( versions.contains( "2.0.4" ) );
+
+ mm.verifyAll();
+ }
+
public void testResolveArtifact()
- throws InvalidArtifactSpecificationException, ArtifactResolutionException, ArtifactNotFoundException,
- InvalidConfigurationException, ProjectBuildingException
+ throws ResolutionException, InvalidConfigurationException, InvalidArtifactSpecificationException
{
resolve( false );
}
public void testResolveProjectMetadata()
- throws InvalidArtifactSpecificationException, ArtifactResolutionException, ArtifactNotFoundException,
- InvalidConfigurationException, ProjectBuildingException
+ throws ResolutionException, InvalidConfigurationException, InvalidArtifactSpecificationException
{
resolve( true );
}
private void resolve( boolean resolveProjectOnly )
- throws ArtifactResolutionException, ArtifactNotFoundException,
- InvalidConfigurationException, ProjectBuildingException, InvalidArtifactSpecificationException
+ throws ResolutionException, InvalidConfigurationException, InvalidArtifactSpecificationException
{
String type = resolveProjectOnly ? "pom" : "jar";
ArtifactQuery query = new ArtifactQuery( "group", "artifact" );
query.setVersion( "1.0" );
- MockedMavenComponentAccess componentAccess = new MockedMavenComponentAccess();
MockManager mm = new MockManager();
- componentAccess.expectGetArtifactResolver( mm );
- componentAccess.expectGetArtifactHandlerManagerWithHandlerForTypeWithClassifier( mm, type, null );
- componentAccess.expectGetProjectBuilder( mm );
+ MockedMavenComponentAccess componentAccess = buildComponentAccess( type, mm );
List remoteRepos = Collections.EMPTY_LIST;
@@ -118,6 +184,18 @@
assertSame( project, result.getProject() );
mm.verifyAll();
+ }
+
+ private MockedMavenComponentAccess buildComponentAccess( String type, MockManager mm )
+ {
+ MockedMavenComponentAccess componentAccess = new MockedMavenComponentAccess();
+
+ componentAccess.expectGetArtifactResolver( mm );
+ componentAccess.expectGetArtifactHandlerManagerWithHandlerForTypeWithClassifier( mm, type, null );
+ componentAccess.expectGetProjectBuilder( mm );
+ componentAccess.expectGetRepositoryMetadataManager( mm );
+
+ return componentAccess;
}
}
Added: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java?view=auto&rev=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java (added)
+++ maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java Fri Nov 10 16:40:22 2006
@@ -0,0 +1,33 @@
+package org.apache.maven.shared.artifact.tools.resolve.testutils;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.shared.artifact.tools.InvalidConfigurationException;
+import org.apache.maven.shared.artifact.tools.repository.ArtifactRepositorySource;
+
+import java.util.List;
+
+public class TestRepositorySource
+ implements ArtifactRepositorySource
+{
+
+ private final ArtifactRepository localRepo;
+ private final List remoteRepos;
+
+ public TestRepositorySource( ArtifactRepository localRepo, List remoteRepos )
+ {
+ this.localRepo = localRepo;
+ this.remoteRepos = remoteRepos;
+ }
+
+ public List getArtifactRepositories()
+ {
+ return remoteRepos;
+ }
+
+ public ArtifactRepository getLocalRepository()
+ throws InvalidConfigurationException
+ {
+ return localRepo;
+ }
+
+}
Propchange: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/resolve/testutils/TestRepositorySource.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/testutils/MockedMavenComponentAccess.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/testutils/MockedMavenComponentAccess.java?view=diff&rev=473597&r1=473596&r2=473597
==============================================================================
--- maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/testutils/MockedMavenComponentAccess.java (original)
+++ maven/sandbox/maven-artifact-tools/src/test/java/org/apache/maven/shared/artifact/tools/testutils/MockedMavenComponentAccess.java Fri Nov 10 16:40:22 2006
@@ -16,6 +16,7 @@
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.DefaultArtifactRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -48,6 +49,8 @@
private MockControl projectBuilderCtl;
+ private MockControl repositoryMetadataMgrCtl;
+
public MockedMavenComponentAccess()
{
}
@@ -113,7 +116,7 @@
throw new IllegalStateException( "Should never happen." );
}
- settingsBuilderCtl.setReturnValue( settings );
+ settingsBuilderCtl.setReturnValue( settings, MockControl.ZERO_OR_MORE );
}
public void expectGetArtifactRepositoryLayout( MockManager mockManager, String layoutId )
@@ -158,11 +161,11 @@
ArtifactRepository repo = (ArtifactRepository) repoCtl.getMock();
repo.getBasedir();
- repoCtl.setReturnValue( basedir );
+ repoCtl.setReturnValue( basedir, MockControl.ZERO_OR_MORE );
repoFactory.createArtifactRepository( null, null, null, null, null );
repoFactoryCtl.setMatcher( MockControl.ALWAYS_MATCHER );
- repoFactoryCtl.setReturnValue( repo );
+ repoFactoryCtl.setReturnValue( repo, MockControl.ZERO_OR_MORE );
}
public void expectCreateArtifactRepositoryWithUrl( MockManager mm, String url )
@@ -174,13 +177,13 @@
ArtifactRepository repo = (ArtifactRepository) repoCtl.getMock();
repo.getUrl();
- repoCtl.setReturnValue( url );
+ repoCtl.setReturnValue( url, MockControl.ZERO_OR_MORE );
mm.add( repoCtl );
repoFactory.createArtifactRepository( null, null, null, null, null );
repoFactoryCtl.setMatcher( MockControl.ALWAYS_MATCHER );
- repoFactoryCtl.setReturnValue( repoCtl.getMock() );
+ repoFactoryCtl.setReturnValue( repoCtl.getMock(), MockControl.ZERO_OR_MORE );
}
public void expectCreateDefaultArtifactRepositoryWithIdNameLocationAndLayout( String id, String name,
@@ -195,7 +198,7 @@
repoFactory.createArtifactRepository( null, null, null, null, null );
repoFactoryCtl.setMatcher( MockControl.ALWAYS_MATCHER );
- repoFactoryCtl.setReturnValue( repo );
+ repoFactoryCtl.setReturnValue( repo, MockControl.ZERO_OR_MORE );
}
public void expectCreateArtifactRepositoryWithIdUrlLayoutAndPolicies( MockManager mm, final String id,
@@ -233,7 +236,7 @@
mm.add( repoCtl );
- repoFactoryCtl.setReturnValue( repo );
+ repoFactoryCtl.setReturnValue( repo, MockControl.ZERO_OR_MORE );
}
public void expectGetArtifactResolver( MockManager mm )
@@ -263,10 +266,10 @@
ArtifactHandler handler = (ArtifactHandler) handlerCtl.getMock();
handler.getClassifier();
- handlerCtl.setReturnValue( classifier );
+ handlerCtl.setReturnValue( classifier, MockControl.ZERO_OR_MORE );
mgr.getArtifactHandler( type );
- handlerManagerCtl.setReturnValue( handler );
+ handlerManagerCtl.setReturnValue( handler, MockControl.ZERO_OR_MORE );
}
public void expectGetProjectBuilder( MockManager mm )
@@ -381,12 +384,23 @@
} );
- projectBuilderCtl.setReturnValue( project );
+ projectBuilderCtl.setReturnValue( project, MockControl.ZERO_OR_MORE );
}
catch ( ProjectBuildingException e )
{
Assert.fail( "should not happen." );
}
+ }
+
+ public void expectGetRepositoryMetadataManager( MockManager mm )
+ {
+ repositoryMetadataMgrCtl = MockControl.createControl( RepositoryMetadataManager.class );
+
+ mm.add( repositoryMetadataMgrCtl );
+
+ RepositoryMetadataManager rmm = (RepositoryMetadataManager) repositoryMetadataMgrCtl.getMock();
+
+ setRepositoryMetadataManager( rmm );
}
}