1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.resolver.filter;
20
21 import java.util.List;
22 import java.util.function.Predicate;
23 import org.apache.maven.artifact.Artifact;
24 import org.apache.maven.model.Exclusion;
25
26
27
28
29 public class ExclusionArtifactFilter implements ArtifactFilter {
30 private static final String WILDCARD = "*";
31
32 private final List<Exclusion> exclusions;
33
34 public ExclusionArtifactFilter(List<Exclusion> exclusions) {
35 this.exclusions = exclusions;
36 }
37
38 private Predicate<Exclusion> sameArtifactId(Artifact artifact) {
39 return exclusion -> exclusion.getArtifactId().equals(artifact.getArtifactId());
40 }
41
42 private Predicate<Exclusion> sameGroupId(Artifact artifact) {
43 return exclusion -> exclusion.getGroupId().equals(artifact.getGroupId());
44 }
45
46 private Predicate<Exclusion> groupIdIsWildcard = exclusion -> WILDCARD.equals(exclusion.getGroupId());
47
48 private Predicate<Exclusion> artifactIdIsWildcard = exclusion -> WILDCARD.equals(exclusion.getArtifactId());
49
50 private Predicate<Exclusion> groupIdAndArtifactIdIsWildcard = groupIdIsWildcard.and(artifactIdIsWildcard);
51
52 private Predicate<Exclusion> exclude(Artifact artifact) {
53 return groupIdAndArtifactIdIsWildcard
54 .or(groupIdIsWildcard.and(sameArtifactId(artifact)))
55 .or(artifactIdIsWildcard.and(sameGroupId(artifact)))
56 .or(sameGroupId(artifact).and(sameArtifactId(artifact)));
57 }
58
59 @Override
60 public boolean include(Artifact artifact) {
61 return !exclusions.stream().anyMatch(exclude(artifact));
62 }
63 }