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.Collections;
23 import java.util.List;
24 import java.util.Objects;
25
26 import org.apache.maven.api.ProducedArtifact;
27 import org.apache.maven.api.Session;
28 import org.apache.maven.api.annotations.Experimental;
29 import org.apache.maven.api.annotations.Immutable;
30 import org.apache.maven.api.annotations.Nonnull;
31 import org.apache.maven.api.annotations.NotThreadSafe;
32 import org.apache.maven.api.annotations.Nullable;
33
34 import static java.util.Objects.requireNonNull;
35
36
37
38
39
40
41 @Experimental
42 @Immutable
43 public interface ArtifactInstallerRequest extends Request<Session> {
44
45 @Nonnull
46 Collection<ProducedArtifact> getArtifacts();
47
48 @Nonnull
49 static ArtifactInstallerRequestBuilder builder() {
50 return new ArtifactInstallerRequestBuilder();
51 }
52
53 @Nonnull
54 static ArtifactInstallerRequest build(Session session, Collection<ProducedArtifact> artifacts) {
55 return builder()
56 .session(requireNonNull(session, "session cannot be null"))
57 .artifacts(requireNonNull(artifacts, "artifacts cannot be null"))
58 .build();
59 }
60
61 @NotThreadSafe
62 class ArtifactInstallerRequestBuilder {
63 Session session;
64 RequestTrace trace;
65 Collection<ProducedArtifact> artifacts = Collections.emptyList();
66
67 ArtifactInstallerRequestBuilder() {}
68
69 @Nonnull
70 public ArtifactInstallerRequestBuilder session(@Nonnull Session session) {
71 this.session = session;
72 return this;
73 }
74
75 @Nonnull
76 public ArtifactInstallerRequestBuilder trace(RequestTrace trace) {
77 this.trace = trace;
78 return this;
79 }
80
81 @Nonnull
82 public ArtifactInstallerRequestBuilder artifacts(@Nullable Collection<ProducedArtifact> artifacts) {
83 this.artifacts = artifacts != null ? artifacts : Collections.emptyList();
84 return this;
85 }
86
87 @Nonnull
88 public ArtifactInstallerRequest build() {
89 return new DefaultArtifactInstallerRequest(session, trace, artifacts);
90 }
91
92 static class DefaultArtifactInstallerRequest extends BaseRequest<Session> implements ArtifactInstallerRequest {
93
94 private final Collection<ProducedArtifact> artifacts;
95
96 DefaultArtifactInstallerRequest(
97 @Nonnull Session session,
98 @Nullable RequestTrace trace,
99 @Nonnull Collection<ProducedArtifact> artifacts) {
100 super(session, trace);
101 this.artifacts = List.copyOf(requireNonNull(artifacts, "artifacts cannot be null"));
102 }
103
104 @Nonnull
105 @Override
106 public Collection<ProducedArtifact> getArtifacts() {
107 return artifacts;
108 }
109
110 @Override
111 public boolean equals(Object o) {
112 return o instanceof DefaultArtifactInstallerRequest that && Objects.equals(artifacts, that.artifacts);
113 }
114
115 @Override
116 public int hashCode() {
117 return Objects.hashCode(artifacts);
118 }
119
120 @Override
121 public String toString() {
122 return "ArtifactInstallerRequest[" + "artifacts=" + artifacts + ']';
123 }
124 }
125 }
126 }