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