*/
protected void purge( Set<ArtifactReference> references )
{
if ( references != null && !references.isEmpty() )
{
MetadataRepository metadataRepository = repositorySession.getRepository();
for ( ArtifactReference reference : references )
{
File artifactFile = repository.toFile( reference );
for ( RepositoryListener listener : listeners )
{
listener.deleteArtifact( metadataRepository, repository.getId(), reference.getGroupId(),
reference.getArtifactId(), reference.getVersion(),
artifactFile.getName() );
}
// TODO: this needs to be logged
artifactFile.delete();
try
{
repository.deleteArtifact( reference );
}
catch ( ContentNotFoundException e )
{
log.warn( "skip error deleting artifact {}: {}", reference, e.getMessage() );
}
try
{
metadataRepository.removeProjectVersion( repository.getId(), reference.getGroupId(),
reference.getArtifactId(), reference.getVersion() );
}
catch ( MetadataRepositoryException e )
{
log.warn( "skip error removeProjectVersion artifact {}: {}", reference, e.getMessage() );
}
boolean snapshotVersion = VersionUtil.isSnapshot( reference.getVersion() );
try
{
if ( snapshotVersion )
{
String baseVersion = VersionUtil.getBaseVersion( reference.getVersion() );
Collection<ArtifactMetadata> artifacts =
metadataRepository.getArtifacts( repository.getId(), reference.getGroupId(),
reference.getArtifactId(), baseVersion );
if ( artifacts != null )
{
// cleanup snapshots metadata
for ( ArtifactMetadata artifactMetadata : artifacts )
{
// TODO: mismatch between artifact (snapshot) version and project (base) version here
if ( artifactMetadata.getVersion().equals( reference.getVersion() ) )
{
if ( StringUtils.isNotBlank( reference.getClassifier() ) )
{
// cleanup facet which contains classifier information
MavenArtifactFacet mavenArtifactFacet =
(MavenArtifactFacet) artifactMetadata.getFacet(
MavenArtifactFacet.FACET_ID );
if ( StringUtils.equals( reference.getClassifier(),
mavenArtifactFacet.getClassifier() ) )
{
artifactMetadata.removeFacet( MavenArtifactFacet.FACET_ID );
String groupId = reference.getGroupId(), artifactId =
reference.getArtifactId(),
version = reference.getVersion();
MavenArtifactFacet mavenArtifactFacetToCompare = new MavenArtifactFacet();
mavenArtifactFacetToCompare.setClassifier( reference.getClassifier() );
metadataRepository.removeArtifact( repository.getId(), groupId, artifactId,
version, mavenArtifactFacetToCompare );
metadataRepository.save();
}
}
else
{
metadataRepository.removeArtifact( artifactMetadata, VersionUtil.getBaseVersion(
reference.getVersion() ) );
}
}
}