Browse Source

[MRM-1701] metadatas are not removed when a snapshot is purged.

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1400323 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.4-M4
Olivier Lamy 11 years ago
parent
commit
4b5be0143c

+ 86
- 3
archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurge.java View File

@@ -20,16 +20,24 @@ package org.apache.archiva.consumers.core.repository;
*/

import org.apache.archiva.audit.AuditEvent;
import org.apache.archiva.common.utils.VersionUtil;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.RepositorySession;
import org.apache.archiva.repository.events.RepositoryListener;
import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ContentNotFoundException;
import org.apache.archiva.repository.ManagedRepositoryContent;
import org.apache.archiva.repository.events.RepositoryListener;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Collection;
import java.util.List;
import java.util.Set;

@@ -39,7 +47,7 @@ import java.util.Set;
public abstract class AbstractRepositoryPurge
implements RepositoryPurge
{
protected Logger log = LoggerFactory.getLogger( AbstractRepositoryPurge.class );
protected Logger log = LoggerFactory.getLogger( getClass() );

protected final ManagedRepositoryContent repository;

@@ -83,7 +91,82 @@ public abstract class AbstractRepositoryPurge

// TODO: this needs to be logged
artifactFile.delete();
//repository.deleteArtifact( reference );
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 );
// 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() ) );
}

}
}
}
}
catch ( MetadataResolutionException e )
{
log.warn( "skip error deleting metadata {}: {}", reference, e.getMessage() );
}
catch ( MetadataRepositoryException e )
{
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

repositorySession.save();

triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ),

+ 0
- 3
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java View File

@@ -766,9 +766,6 @@ public class DefaultRepositoriesService
artifactMetadata.removeFacet( MavenArtifactFacet.FACET_ID );
String groupId = artifact.getGroupId(), artifactId = artifact.getArtifactId(), version =
artifact.getVersion();
//metadataRepository.updateArtifact( repositoryId, groupId, artifactId, version,
// artifactMetadata );
// String repositoryId, String namespace, String project, String version, String projectId, MetadataFacet metadataFacet
MavenArtifactFacet mavenArtifactFacetToCompare = new MavenArtifactFacet();
mavenArtifactFacetToCompare.setClassifier( artifact.getClassifier() );
metadataRepository.removeArtifact( repositoryId, groupId, artifactId, version,

+ 2
- 2
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/redback/user.js View File

@@ -77,7 +77,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
this.modified=ko.observable(false);

this.rememberme=false;
this.password=null;
this.logged=false;

this.remove = function() {
@@ -413,7 +413,7 @@ function(jquery,utils,i18n,jqueryValidate,ko,koSimpleGrid) {
// FIXME check validated
user.rememberme=window.redbackModel.rememberme;
if(user.rememberme){
user.password=window.redbackModel.password;
user.password(window.redbackModel.password);
}
$.log("user.rememberme:"+(user.rememberme));
reccordLoginCookie(user);

Loading…
Cancel
Save