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.nio.file.Files;
22 import java.nio.file.Path;
23 import java.util.Objects;
24 import java.util.Optional;
25
26 import org.apache.maven.api.ProtoSession;
27 import org.apache.maven.api.annotations.Experimental;
28 import org.apache.maven.api.annotations.Nonnull;
29 import org.apache.maven.api.annotations.NotThreadSafe;
30 import org.apache.maven.api.annotations.Nullable;
31
32 import static java.util.Objects.requireNonNull;
33
34
35
36
37
38 @Experimental
39 public interface ToolchainsBuilderRequest extends Request<ProtoSession> {
40
41
42
43
44
45
46 @Nonnull
47 Optional<Source> getInstallationToolchainsSource();
48
49
50
51
52
53
54 @Nonnull
55 Optional<Source> getUserToolchainsSource();
56
57 @Nonnull
58 static ToolchainsBuilderRequest build(
59 @Nonnull ProtoSession session,
60 @Nullable Source installationToolchainsFile,
61 @Nullable Source userToolchainsSource) {
62 return builder()
63 .session(requireNonNull(session, "session cannot be null"))
64 .installationToolchainsSource(installationToolchainsFile)
65 .userToolchainsSource(userToolchainsSource)
66 .build();
67 }
68
69 @Nonnull
70 static ToolchainsBuilderRequest build(
71 @Nonnull ProtoSession session,
72 @Nullable Path installationToolchainsFile,
73 @Nullable Path userToolchainsPath) {
74 return builder()
75 .session(requireNonNull(session, "session cannot be null"))
76 .installationToolchainsSource(
77 installationToolchainsFile != null && Files.exists(installationToolchainsFile)
78 ? Sources.fromPath(installationToolchainsFile)
79 : null)
80 .userToolchainsSource(
81 userToolchainsPath != null && Files.exists(userToolchainsPath)
82 ? Sources.fromPath(userToolchainsPath)
83 : null)
84 .build();
85 }
86
87 @Nonnull
88 static ToolchainsBuilderRequestBuilder builder() {
89 return new ToolchainsBuilderRequestBuilder();
90 }
91
92 @NotThreadSafe
93 class ToolchainsBuilderRequestBuilder {
94 ProtoSession session;
95 RequestTrace trace;
96 Source installationToolchainsSource;
97 Source userToolchainsSource;
98
99 public ToolchainsBuilderRequestBuilder session(ProtoSession session) {
100 this.session = session;
101 return this;
102 }
103
104 public ToolchainsBuilderRequestBuilder trace(RequestTrace trace) {
105 this.trace = trace;
106 return this;
107 }
108
109 public ToolchainsBuilderRequestBuilder installationToolchainsSource(Source installationToolchainsSource) {
110 this.installationToolchainsSource = installationToolchainsSource;
111 return this;
112 }
113
114 public ToolchainsBuilderRequestBuilder userToolchainsSource(Source userToolchainsSource) {
115 this.userToolchainsSource = userToolchainsSource;
116 return this;
117 }
118
119 public ToolchainsBuilderRequest build() {
120 return new ToolchainsBuilderRequestBuilder.DefaultToolchainsBuilderRequest(
121 session, trace, installationToolchainsSource, userToolchainsSource);
122 }
123
124 private static class DefaultToolchainsBuilderRequest extends BaseRequest<ProtoSession>
125 implements ToolchainsBuilderRequest {
126 private final Source installationToolchainsSource;
127 private final Source userToolchainsSource;
128
129 @SuppressWarnings("checkstyle:ParameterNumber")
130 DefaultToolchainsBuilderRequest(
131 @Nonnull ProtoSession session,
132 @Nullable RequestTrace trace,
133 @Nullable Source installationToolchainsSource,
134 @Nullable Source userToolchainsSource) {
135 super(session, trace);
136 this.installationToolchainsSource = installationToolchainsSource;
137 this.userToolchainsSource = userToolchainsSource;
138 }
139
140 @Nonnull
141 @Override
142 public Optional<Source> getInstallationToolchainsSource() {
143 return Optional.ofNullable(installationToolchainsSource);
144 }
145
146 @Nonnull
147 @Override
148 public Optional<Source> getUserToolchainsSource() {
149 return Optional.ofNullable(userToolchainsSource);
150 }
151
152 @Override
153 public boolean equals(Object o) {
154 return o instanceof DefaultToolchainsBuilderRequest that
155 && Objects.equals(installationToolchainsSource, that.installationToolchainsSource)
156 && Objects.equals(userToolchainsSource, that.userToolchainsSource);
157 }
158
159 @Override
160 public int hashCode() {
161 return Objects.hash(installationToolchainsSource, userToolchainsSource);
162 }
163
164 @Override
165 public String toString() {
166 return "ToolchainsBuilderRequest[" + "installationToolchainsSource="
167 + installationToolchainsSource + ", userToolchainsSource="
168 + userToolchainsSource + ']';
169 }
170 }
171 }
172 }