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 implements ArtifactResolverRequest {
110 @Nonnull
111 private final Collection<? extends ArtifactCoordinates> coordinates;
112
113 @Nullable
114 private final List<RemoteRepository> repositories;
115
116 DefaultArtifactResolverRequest(
117 @Nonnull Session session,
118 @Nonnull Collection<? extends ArtifactCoordinates> coordinates,
119 @Nonnull List<RemoteRepository> repositories) {
120 super(session);
121 this.coordinates = unmodifiable(nonNull(coordinates, "coordinates cannot be null"));
122 this.repositories = repositories;
123 }
124
125 @Nonnull
126 @Override
127 public Collection<? extends ArtifactCoordinates> getCoordinates() {
128 return coordinates;
129 }
130
131 @Nullable
132 @Override
133 public List<RemoteRepository> getRepositories() {
134 return repositories;
135 }
136 }
137 }
138 }