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
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.model.Exclusion;
26
27
28
29
30 public class ExclusionArtifactFilter implements ArtifactFilter {
31 private static final String WILDCARD = "*";
32
33 private final List<Exclusion> exclusions;
34
35 public ExclusionArtifactFilter(List<Exclusion> exclusions) {
36 this.exclusions = exclusions;
37 }
38
39 private Predicate<Exclusion> sameArtifactId(Artifact artifact) {
40 return exclusion -> exclusion.getArtifactId().equals(artifact.getArtifactId());
41 }
42
43 private Predicate<Exclusion> sameGroupId(Artifact artifact) {
44 return exclusion -> exclusion.getGroupId().equals(artifact.getGroupId());
45 }
46
47 private Predicate<Exclusion> groupIdIsWildcard = exclusion -> WILDCARD.equals(exclusion.getGroupId());
48
49 private Predicate<Exclusion> artifactIdIsWildcard = exclusion -> WILDCARD.equals(exclusion.getArtifactId());
50
51 private Predicate<Exclusion> groupIdAndArtifactIdIsWildcard = groupIdIsWildcard.and(artifactIdIsWildcard);
52
53 private Predicate<Exclusion> exclude(Artifact artifact) {
54 return groupIdAndArtifactIdIsWildcard
55 .or(groupIdIsWildcard.and(sameArtifactId(artifact)))
56 .or(artifactIdIsWildcard.and(sameGroupId(artifact)))
57 .or(sameGroupId(artifact).and(sameArtifactId(artifact)));
58 }
59
60 @Override
61 public boolean include(Artifact artifact) {
62 return !exclusions.stream().anyMatch(exclude(artifact));
63 }
64 }