diff options
author | Maria Odea B. Ching <oching@apache.org> | 2009-02-20 08:50:35 +0000 |
---|---|---|
committer | Maria Odea B. Ching <oching@apache.org> | 2009-02-20 08:50:35 +0000 |
commit | 0cecbab8be9eacccf01bb4dc096a643aaad45da5 (patch) | |
tree | 78dc90e579fc10afffeb5ab6a1772aadce2a7827 /archiva-modules/archiva-database | |
parent | 48e96d554fa626f031aa0cc88dfb0b15270eeb08 (diff) | |
download | archiva-0cecbab8be9eacccf01bb4dc096a643aaad45da5.tar.gz archiva-0cecbab8be9eacccf01bb4dc096a643aaad45da5.zip |
[MRM-913]
submitted by Jevica Arianne Zurbano
o patch does the following:
- deletes artifacts
- cleans up database
- executes scan to reflect changes when browsing repository
- updates metadata
- updates audit.log
- 'Delete Artifact' added in navigation and is displayed for users with repository manager role
- only allows manager of the repository to delete artifacts from it
o additional tweaks to the submitted patch:
- removed catch for NPE in DeleteArtifactAction
- migrated jsps & action class to struts 2
- moved invocation of cleanup consumers in DeleteArtifactAction to DatabaseConsumers (added new method for this in DatabaseConsumers)
- applied formatting
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@746183 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-database')
-rw-r--r-- | archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java b/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java index f8d9d9420..e79e51b50 100644 --- a/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java +++ b/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java @@ -25,11 +25,15 @@ import org.apache.commons.collections.functors.OrPredicate; import org.apache.maven.archiva.configuration.ArchivaConfiguration; import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration; import org.apache.maven.archiva.consumers.functors.PermanentConsumerPredicate; +import org.apache.maven.archiva.model.ArchivaArtifact; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; /** @@ -40,6 +44,8 @@ import java.util.List; public class DatabaseConsumers implements ApplicationContextAware { + private Logger log = LoggerFactory.getLogger( DatabaseConsumers.class ); + private ArchivaConfiguration archivaConfiguration; private Predicate selectedCleanupConsumers; @@ -149,4 +155,37 @@ public class DatabaseConsumers { return new ArrayList( applicationContext.getBeansOfType( DatabaseCleanupConsumer.class ).values() ); } + + /** + * Execute the cleanup consumers to cleanup the specified artifact from the database and index. + * + * @param artifact + */ + public void executeCleanupConsumer( ArchivaArtifact artifact ) + { + List consumers = getSelectedCleanupConsumers(); + Iterator it = consumers.iterator(); + while ( it.hasNext() ) + { + ArchivaArtifactConsumer consumer = (ArchivaArtifactConsumer) it.next(); + consumer.beginScan(); + } + + if ( CollectionUtils.isEmpty( consumers ) ) + { + log.warn( "There are no selected consumers for artifact cleanup." ); + return; + } + + ProcessArchivaArtifactClosure processArtifactClosure = new ProcessArchivaArtifactClosure(); + processArtifactClosure.setArtifact( artifact ); + + CollectionUtils.forAllDo( consumers, processArtifactClosure ); + + while ( it.hasNext() ) + { + ArchivaArtifactConsumer consumer = (ArchivaArtifactConsumer) it.next(); + consumer.completeScan(); + } + } } |