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