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.Path;
22 import java.util.Optional;
23
24 import org.apache.maven.api.Session;
25 import org.apache.maven.api.annotations.Experimental;
26 import org.apache.maven.api.annotations.Immutable;
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 @Experimental
37 @Immutable
38 public interface SettingsBuilderRequest {
39
40 @Nonnull
41 Session getSession();
42
43
44
45
46
47
48 @Nonnull
49 Optional<Path> getGlobalSettingsPath();
50
51
52
53
54
55
56 @Nonnull
57 Optional<Source> getGlobalSettingsSource();
58
59
60
61
62
63
64 @Nonnull
65 Optional<Path> getUserSettingsPath();
66
67
68
69
70
71
72 @Nonnull
73 Optional<Source> getUserSettingsSource();
74
75 @Nonnull
76 static SettingsBuilderRequest build(
77 @Nonnull Session session, @Nonnull Source globalSettingsSource, @Nonnull Source userSettingsSource) {
78 return builder()
79 .session(nonNull(session, "session cannot be null"))
80 .globalSettingsSource(nonNull(globalSettingsSource, "globalSettingsSource cannot be null"))
81 .userSettingsSource(nonNull(userSettingsSource, "userSettingsSource cannot be null"))
82 .build();
83 }
84
85 @Nonnull
86 static SettingsBuilderRequest build(
87 @Nonnull Session session, @Nonnull Path globalSettingsPath, @Nonnull Path userSettingsPath) {
88 return builder()
89 .session(nonNull(session, "session cannot be null"))
90 .globalSettingsPath(nonNull(globalSettingsPath, "globalSettingsPath cannot be null"))
91 .userSettingsPath(nonNull(userSettingsPath, "userSettingsPath cannot be null"))
92 .build();
93 }
94
95 @Nonnull
96 static SettingsBuilderRequestBuilder builder() {
97 return new SettingsBuilderRequestBuilder();
98 }
99
100 @NotThreadSafe
101 class SettingsBuilderRequestBuilder {
102 Session session;
103 Path globalSettingsPath;
104 Source globalSettingsSource;
105 Path userSettingsPath;
106 Source userSettingsSource;
107
108 public SettingsBuilderRequestBuilder session(Session session) {
109 this.session = session;
110 return this;
111 }
112
113 public SettingsBuilderRequestBuilder globalSettingsPath(Path globalSettingsPath) {
114 this.globalSettingsPath = globalSettingsPath;
115 return this;
116 }
117
118 public SettingsBuilderRequestBuilder globalSettingsSource(Source globalSettingsSource) {
119 this.globalSettingsSource = globalSettingsSource;
120 return this;
121 }
122
123 public SettingsBuilderRequestBuilder userSettingsPath(Path userSettingsPath) {
124 this.userSettingsPath = userSettingsPath;
125 return this;
126 }
127
128 public SettingsBuilderRequestBuilder userSettingsSource(Source userSettingsSource) {
129 this.userSettingsSource = userSettingsSource;
130 return this;
131 }
132
133 public SettingsBuilderRequest build() {
134 return new DefaultSettingsBuilderRequest(
135 session, globalSettingsPath, globalSettingsSource, userSettingsPath, userSettingsSource);
136 }
137
138 private static class DefaultSettingsBuilderRequest extends BaseRequest implements SettingsBuilderRequest {
139 private final Path globalSettingsPath;
140 private final Source globalSettingsSource;
141 private final Path userSettingsPath;
142 private final Source userSettingsSource;
143
144 @SuppressWarnings("checkstyle:ParameterNumber")
145 DefaultSettingsBuilderRequest(
146 @Nonnull Session session,
147 @Nullable Path globalSettingsPath,
148 @Nullable Source globalSettingsSource,
149 @Nullable Path userSettingsPath,
150 @Nullable Source userSettingsSource) {
151 super(session);
152 this.globalSettingsPath = globalSettingsPath;
153 this.globalSettingsSource = globalSettingsSource;
154 this.userSettingsPath = userSettingsPath;
155 this.userSettingsSource = userSettingsSource;
156 }
157
158 @Nonnull
159 @Override
160 public Optional<Path> getGlobalSettingsPath() {
161 return Optional.ofNullable(globalSettingsPath);
162 }
163
164 @Nonnull
165 @Override
166 public Optional<Source> getGlobalSettingsSource() {
167 return Optional.ofNullable(globalSettingsSource);
168 }
169
170 @Nonnull
171 @Override
172 public Optional<Path> getUserSettingsPath() {
173 return Optional.ofNullable(userSettingsPath);
174 }
175
176 @Nonnull
177 @Override
178 public Optional<Source> getUserSettingsSource() {
179 return Optional.ofNullable(userSettingsSource);
180 }
181 }
182 }
183 }