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.Optional;
24
25 import org.apache.maven.api.ProtoSession;
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 ToolchainsBuilderRequest {
39 @Nonnull
40 ProtoSession getSession();
41
42
43
44
45
46
47 @Nonnull
48 Optional<Source> getInstallationToolchainsSource();
49
50
51
52
53
54
55 @Nonnull
56 Optional<Source> getUserToolchainsSource();
57
58 @Nonnull
59 static ToolchainsBuilderRequest build(
60 @Nonnull ProtoSession session,
61 @Nullable Source installationToolchainsFile,
62 @Nullable Source userToolchainsSource) {
63 return builder()
64 .session(nonNull(session, "session cannot be null"))
65 .installationToolchainsSource(installationToolchainsFile)
66 .userToolchainsSource(userToolchainsSource)
67 .build();
68 }
69
70 @Nonnull
71 static ToolchainsBuilderRequest build(
72 @Nonnull ProtoSession session,
73 @Nullable Path installationToolchainsFile,
74 @Nullable Path userToolchainsPath) {
75 return builder()
76 .session(nonNull(session, "session cannot be null"))
77 .installationToolchainsSource(
78 installationToolchainsFile != null && Files.exists(installationToolchainsFile)
79 ? Source.fromPath(installationToolchainsFile)
80 : null)
81 .userToolchainsSource(
82 userToolchainsPath != null && Files.exists(userToolchainsPath)
83 ? Source.fromPath(userToolchainsPath)
84 : null)
85 .build();
86 }
87
88 @Nonnull
89 static ToolchainsBuilderRequestBuilder builder() {
90 return new ToolchainsBuilderRequestBuilder();
91 }
92
93 @NotThreadSafe
94 class ToolchainsBuilderRequestBuilder {
95 ProtoSession session;
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 installationToolchainsSource(Source installationToolchainsSource) {
105 this.installationToolchainsSource = installationToolchainsSource;
106 return this;
107 }
108
109 public ToolchainsBuilderRequestBuilder userToolchainsSource(Source userToolchainsSource) {
110 this.userToolchainsSource = userToolchainsSource;
111 return this;
112 }
113
114 public ToolchainsBuilderRequest build() {
115 return new ToolchainsBuilderRequestBuilder.DefaultToolchainsBuilderRequest(
116 session, installationToolchainsSource, userToolchainsSource);
117 }
118
119 private static class DefaultToolchainsBuilderRequest extends BaseRequest<ProtoSession>
120 implements ToolchainsBuilderRequest {
121 private final Source installationToolchainsSource;
122 private final Source userToolchainsSource;
123
124 @SuppressWarnings("checkstyle:ParameterNumber")
125 DefaultToolchainsBuilderRequest(
126 @Nonnull ProtoSession session,
127 @Nullable Source installationToolchainsSource,
128 @Nullable Source userToolchainsSource) {
129 super(session);
130 this.installationToolchainsSource = installationToolchainsSource;
131 this.userToolchainsSource = userToolchainsSource;
132 }
133
134 @Nonnull
135 @Override
136 public Optional<Source> getInstallationToolchainsSource() {
137 return Optional.ofNullable(installationToolchainsSource);
138 }
139
140 @Nonnull
141 @Override
142 public Optional<Source> getUserToolchainsSource() {
143 return Optional.ofNullable(userToolchainsSource);
144 }
145 }
146 }
147 }