1 package org.apache.continuum.purge.executor;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.continuum.purge.ContinuumPurgeConstants;
23 import org.apache.continuum.purge.repository.content.RepositoryManagedContent;
24 import org.apache.maven.archiva.consumers.core.repository.ArtifactFilenameFilter;
25 import org.apache.maven.archiva.model.ArtifactReference;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 import java.io.File;
30 import java.io.FilenameFilter;
31 import java.util.Set;
32
33
34
35
36
37
38 public abstract class AbstractContinuumPurgeExecutor
39 implements ContinuumPurgeExecutor
40 {
41 private static final Logger log = LoggerFactory.getLogger( AbstractContinuumPurgeExecutor.class );
42
43 public void purge( Set<ArtifactReference> references, RepositoryManagedContent repository )
44 {
45 if ( references != null && !references.isEmpty() )
46 {
47 for ( ArtifactReference reference : references )
48 {
49 File artifactFile = repository.toFile( reference );
50 artifactFile.delete();
51 log.info( ContinuumPurgeConstants.PURGE_ARTIFACT + " - " + artifactFile.getName() );
52 purgeSupportFiles( artifactFile, artifactFile.getName() );
53
54 purgeSupportFiles( artifactFile.getParentFile(), "maven-metadata" );
55 }
56 }
57 }
58
59
60
61
62
63
64
65
66
67
68
69 protected void purgeSupportFiles( File artifactFile, String filename )
70 {
71 File parentDir = artifactFile.getParentFile();
72
73 if ( !parentDir.exists() )
74 {
75 return;
76 }
77
78 FilenameFilter filter = new ArtifactFilenameFilter( filename );
79
80 File[] files = parentDir.listFiles( filter );
81
82 for ( File file : files )
83 {
84 if ( file.exists() && file.isFile() )
85 {
86 file.delete();
87 log.info( ContinuumPurgeConstants.PURGE_FILE + " - " + file.getName() );
88 }
89 }
90 }
91 }