[MARTIFACT-6] The deployer should detect previous deployments of the same version and die

This corrects the test case and implementation, utilising the previous changes made to ensure mirrors
and other repository metadata are not consulted for metadata


git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@669227 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2008-06-18 17:06:57 +00:00
parent 5be7ffdd23
commit 825448f10e
2 changed files with 46 additions and 12 deletions

View File

@ -33,6 +33,7 @@
import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
@ -441,8 +442,8 @@ public static Set createArtifacts( ArtifactFactory artifactFactory, List depende
return projectArtifacts;
}
public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
List remoteRepositories )
public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
throws ArtifactMetadataRetrievalException
{
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
@ -455,21 +456,43 @@ public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository loc
throw new ArtifactMetadataRetrievalException( e.getMessage(), e );
}
List versions;
Metadata repoMetadata = metadata.getMetadata();
return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
}
public List<ArtifactVersion> retrieveAvailableVersionsFromDeploymentRepository(
Artifact artifact,
ArtifactRepository localRepository,
ArtifactRepository deploymentRepository )
throws ArtifactMetadataRetrievalException
{
RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
try
{
repositoryMetadataManager.resolveAlways( metadata, localRepository, deploymentRepository );
}
catch ( RepositoryMetadataResolutionException e )
{
throw new ArtifactMetadataRetrievalException( e.getMessage(), e );
}
return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() );
}
private List<ArtifactVersion> retrieveAvailableVersionsFromMetadata( Metadata repoMetadata )
{
List<ArtifactVersion> versions;
if ( ( repoMetadata != null ) && ( repoMetadata.getVersioning() != null ) )
{
List metadataVersions = repoMetadata.getVersioning().getVersions();
versions = new ArrayList( metadataVersions.size() );
for ( Iterator i = metadataVersions.iterator(); i.hasNext(); )
List<String> metadataVersions = repoMetadata.getVersioning().getVersions();
versions = new ArrayList<ArtifactVersion>( metadataVersions.size() );
for ( String version : metadataVersions )
{
String version = (String) i.next();
versions.add( new DefaultArtifactVersion( version ) );
}
}
else
{
versions = Collections.EMPTY_LIST;
versions = Collections.<ArtifactVersion> emptyList();
}
return versions;

View File

@ -32,6 +32,7 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
@ -82,7 +83,7 @@ public Source( ArtifactFactory artifactFactory, ArtifactRepositoryFactory reposi
}
public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository,
List remoteRepositories )
List<ArtifactRepository> remoteRepositories )
throws ArtifactMetadataRetrievalException
{
Model model = null;
@ -141,8 +142,18 @@ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepo
return new ResolutionGroup( artifact, artifacts, artifactRepositories );
}
public List retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
List remoteRepositories )
public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
throws ArtifactMetadataRetrievalException
{
throw new UnsupportedOperationException( "Cannot get available versions in this test case" );
}
public List<ArtifactVersion> retrieveAvailableVersionsFromDeploymentRepository(
Artifact artifact,
ArtifactRepository localRepository,
ArtifactRepository remoteRepository )
throws ArtifactMetadataRetrievalException
{
throw new UnsupportedOperationException( "Cannot get available versions in this test case" );
}