1 package org.apache.maven;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.LinkedHashSet;
23 import java.util.List;
24 import java.util.Set;
25
26 import javax.inject.Inject;
27 import javax.inject.Named;
28 import javax.inject.Singleton;
29
30 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
31 import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
32 import org.apache.maven.extension.internal.CoreExportsProvider;
33
34
35
36
37 @Named
38 @Singleton
39 @SuppressWarnings( "deprecation" )
40 public class DefaultArtifactFilterManager
41 implements ArtifactFilterManager
42 {
43
44
45 protected final List<ArtifactFilterManagerDelegate> delegates;
46
47 protected Set<String> excludedArtifacts;
48
49 private final Set<String> coreArtifacts;
50
51 @Inject
52 public DefaultArtifactFilterManager( List<ArtifactFilterManagerDelegate> delegates,
53 CoreExportsProvider coreExports )
54 {
55 this.delegates = delegates;
56 this.coreArtifacts = coreExports.get().getExportedArtifacts();
57 }
58
59 private synchronized Set<String> getExcludedArtifacts()
60 {
61 if ( excludedArtifacts == null )
62 {
63 excludedArtifacts = new LinkedHashSet<>( coreArtifacts );
64 }
65 return excludedArtifacts;
66 }
67
68
69
70
71
72
73 public ArtifactFilter getArtifactFilter()
74 {
75 Set<String> excludes = new LinkedHashSet<>( getExcludedArtifacts() );
76
77 for ( ArtifactFilterManagerDelegate delegate : delegates )
78 {
79 delegate.addExcludes( excludes );
80 }
81
82 return new ExclusionSetFilter( excludes );
83 }
84
85
86
87
88
89
90 public ArtifactFilter getCoreArtifactFilter()
91 {
92 return new ExclusionSetFilter( getCoreArtifactExcludes() );
93 }
94
95 public void excludeArtifact( String artifactId )
96 {
97 getExcludedArtifacts().add( artifactId );
98 }
99
100 public Set<String> getCoreArtifactExcludes()
101 {
102 Set<String> excludes = new LinkedHashSet<>( coreArtifacts );
103
104 for ( ArtifactFilterManagerDelegate delegate : delegates )
105 {
106 delegate.addCoreExcludes( excludes );
107 }
108
109 return excludes;
110 }
111
112 }