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