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