1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.util.graph.version;
20
21 import java.util.Iterator;
22 import java.util.Objects;
23 import java.util.function.Predicate;
24
25 import org.eclipse.aether.artifact.Artifact;
26 import org.eclipse.aether.collection.DependencyCollectionContext;
27 import org.eclipse.aether.collection.VersionFilter;
28 import org.eclipse.aether.version.Version;
29
30 import static java.util.Objects.requireNonNull;
31
32
33
34
35
36
37 public final class PredicateVersionFilter implements VersionFilter {
38 private final Predicate<Artifact> artifactPredicate;
39
40
41
42
43 public PredicateVersionFilter(Predicate<Artifact> artifactPredicate) {
44 this.artifactPredicate = requireNonNull(artifactPredicate);
45 }
46
47 @Override
48 public void filterVersions(VersionFilterContext context) {
49 Artifact dependencyArtifact = context.getDependency().getArtifact();
50 Iterator<Version> it = context.iterator();
51 while (it.hasNext()) {
52 Version version = it.next();
53 if (!artifactPredicate.test(dependencyArtifact.setVersion(version.toString()))) {
54 it.remove();
55 }
56 }
57 }
58
59 @Override
60 public VersionFilter deriveChildFilter(DependencyCollectionContext context) {
61 return this;
62 }
63
64 @Override
65 public boolean equals(Object o) {
66 if (this == o) {
67 return true;
68 }
69 if (o == null || getClass() != o.getClass()) {
70 return false;
71 }
72 PredicateVersionFilter that = (PredicateVersionFilter) o;
73 return Objects.equals(artifactPredicate, that.artifactPredicate);
74 }
75
76 @Override
77 public int hashCode() {
78 return Objects.hash(artifactPredicate);
79 }
80 }