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 VersionResolverRequest {
39
40 @Nonnull
41 Session getSession();
42
43 @Nonnull
44 ArtifactCoordinates getArtifactCoordinates();
45
46 @Nullable
47 List<RemoteRepository> getRepositories();
48
49 @Nonnull
50 static VersionResolverRequest build(@Nonnull Session session, @Nonnull ArtifactCoordinates artifactCoordinates) {
51 return builder()
52 .session(nonNull(session, "session cannot be null"))
53 .artifactCoordinates(nonNull(artifactCoordinates, "artifactCoordinates cannot be null"))
54 .build();
55 }
56
57 @Nonnull
58 static VersionResolverRequest build(
59 @Nonnull Session session,
60 @Nonnull ArtifactCoordinates artifactCoordinates,
61 @Nullable List<RemoteRepository> repositories) {
62 return builder()
63 .session(nonNull(session, "session cannot be null"))
64 .artifactCoordinates(nonNull(artifactCoordinates, "artifactCoordinates cannot be null"))
65 .repositories(repositories)
66 .build();
67 }
68
69 @Nonnull
70 static VersionResolverRequestBuilder builder() {
71 return new VersionResolverRequestBuilder();
72 }
73
74 @NotThreadSafe
75 class VersionResolverRequestBuilder {
76 Session session;
77 ArtifactCoordinates artifactCoordinates;
78 List<RemoteRepository> repositories;
79
80 public VersionResolverRequestBuilder session(Session session) {
81 this.session = session;
82 return this;
83 }
84
85 public VersionResolverRequestBuilder artifactCoordinates(ArtifactCoordinates artifactCoordinates) {
86 this.artifactCoordinates = artifactCoordinates;
87 return this;
88 }
89
90 public VersionResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
91 this.repositories = repositories;
92 return this;
93 }
94
95 public VersionResolverRequest build() {
96 return new DefaultVersionResolverRequest(session, artifactCoordinates, repositories);
97 }
98
99 private static class DefaultVersionResolverRequest extends BaseRequest<Session>
100 implements VersionResolverRequest {
101 private final ArtifactCoordinates artifactCoordinates;
102 private final List<RemoteRepository> repositories;
103
104 @SuppressWarnings("checkstyle:ParameterNumber")
105 DefaultVersionResolverRequest(
106 @Nonnull Session session,
107 @Nonnull ArtifactCoordinates artifactCoordinates,
108 @Nullable List<RemoteRepository> repositories) {
109 super(session);
110 this.artifactCoordinates = artifactCoordinates;
111 this.repositories = repositories;
112 }
113
114 @Nonnull
115 @Override
116 public ArtifactCoordinates getArtifactCoordinates() {
117 return artifactCoordinates;
118 }
119
120 @Nullable
121 @Override
122 public List<RemoteRepository> getRepositories() {
123 return repositories;
124 }
125 }
126 }
127 }