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 Request<Session> {
40
41 @Nonnull
42 ArtifactCoordinates getArtifactCoordinates();
43
44 @Nullable
45 List<RemoteRepository> getRepositories();
46
47 @Nonnull
48 static VersionRangeResolverRequest build(
49 @Nonnull Session session, @Nonnull ArtifactCoordinates artifactCoordinates) {
50 return build(session, artifactCoordinates, null);
51 }
52
53 @Nonnull
54 static VersionRangeResolverRequest build(
55 @Nonnull Session session,
56 @Nonnull ArtifactCoordinates artifactCoordinates,
57 @Nullable List<RemoteRepository> repositories) {
58 return builder()
59 .session(requireNonNull(session, "session cannot be null"))
60 .artifactCoordinates(requireNonNull(artifactCoordinates, "artifactCoordinates cannot be null"))
61 .repositories(repositories)
62 .build();
63 }
64
65 @Nonnull
66 static VersionResolverRequestBuilder builder() {
67 return new VersionResolverRequestBuilder();
68 }
69
70 @NotThreadSafe
71 class VersionResolverRequestBuilder {
72 Session session;
73 RequestTrace trace;
74 ArtifactCoordinates artifactCoordinates;
75 List<RemoteRepository> repositories;
76
77 public VersionResolverRequestBuilder session(Session session) {
78 this.session = session;
79 return this;
80 }
81
82 public VersionResolverRequestBuilder trace(RequestTrace trace) {
83 this.trace = trace;
84 return this;
85 }
86
87 public VersionResolverRequestBuilder artifactCoordinates(ArtifactCoordinates artifactCoordinates) {
88 this.artifactCoordinates = artifactCoordinates;
89 return this;
90 }
91
92 public VersionResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
93 this.repositories = repositories;
94 return this;
95 }
96
97 public VersionRangeResolverRequest build() {
98 return new DefaultVersionResolverRequest(session, trace, artifactCoordinates, repositories);
99 }
100
101 private static class DefaultVersionResolverRequest extends BaseRequest<Session>
102 implements VersionRangeResolverRequest {
103 private final ArtifactCoordinates artifactCoordinates;
104 private final List<RemoteRepository> repositories;
105
106 @SuppressWarnings("checkstyle:ParameterNumber")
107 DefaultVersionResolverRequest(
108 @Nonnull Session session,
109 @Nullable RequestTrace trace,
110 @Nonnull ArtifactCoordinates artifactCoordinates,
111 @Nullable List<RemoteRepository> repositories) {
112 super(session, trace);
113 this.artifactCoordinates = artifactCoordinates;
114 this.repositories = repositories;
115 }
116
117 @Nonnull
118 @Override
119 public ArtifactCoordinates getArtifactCoordinates() {
120 return artifactCoordinates;
121 }
122
123 @Nullable
124 @Override
125 public List<RemoteRepository> getRepositories() {
126 return repositories;
127 }
128
129 @Override
130 public boolean equals(Object o) {
131 return o instanceof DefaultVersionResolverRequest that
132 && Objects.equals(artifactCoordinates, that.artifactCoordinates)
133 && Objects.equals(repositories, that.repositories);
134 }
135
136 @Override
137 public int hashCode() {
138 return Objects.hash(artifactCoordinates, repositories);
139 }
140
141 @Override
142 public String toString() {
143 return "VersionResolverRequest[" + "artifactCoordinates="
144 + artifactCoordinates + ", repositories="
145 + repositories + ']';
146 }
147 }
148 }
149 }