View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   //  Generated by Modello Velocity from writer.vm
3   //  template, any modifications will be overwritten.
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       //- Class/Member Variables -/
53      //--------------------------/
54  
55      /**
56       * Field NAMESPACE.
57       */
58      private static final String NAMESPACE = null;
59  
60      /**
61       * Field fileComment.
62       */
63      private String fileComment = null;
64  
65  
66        //-----------/
67       //- Methods -/
68      //-----------/
69  
70      /**
71       * Method setFileComment.
72       *
73       * @param fileComment a fileComment object.
74       */
75      public void setFileComment(String fileComment) {
76          this.fileComment = fileComment;
77      } //-- void setFileComment(String)
78  
79      /**
80       * Method write.
81       *
82       * @param writer a writer object
83       * @param settings a Settings object
84       * @throws java.io.IOException java.io.IOException if any
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      } //-- void write(Writer, Settings)
95  
96      /**
97       * Method write.
98       *
99       * @param stream a stream object
100      * @param settings a Settings object
101      * @throws java.io.IOException java.io.IOException if any
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     } //-- void write(OutputStream, Settings)
112 
113     /**
114      * Method writeDomToSerializer.
115      *
116      * @param dom a dom object.
117      * @param serializer a serializer object.
118      * @throws java.io.IOException java.io.IOException if any.
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     } //-- void writeDomToSerializer(org.apache.maven.api.xml.XmlNode, XmlSerializer)
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 }