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.Collection;
22 import java.util.List;
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.Immutable;
29 import org.apache.maven.api.annotations.Nonnull;
30 import org.apache.maven.api.annotations.NotThreadSafe;
31 import org.apache.maven.api.annotations.Nullable;
32
33 import static org.apache.maven.api.services.BaseRequest.nonNull;
34
35
36
37
38
39
40 @Experimental
41 @Immutable
42 public interface ArtifactResolverRequest {
43 @Nonnull
44 Session getSession();
45
46 @Nonnull
47 Collection<? extends ArtifactCoordinates> getCoordinates();
48
49 @Nonnull
50 List<RemoteRepository> getRepositories();
51
52 @Nonnull
53 static ArtifactResolverRequestBuilder builder() {
54 return new ArtifactResolverRequestBuilder();
55 }
56
57 @Nonnull
58 static ArtifactResolverRequest build(
59 @Nonnull Session session, @Nonnull Collection<? extends ArtifactCoordinates> coordinates) {
60 return builder()
61 .session(nonNull(session, "session cannot be null"))
62 .coordinates(nonNull(coordinates, "coordinates cannot be null"))
63 .build();
64 }
65
66 @Nonnull
67 static ArtifactResolverRequest build(
68 @Nonnull Session session,
69 @Nonnull Collection<? extends ArtifactCoordinates> coordinates,
70 List<RemoteRepository> repositories) {
71 return builder()
72 .session(nonNull(session, "session cannot be null"))
73 .coordinates(nonNull(coordinates, "coordinates cannot be null"))
74 .repositories(repositories)
75 .build();
76 }
77
78 @NotThreadSafe
79 class ArtifactResolverRequestBuilder {
80 Session session;
81 Collection<? extends ArtifactCoordinates> coordinates;
82 List<RemoteRepository> repositories;
83
84 ArtifactResolverRequestBuilder() {}
85
86 @Nonnull
87 public ArtifactResolverRequestBuilder session(Session session) {
88 this.session = session;
89 return this;
90 }
91
92 @Nonnull
93 public ArtifactResolverRequestBuilder coordinates(Collection<? extends ArtifactCoordinates> coordinates) {
94 this.coordinates = coordinates;
95 return this;
96 }
97
98 @Nonnull
99 public ArtifactResolverRequestBuilder repositories(List<RemoteRepository> repositories) {
100 this.repositories = repositories;
101 return this;
102 }
103
104 @Nonnull
105 public ArtifactResolverRequest build() {
106 return new DefaultArtifactResolverRequest(session, coordinates, repositories);
107 }
108
109 private static class DefaultArtifactResolverRequest extends BaseRequest<Session>
110 implements ArtifactResolverRequest {
111 @Nonnull
112 private final Collection<? extends ArtifactCoordinates> coordinates;
113
114 @Nullable
115 private final List<RemoteRepository> repositories;
116
117 DefaultArtifactResolverRequest(
118 @Nonnull Session session,
119 @Nonnull Collection<? extends ArtifactCoordinates> coordinates,
120 @Nonnull List<RemoteRepository> repositories) {
121 super(session);
122 this.coordinates = unmodifiable(nonNull(coordinates, "coordinates cannot be null"));
123 this.repositories = repositories;
124 }
125
126 @Nonnull
127 @Override
128 public Collection<? extends ArtifactCoordinates> getCoordinates() {
129 return coordinates;
130 }
131
132 @Nullable
133 @Override
134 public List<RemoteRepository> getRepositories() {
135 return repositories;
136 }
137 }
138 }
139 }