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