1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.api.services;
20
21 import java.util.List;
22 import java.util.Objects;
23
24 import org.apache.maven.api.ArtifactCoordinates;
25 import org.apache.maven.api.RemoteRepository;
26 import org.apache.maven.api.Session;
27 import org.apache.maven.api.annotations.Experimental;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.annotations.NotThreadSafe;
30 import org.apache.maven.api.annotations.Nullable;
31
32 import static java.util.Objects.requireNonNull;
33
34
35
36
37
38 @Experimental
39 public interface VersionRangeResolverRequest extends RepositoryAwareRequest {
40
41 @Nonnull
42 ArtifactCoordinates getArtifactCoordinates();
43
44 @Nonnull
45 static VersionRangeResolverRequest build(
46 @Nonnull Session session, @Nonnull ArtifactCoordinates artifactCoordinates) {
47 return build(session, artifactCoordinates, null);
48 }
49
50 @Nonnull
51 static VersionRangeResolverRequest build(
52 @Nonnull Session session,
53 @Nonnull ArtifactCoordinates artifactCoordinates,
54 @Nullable List<RemoteRepository> repositories) {
55 return builder()
56 .session(requireNonNull(session, "session cannot be null"))
57 .artifactCoordinates(requireNonNull(artifactCoordinates, "artifactCoordinates cannot be null"))
58 .repositories(repositories)
59 .build();
60 }
61
62 @Nonnull
63 static VersionResolverRequestBuilder builder() {
64 return new VersionResolverRequestBuilder();
65 }
66
67 @NotThreadSafe
68 class VersionResolverRequestBuilder {
69 Session session;
70 RequestTrace trace;
71 ArtifactCoordinates artifactCoordinates;
72 List<RemoteRepository> repositories;
73
74 public VersionResolverRequestBuilder session(Session session) {
75 this.session = session;
76 return this;
77 }
78
79 public VersionResolverRequestBuilder trace(RequestTrace trace) {
80 this.trace = trace;
81 return this;
82 }
83
84 public VersionResolverRequestBuilder artifactCoordinates(ArtifactCoordinates artifactCoordinates) {
85 this.artifactCoordinates = artifactCoordinates;
86 return this;
87 }
88
89 public VersionResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
90 this.repositories = repositories;
91 return this;
92 }
93
94 public VersionRangeResolverRequest build() {
95 return new DefaultVersionResolverRequest(session, trace, artifactCoordinates, repositories);
96 }
97
98 private static class DefaultVersionResolverRequest extends BaseRequest<Session>
99 implements VersionRangeResolverRequest {
100 private final ArtifactCoordinates artifactCoordinates;
101 private final List<RemoteRepository> repositories;
102
103 @SuppressWarnings("checkstyle:ParameterNumber")
104 DefaultVersionResolverRequest(
105 @Nonnull Session session,
106 @Nullable RequestTrace trace,
107 @Nonnull ArtifactCoordinates artifactCoordinates,
108 @Nullable List<RemoteRepository> repositories) {
109 super(session, trace);
110 this.artifactCoordinates = artifactCoordinates;
111 this.repositories = validate(repositories);
112 }
113
114 @Nonnull
115 @Override
116 public ArtifactCoordinates getArtifactCoordinates() {
117 return artifactCoordinates;
118 }
119
120 @Nullable
121 @Override
122 public List<RemoteRepository> getRepositories() {
123 return repositories;
124 }
125
126 @Override
127 public boolean equals(Object o) {
128 return o instanceof DefaultVersionResolverRequest that
129 && Objects.equals(artifactCoordinates, that.artifactCoordinates)
130 && Objects.equals(repositories, that.repositories);
131 }
132
133 @Override
134 public int hashCode() {
135 return Objects.hash(artifactCoordinates, repositories);
136 }
137
138 @Override
139 public String toString() {
140 return "VersionResolverRequest[" + "artifactCoordinates="
141 + artifactCoordinates + ", repositories="
142 + repositories + ']';
143 }
144 }
145 }
146 }