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
23 import org.apache.maven.api.ArtifactCoordinates;
24 import org.apache.maven.api.RemoteRepository;
25 import org.apache.maven.api.Session;
26 import org.apache.maven.api.annotations.Experimental;
27 import org.apache.maven.api.annotations.Nonnull;
28 import org.apache.maven.api.annotations.NotThreadSafe;
29 import org.apache.maven.api.annotations.Nullable;
30
31 import static org.apache.maven.api.services.BaseRequest.nonNull;
32
33
34
35
36
37 @Experimental
38 public interface VersionRangeResolverRequest {
39
40 @Nonnull
41 Session getSession();
42
43 @Nonnull
44 ArtifactCoordinates getArtifactCoordinates();
45
46 @Nullable
47 List<RemoteRepository> getRepositories();
48
49 @Nonnull
50 static VersionRangeResolverRequest build(
51 @Nonnull Session session, @Nonnull ArtifactCoordinates artifactCoordinates) {
52 return build(session, artifactCoordinates, null);
53 }
54
55 @Nonnull
56 static VersionRangeResolverRequest build(
57 @Nonnull Session session,
58 @Nonnull ArtifactCoordinates artifactCoordinates,
59 @Nullable List<RemoteRepository> repositories) {
60 return builder()
61 .session(nonNull(session, "session cannot be null"))
62 .artifactCoordinates(nonNull(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 ArtifactCoordinates artifactCoordinates;
76 List<RemoteRepository> repositories;
77
78 public VersionResolverRequestBuilder session(Session session) {
79 this.session = session;
80 return this;
81 }
82
83 public VersionResolverRequestBuilder artifactCoordinates(ArtifactCoordinates artifactCoordinates) {
84 this.artifactCoordinates = artifactCoordinates;
85 return this;
86 }
87
88 public VersionResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
89 this.repositories = repositories;
90 return this;
91 }
92
93 public VersionRangeResolverRequest build() {
94 return new DefaultVersionResolverRequest(session, artifactCoordinates, repositories);
95 }
96
97 private static class DefaultVersionResolverRequest extends BaseRequest<Session>
98 implements VersionRangeResolverRequest {
99 private final ArtifactCoordinates artifactCoordinates;
100 private final List<RemoteRepository> repositories;
101
102 @SuppressWarnings("checkstyle:ParameterNumber")
103 DefaultVersionResolverRequest(
104 @Nonnull Session session,
105 @Nonnull ArtifactCoordinates artifactCoordinates,
106 @Nullable List<RemoteRepository> repositories) {
107 super(session);
108 this.artifactCoordinates = artifactCoordinates;
109 this.repositories = repositories;
110 }
111
112 @Nonnull
113 @Override
114 public ArtifactCoordinates getArtifactCoordinates() {
115 return artifactCoordinates;
116 }
117
118 @Nullable
119 @Override
120 public List<RemoteRepository> getRepositories() {
121 return repositories;
122 }
123 }
124 }
125 }