1
2
3
4
5 package org.apache.maven.settings.v4;
6
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.OutputStream;
10 import java.io.Reader;
11 import java.io.Writer;
12 import java.text.DateFormat;
13 import java.util.ArrayList;
14 import java.util.Date;
15 import java.util.HashSet;
16 import java.util.List;
17 import java.util.Map;
18 import java.util.Objects;
19 import java.util.Properties;
20 import java.util.Set;
21 import org.apache.maven.api.annotations.Generated;
22 import org.apache.maven.api.xml.XmlNode;
23 import org.apache.maven.internal.xml.XmlNodeBuilder;
24 import org.apache.maven.api.settings.TrackableBase;
25 import org.apache.maven.api.settings.IdentifiableBase;
26 import org.apache.maven.api.settings.Settings;
27 import org.apache.maven.api.settings.Proxy;
28 import org.apache.maven.api.settings.Server;
29 import org.apache.maven.api.settings.Mirror;
30 import org.apache.maven.api.settings.Profile;
31 import org.apache.maven.api.settings.Activation;
32 import org.apache.maven.api.settings.RepositoryBase;
33 import org.apache.maven.api.settings.Repository;
34 import org.apache.maven.api.settings.RepositoryPolicy;
35 import org.apache.maven.api.settings.ActivationProperty;
36 import org.apache.maven.api.settings.ActivationOS;
37 import org.apache.maven.api.settings.ActivationFile;
38 import org.apache.maven.api.settings.InputLocation;
39 import org.apache.maven.api.settings.InputSource;
40 import org.codehaus.plexus.util.ReaderFactory;
41 import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
42 import org.codehaus.plexus.util.xml.pull.MXParser;
43 import org.codehaus.plexus.util.xml.pull.MXSerializer;
44 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
45 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
46 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
47
48 @Generated
49 public class SettingsXpp3Writer {
50
51
52
53
54
55
56
57
58 private static final String NAMESPACE = null;
59
60
61
62
63 private String fileComment = null;
64
65
66
67
68
69
70
71
72
73
74
75 public void setFileComment(String fileComment) {
76 this.fileComment = fileComment;
77 }
78
79
80
81
82
83
84
85
86 public void write(Writer writer, Settings settings) throws java.io.IOException {
87 XmlSerializer serializer = new MXSerializer();
88 serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " ");
89 serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n");
90 serializer.setOutput(writer);
91 serializer.startDocument(settings.getModelEncoding(), null);
92 writeSettings("settings", settings, serializer);
93 serializer.endDocument();
94 }
95
96
97
98
99
100
101
102
103 public void write(OutputStream stream, Settings settings) throws java.io.IOException {
104 XmlSerializer serializer = new MXSerializer();
105 serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " ");
106 serializer.setProperty("http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n");
107 serializer.setOutput(stream, settings.getModelEncoding());
108 serializer.startDocument(settings.getModelEncoding(), null);
109 writeSettings("settings", settings, serializer);
110 serializer.endDocument();
111 }
112
113
114
115
116
117
118
119
120 protected void writeDomToSerializer(org.apache.maven.api.xml.XmlNode dom, XmlSerializer serializer) throws java.io.IOException {
121 serializer.startTag(NAMESPACE, dom.getName());
122 for (Map.Entry<String, String> attribute : dom.getAttributes().entrySet()) {
123 serializer.attribute(NAMESPACE, attribute.getKey(), attribute.getValue());
124 }
125 for (XmlNode aChild : dom.getChildren()) {
126 writeDomToSerializer(aChild, serializer);
127 }
128 String value = dom.getValue();
129 if (value != null) {
130 serializer.text(value);
131 }
132 serializer.endTag(NAMESPACE, dom.getName());
133
134 }
135
136
137 private void writeTrackableBase(String tagName, TrackableBase trackableBase, XmlSerializer serializer) throws IOException {
138 if (trackableBase != null) {
139 serializer.startTag(NAMESPACE, tagName);
140 serializer.endTag(NAMESPACE, tagName);
141 }
142 }
143
144 private void writeIdentifiableBase(String tagName, IdentifiableBase identifiableBase, XmlSerializer serializer) throws IOException {
145 if (identifiableBase != null) {
146 serializer.startTag(NAMESPACE, tagName);
147 writeTag("id", "default", identifiableBase.getId(), serializer);
148 serializer.endTag(NAMESPACE, tagName);
149 }
150 }
151
152 private void writeSettings(String tagName, Settings settings, XmlSerializer serializer) throws IOException {
153 if (settings != null) {
154 if (this.fileComment != null) {
155 serializer.comment(this.fileComment);
156 }
157 serializer.setPrefix("", "http://maven.apache.org/POM/4.0.0");
158 serializer.setPrefix("xsi", "http://www.w3.org/2001/XMLSchema-instance");
159 serializer.startTag(NAMESPACE, tagName);
160 serializer.attribute("", "xsi:schemaLocation", "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd");
161 writeTag("localRepository", null, settings.getLocalRepository(), serializer);
162 writeTag("interactiveMode", "true", settings.isInteractiveMode() ? null : "false", serializer);
163 writeTag("usePluginRegistry", "false", settings.isUsePluginRegistry() ? "true" : null, serializer);
164 writeTag("offline", "false", settings.isOffline() ? "true" : null, serializer);
165 writeList("proxies", false, settings.getProxies(), serializer, t -> writeProxy("proxy", t, serializer));
166 writeList("servers", false, settings.getServers(), serializer, t -> writeServer("server", t, serializer));
167 writeList("mirrors", false, settings.getMirrors(), serializer, t -> writeMirror("mirror", t, serializer));
168 writeList("repositories", false, settings.getRepositories(), serializer, t -> writeRepository("repository", t, serializer));
169 writeList("pluginRepositories", false, settings.getPluginRepositories(), serializer, t -> writeRepository("pluginRepository", t, serializer));
170 writeList("profiles", false, settings.getProfiles(), serializer, t -> writeProfile("profile", t, serializer));
171 writeList("activeProfiles", settings.getActiveProfiles(), serializer, t -> writeTag("activeProfile", "new java.util.ArrayList/*<String>*/()", t, serializer));
172 writeList("pluginGroups", settings.getPluginGroups(), serializer, t -> writeTag("pluginGroup", "new java.util.ArrayList/*<String>*/()", t, serializer));
173 serializer.endTag(NAMESPACE, tagName);
174 }
175 }
176
177 private void writeProxy(String tagName, Proxy proxy, XmlSerializer serializer) throws IOException {
178 if (proxy != null) {
179 serializer.startTag(NAMESPACE, tagName);
180 writeTag("active", "true", proxy.isActive() ? null : "false", serializer);
181 writeTag("protocol", "http", proxy.getProtocol(), serializer);
182 writeTag("username", null, proxy.getUsername(), serializer);
183 writeTag("password", null, proxy.getPassword(), serializer);
184 writeTag("port", "8080", Integer.toString(proxy.getPort()), serializer);
185 writeTag("host", null, proxy.getHost(), serializer);
186 writeTag("nonProxyHosts", null, proxy.getNonProxyHosts(), serializer);
187 writeTag("id", "default", proxy.getId(), serializer);
188 serializer.endTag(NAMESPACE, tagName);
189 }
190 }
191
192 private void writeServer(String tagName, Server server, XmlSerializer serializer) throws IOException {
193 if (server != null) {
194 serializer.startTag(NAMESPACE, tagName);
195 writeTag("username", null, server.getUsername(), serializer);
196 writeTag("password", null, server.getPassword(), serializer);
197 writeTag("privateKey", null, server.getPrivateKey(), serializer);
198 writeTag("passphrase", null, server.getPassphrase(), serializer);
199 writeTag("filePermissions", null, server.getFilePermissions(), serializer);
200 writeTag("directoryPermissions", null, server.getDirectoryPermissions(), serializer);
201 writeDom(server.getConfiguration(), serializer);
202 writeTag("id", "default", server.getId(), serializer);
203 serializer.endTag(NAMESPACE, tagName);
204 }
205 }
206
207 private void writeMirror(String tagName, Mirror mirror, XmlSerializer serializer) throws IOException {
208 if (mirror != null) {
209 serializer.startTag(NAMESPACE, tagName);
210 writeTag("mirrorOf", null, mirror.getMirrorOf(), serializer);
211 writeTag("name", null, mirror.getName(), serializer);
212 writeTag("url", null, mirror.getUrl(), serializer);
213 writeTag("layout", "default", mirror.getLayout(), serializer);
214 writeTag("mirrorOfLayouts", "default,legacy", mirror.getMirrorOfLayouts(), serializer);
215 writeTag("blocked", "false", mirror.isBlocked() ? "true" : null, serializer);
216 writeTag("id", "default", mirror.getId(), serializer);
217 serializer.endTag(NAMESPACE, tagName);
218 }
219 }
220
221 private void writeProfile(String tagName, Profile profile, XmlSerializer serializer) throws IOException {
222 if (profile != null) {
223 serializer.startTag(NAMESPACE, tagName);
224 writeActivation("activation", profile.getActivation(), serializer);
225 writeProperties("properties", profile.getProperties(), serializer);
226 writeList("repositories", false, profile.getRepositories(), serializer, t -> writeRepository("repository", t, serializer));
227 writeList("pluginRepositories", false, profile.getPluginRepositories(), serializer, t -> writeRepository("pluginRepository", t, serializer));
228 writeTag("id", "default", profile.getId(), serializer);
229 serializer.endTag(NAMESPACE, tagName);
230 }
231 }
232
233 private void writeActivation(String tagName, Activation activation, XmlSerializer serializer) throws IOException {
234 if (activation != null) {
235 serializer.startTag(NAMESPACE, tagName);
236 writeTag("activeByDefault", "false", activation.isActiveByDefault() ? "true" : null, serializer);
237 writeTag("jdk", null, activation.getJdk(), serializer);
238 writeActivationOS("os", activation.getOs(), serializer);
239 writeActivationProperty("property", activation.getProperty(), serializer);
240 writeActivationFile("file", activation.getFile(), serializer);
241 serializer.endTag(NAMESPACE, tagName);
242 }
243 }
244
245 private void writeRepositoryBase(String tagName, RepositoryBase repositoryBase, XmlSerializer serializer) throws IOException {
246 if (repositoryBase != null) {
247 serializer.startTag(NAMESPACE, tagName);
248 writeTag("name", null, repositoryBase.getName(), serializer);
249 writeTag("url", null, repositoryBase.getUrl(), serializer);
250 writeTag("layout", "default", repositoryBase.getLayout(), serializer);
251 writeTag("id", "default", repositoryBase.getId(), serializer);
252 serializer.endTag(NAMESPACE, tagName);
253 }
254 }
255
256 private void writeRepository(String tagName, Repository repository, XmlSerializer serializer) throws IOException {
257 if (repository != null) {
258 serializer.startTag(NAMESPACE, tagName);
259 writeRepositoryPolicy("releases", repository.getReleases(), serializer);
260 writeRepositoryPolicy("snapshots", repository.getSnapshots(), serializer);
261 writeTag("name", null, repository.getName(), serializer);
262 writeTag("url", null, repository.getUrl(), serializer);
263 writeTag("layout", "default", repository.getLayout(), serializer);
264 writeTag("id", "default", repository.getId(), serializer);
265 serializer.endTag(NAMESPACE, tagName);
266 }
267 }
268
269 private void writeRepositoryPolicy(String tagName, RepositoryPolicy repositoryPolicy, XmlSerializer serializer) throws IOException {
270 if (repositoryPolicy != null) {
271 serializer.startTag(NAMESPACE, tagName);
272 writeTag("enabled", "true", repositoryPolicy.isEnabled() ? null : "false", serializer);
273 writeTag("updatePolicy", null, repositoryPolicy.getUpdatePolicy(), serializer);
274 writeTag("checksumPolicy", null, repositoryPolicy.getChecksumPolicy(), serializer);
275 serializer.endTag(NAMESPACE, tagName);
276 }
277 }
278
279 private void writeActivationProperty(String tagName, ActivationProperty activationProperty, XmlSerializer serializer) throws IOException {
280 if (activationProperty != null) {
281 serializer.startTag(NAMESPACE, tagName);
282 writeTag("name", null, activationProperty.getName(), serializer);
283 writeTag("value", null, activationProperty.getValue(), serializer);
284 serializer.endTag(NAMESPACE, tagName);
285 }
286 }
287
288 private void writeActivationOS(String tagName, ActivationOS activationOS, XmlSerializer serializer) throws IOException {
289 if (activationOS != null) {
290 serializer.startTag(NAMESPACE, tagName);
291 writeTag("name", null, activationOS.getName(), serializer);
292 writeTag("family", null, activationOS.getFamily(), serializer);
293 writeTag("arch", null, activationOS.getArch(), serializer);
294 writeTag("version", null, activationOS.getVersion(), serializer);
295 serializer.endTag(NAMESPACE, tagName);
296 }
297 }
298
299 private void writeActivationFile(String tagName, ActivationFile activationFile, XmlSerializer serializer) throws IOException {
300 if (activationFile != null) {
301 serializer.startTag(NAMESPACE, tagName);
302 writeTag("missing", null, activationFile.getMissing(), serializer);
303 writeTag("exists", null, activationFile.getExists(), serializer);
304 serializer.endTag(NAMESPACE, tagName);
305 }
306 }
307
308 @FunctionalInterface
309 private interface ElementWriter<T> {
310 public void write(T t) throws IOException;
311 }
312
313 private <T> void writeList(String tagName, List<T> list, XmlSerializer serializer, ElementWriter<T> writer) throws IOException {
314 writeList(tagName, false, list, serializer, writer);
315 }
316
317 private <T> void writeList(String tagName, boolean flat, List<T> list, XmlSerializer serializer, ElementWriter<T> writer) throws IOException {
318 if (list != null && !list.isEmpty()) {
319 if (!flat) {
320 serializer.startTag(NAMESPACE, tagName);
321 }
322 for (T t : list) {
323 writer.write(t);
324 }
325 if (!flat) {
326 serializer.endTag(NAMESPACE, tagName);
327 }
328 }
329 }
330
331 private <T> void writeProperties(String tagName, Map<String, String> props, XmlSerializer serializer) throws IOException {
332 if (props != null && !props.isEmpty()) {
333 serializer.startTag(NAMESPACE, tagName);
334 for (Map.Entry<String, String> entry : props.entrySet()) {
335 writeTag(entry.getKey(), null, entry.getValue(), serializer);
336 }
337 serializer.endTag(NAMESPACE, tagName);
338 }
339 }
340
341 private void writeDom(XmlNode dom, XmlSerializer serializer) throws IOException {
342 if (dom != null) {
343 serializer.startTag(NAMESPACE, dom.getName());
344 for (Map.Entry<String, String> attr : dom.getAttributes().entrySet()) {
345 serializer.attribute(NAMESPACE, attr.getKey(), attr.getValue());
346 }
347 for (XmlNode child : dom.getChildren()) {
348 writeDom(child, serializer);
349 }
350 String value = dom.getValue();
351 if (value != null) {
352 serializer.text(value);
353 }
354 serializer.endTag(NAMESPACE, dom.getName());
355 }
356 }
357
358 private void writeTag(String tagName, String defaultValue, String value, XmlSerializer serializer) throws IOException {
359 if (value != null && !Objects.equals(defaultValue, value)) {
360 serializer.startTag(NAMESPACE, tagName).text(value).endTag(NAMESPACE, tagName);
361 }
362 }
363
364 private void writeAttr(String attrName, String value, XmlSerializer serializer) throws IOException {
365 if (value != null) {
366 serializer.attribute(NAMESPACE, attrName, value);
367 }
368 }
369
370 }