summaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-database
diff options
context:
space:
mode:
authorMaria Odea B. Ching <oching@apache.org>2009-02-20 08:50:35 +0000
committerMaria Odea B. Ching <oching@apache.org>2009-02-20 08:50:35 +0000
commit0cecbab8be9eacccf01bb4dc096a643aaad45da5 (patch)
tree78dc90e579fc10afffeb5ab6a1772aadce2a7827 /archiva-modules/archiva-database
parent48e96d554fa626f031aa0cc88dfb0b15270eeb08 (diff)
downloadarchiva-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.java39
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();
+ }
+ }
}