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 implements VersionRangeResolverRequest {
98 private final ArtifactCoordinates artifactCoordinates;
99 private final List<RemoteRepository> repositories;
100
101 @SuppressWarnings("checkstyle:ParameterNumber")
102 DefaultVersionResolverRequest(
103 @Nonnull Session session,
104 @Nonnull ArtifactCoordinates artifactCoordinates,
105 @Nullable List<RemoteRepository> repositories) {
106 super(session);
107 this.artifactCoordinates = artifactCoordinates;
108 this.repositories = repositories;
109 }
110
111 @Nonnull
112 @Override
113 public ArtifactCoordinates getArtifactCoordinates() {
114 return artifactCoordinates;
115 }
116
117 @Nullable
118 @Override
119 public List<RemoteRepository> getRepositories() {
120 return repositories;
121 }
122 }
123 }
124 }