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