1
2
3
4
5
6 package org.apache.maven.settings.io.xpp3;
7
8
9
10
11
12 import java.io.OutputStream;
13 import java.io.Writer;
14 import java.util.Iterator;
15 import org.apache.maven.settings.Activation;
16 import org.apache.maven.settings.ActivationFile;
17 import org.apache.maven.settings.ActivationOS;
18 import org.apache.maven.settings.ActivationProperty;
19 import org.apache.maven.settings.IdentifiableBase;
20 import org.apache.maven.settings.Mirror;
21 import org.apache.maven.settings.Profile;
22 import org.apache.maven.settings.Proxy;
23 import org.apache.maven.settings.Repository;
24 import org.apache.maven.settings.RepositoryBase;
25 import org.apache.maven.settings.RepositoryPolicy;
26 import org.apache.maven.settings.Server;
27 import org.apache.maven.settings.Settings;
28 import org.apache.maven.settings.TrackableBase;
29 import org.codehaus.plexus.util.xml.Xpp3Dom;
30 import org.codehaus.plexus.util.xml.pull.MXSerializer;
31 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
32
33
34
35
36
37
38 @SuppressWarnings( "all" )
39 public class SettingsXpp3Writer
40 {
41
42
43
44
45
46
47
48
49 private static final String NAMESPACE = null;
50
51
52
53
54 private String fileComment = null;
55
56
57
58
59
60
61
62
63
64
65
66 public void setFileComment( String fileComment )
67 {
68 this.fileComment = fileComment;
69 }
70
71
72
73
74
75
76
77
78 public void write( Writer writer, Settings settings )
79 throws java.io.IOException
80 {
81 XmlSerializer serializer = new MXSerializer();
82 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
83 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
84 serializer.setOutput( writer );
85 serializer.startDocument( settings.getModelEncoding(), null );
86 writeSettings( settings, "settings", serializer );
87 serializer.endDocument();
88 }
89
90
91
92
93
94
95
96
97 public void write( OutputStream stream, Settings settings )
98 throws java.io.IOException
99 {
100 XmlSerializer serializer = new MXSerializer();
101 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
102 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
103 serializer.setOutput( stream, settings.getModelEncoding() );
104 serializer.startDocument( settings.getModelEncoding(), null );
105 writeSettings( settings, "settings", serializer );
106 serializer.endDocument();
107 }
108
109
110
111
112
113
114
115
116
117 private void writeActivation( Activation activation, String tagName, XmlSerializer serializer )
118 throws java.io.IOException
119 {
120 serializer.startTag( NAMESPACE, tagName );
121 if ( activation.isActiveByDefault() != false )
122 {
123 serializer.startTag( NAMESPACE, "activeByDefault" ).text( String.valueOf( activation.isActiveByDefault() ) ).endTag( NAMESPACE, "activeByDefault" );
124 }
125 if ( activation.getJdk() != null )
126 {
127 serializer.startTag( NAMESPACE, "jdk" ).text( activation.getJdk() ).endTag( NAMESPACE, "jdk" );
128 }
129 if ( activation.getOs() != null )
130 {
131 writeActivationOS( (ActivationOS) activation.getOs(), "os", serializer );
132 }
133 if ( activation.getProperty() != null )
134 {
135 writeActivationProperty( (ActivationProperty) activation.getProperty(), "property", serializer );
136 }
137 if ( activation.getFile() != null )
138 {
139 writeActivationFile( (ActivationFile) activation.getFile(), "file", serializer );
140 }
141 serializer.endTag( NAMESPACE, tagName );
142 }
143
144
145
146
147
148
149
150
151
152 private void writeActivationFile( ActivationFile activationFile, String tagName, XmlSerializer serializer )
153 throws java.io.IOException
154 {
155 serializer.startTag( NAMESPACE, tagName );
156 if ( activationFile.getMissing() != null )
157 {
158 serializer.startTag( NAMESPACE, "missing" ).text( activationFile.getMissing() ).endTag( NAMESPACE, "missing" );
159 }
160 if ( activationFile.getExists() != null )
161 {
162 serializer.startTag( NAMESPACE, "exists" ).text( activationFile.getExists() ).endTag( NAMESPACE, "exists" );
163 }
164 serializer.endTag( NAMESPACE, tagName );
165 }
166
167
168
169
170
171
172
173
174
175 private void writeActivationOS( ActivationOS activationOS, String tagName, XmlSerializer serializer )
176 throws java.io.IOException
177 {
178 serializer.startTag( NAMESPACE, tagName );
179 if ( activationOS.getName() != null )
180 {
181 serializer.startTag( NAMESPACE, "name" ).text( activationOS.getName() ).endTag( NAMESPACE, "name" );
182 }
183 if ( activationOS.getFamily() != null )
184 {
185 serializer.startTag( NAMESPACE, "family" ).text( activationOS.getFamily() ).endTag( NAMESPACE, "family" );
186 }
187 if ( activationOS.getArch() != null )
188 {
189 serializer.startTag( NAMESPACE, "arch" ).text( activationOS.getArch() ).endTag( NAMESPACE, "arch" );
190 }
191 if ( activationOS.getVersion() != null )
192 {
193 serializer.startTag( NAMESPACE, "version" ).text( activationOS.getVersion() ).endTag( NAMESPACE, "version" );
194 }
195 serializer.endTag( NAMESPACE, tagName );
196 }
197
198
199
200
201
202
203
204
205
206 private void writeActivationProperty( ActivationProperty activationProperty, String tagName, XmlSerializer serializer )
207 throws java.io.IOException
208 {
209 serializer.startTag( NAMESPACE, tagName );
210 if ( activationProperty.getName() != null )
211 {
212 serializer.startTag( NAMESPACE, "name" ).text( activationProperty.getName() ).endTag( NAMESPACE, "name" );
213 }
214 if ( activationProperty.getValue() != null )
215 {
216 serializer.startTag( NAMESPACE, "value" ).text( activationProperty.getValue() ).endTag( NAMESPACE, "value" );
217 }
218 serializer.endTag( NAMESPACE, tagName );
219 }
220
221
222
223
224
225
226
227
228
229 private void writeIdentifiableBase( IdentifiableBase identifiableBase, String tagName, XmlSerializer serializer )
230 throws java.io.IOException
231 {
232 serializer.startTag( NAMESPACE, tagName );
233 if ( ( identifiableBase.getId() != null ) && !identifiableBase.getId().equals( "default" ) )
234 {
235 serializer.startTag( NAMESPACE, "id" ).text( identifiableBase.getId() ).endTag( NAMESPACE, "id" );
236 }
237 serializer.endTag( NAMESPACE, tagName );
238 }
239
240
241
242
243
244
245
246
247
248 private void writeMirror( Mirror mirror, String tagName, XmlSerializer serializer )
249 throws java.io.IOException
250 {
251 serializer.startTag( NAMESPACE, tagName );
252 if ( mirror.getMirrorOf() != null )
253 {
254 serializer.startTag( NAMESPACE, "mirrorOf" ).text( mirror.getMirrorOf() ).endTag( NAMESPACE, "mirrorOf" );
255 }
256 if ( mirror.getName() != null )
257 {
258 serializer.startTag( NAMESPACE, "name" ).text( mirror.getName() ).endTag( NAMESPACE, "name" );
259 }
260 if ( mirror.getUrl() != null )
261 {
262 serializer.startTag( NAMESPACE, "url" ).text( mirror.getUrl() ).endTag( NAMESPACE, "url" );
263 }
264 if ( ( mirror.getLayout() != null ) && !mirror.getLayout().equals( "default" ) )
265 {
266 serializer.startTag( NAMESPACE, "layout" ).text( mirror.getLayout() ).endTag( NAMESPACE, "layout" );
267 }
268 if ( ( mirror.getMirrorOfLayouts() != null ) && !mirror.getMirrorOfLayouts().equals( "default,legacy" ) )
269 {
270 serializer.startTag( NAMESPACE, "mirrorOfLayouts" ).text( mirror.getMirrorOfLayouts() ).endTag( NAMESPACE, "mirrorOfLayouts" );
271 }
272 if ( ( mirror.getId() != null ) && !mirror.getId().equals( "default" ) )
273 {
274 serializer.startTag( NAMESPACE, "id" ).text( mirror.getId() ).endTag( NAMESPACE, "id" );
275 }
276 serializer.endTag( NAMESPACE, tagName );
277 }
278
279
280
281
282
283
284
285
286
287 private void writeProfile( Profile profile, String tagName, XmlSerializer serializer )
288 throws java.io.IOException
289 {
290 serializer.startTag( NAMESPACE, tagName );
291 if ( profile.getActivation() != null )
292 {
293 writeActivation( (Activation) profile.getActivation(), "activation", serializer );
294 }
295 if ( ( profile.getProperties() != null ) && ( profile.getProperties().size() > 0 ) )
296 {
297 serializer.startTag( NAMESPACE, "properties" );
298 for ( Iterator iter = profile.getProperties().keySet().iterator(); iter.hasNext(); )
299 {
300 String key = (String) iter.next();
301 String value = (String) profile.getProperties().get( key );
302 serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
303 }
304 serializer.endTag( NAMESPACE, "properties" );
305 }
306 if ( ( profile.getRepositories() != null ) && ( profile.getRepositories().size() > 0 ) )
307 {
308 serializer.startTag( NAMESPACE, "repositories" );
309 for ( Iterator iter = profile.getRepositories().iterator(); iter.hasNext(); )
310 {
311 Repository o = (Repository) iter.next();
312 writeRepository( o, "repository", serializer );
313 }
314 serializer.endTag( NAMESPACE, "repositories" );
315 }
316 if ( ( profile.getPluginRepositories() != null ) && ( profile.getPluginRepositories().size() > 0 ) )
317 {
318 serializer.startTag( NAMESPACE, "pluginRepositories" );
319 for ( Iterator iter = profile.getPluginRepositories().iterator(); iter.hasNext(); )
320 {
321 Repository o = (Repository) iter.next();
322 writeRepository( o, "pluginRepository", serializer );
323 }
324 serializer.endTag( NAMESPACE, "pluginRepositories" );
325 }
326 if ( ( profile.getId() != null ) && !profile.getId().equals( "default" ) )
327 {
328 serializer.startTag( NAMESPACE, "id" ).text( profile.getId() ).endTag( NAMESPACE, "id" );
329 }
330 serializer.endTag( NAMESPACE, tagName );
331 }
332
333
334
335
336
337
338
339
340
341 private void writeProxy( Proxy proxy, String tagName, XmlSerializer serializer )
342 throws java.io.IOException
343 {
344 serializer.startTag( NAMESPACE, tagName );
345 if ( proxy.isActive() != true )
346 {
347 serializer.startTag( NAMESPACE, "active" ).text( String.valueOf( proxy.isActive() ) ).endTag( NAMESPACE, "active" );
348 }
349 if ( ( proxy.getProtocol() != null ) && !proxy.getProtocol().equals( "http" ) )
350 {
351 serializer.startTag( NAMESPACE, "protocol" ).text( proxy.getProtocol() ).endTag( NAMESPACE, "protocol" );
352 }
353 if ( proxy.getUsername() != null )
354 {
355 serializer.startTag( NAMESPACE, "username" ).text( proxy.getUsername() ).endTag( NAMESPACE, "username" );
356 }
357 if ( proxy.getPassword() != null )
358 {
359 serializer.startTag( NAMESPACE, "password" ).text( proxy.getPassword() ).endTag( NAMESPACE, "password" );
360 }
361 if ( proxy.getPort() != 8080 )
362 {
363 serializer.startTag( NAMESPACE, "port" ).text( String.valueOf( proxy.getPort() ) ).endTag( NAMESPACE, "port" );
364 }
365 if ( proxy.getHost() != null )
366 {
367 serializer.startTag( NAMESPACE, "host" ).text( proxy.getHost() ).endTag( NAMESPACE, "host" );
368 }
369 if ( proxy.getNonProxyHosts() != null )
370 {
371 serializer.startTag( NAMESPACE, "nonProxyHosts" ).text( proxy.getNonProxyHosts() ).endTag( NAMESPACE, "nonProxyHosts" );
372 }
373 if ( ( proxy.getId() != null ) && !proxy.getId().equals( "default" ) )
374 {
375 serializer.startTag( NAMESPACE, "id" ).text( proxy.getId() ).endTag( NAMESPACE, "id" );
376 }
377 serializer.endTag( NAMESPACE, tagName );
378 }
379
380
381
382
383
384
385
386
387
388 private void writeRepository( Repository repository, String tagName, XmlSerializer serializer )
389 throws java.io.IOException
390 {
391 serializer.startTag( NAMESPACE, tagName );
392 if ( repository.getReleases() != null )
393 {
394 writeRepositoryPolicy( (RepositoryPolicy) repository.getReleases(), "releases", serializer );
395 }
396 if ( repository.getSnapshots() != null )
397 {
398 writeRepositoryPolicy( (RepositoryPolicy) repository.getSnapshots(), "snapshots", serializer );
399 }
400 if ( repository.getId() != null )
401 {
402 serializer.startTag( NAMESPACE, "id" ).text( repository.getId() ).endTag( NAMESPACE, "id" );
403 }
404 if ( repository.getName() != null )
405 {
406 serializer.startTag( NAMESPACE, "name" ).text( repository.getName() ).endTag( NAMESPACE, "name" );
407 }
408 if ( repository.getUrl() != null )
409 {
410 serializer.startTag( NAMESPACE, "url" ).text( repository.getUrl() ).endTag( NAMESPACE, "url" );
411 }
412 if ( ( repository.getLayout() != null ) && !repository.getLayout().equals( "default" ) )
413 {
414 serializer.startTag( NAMESPACE, "layout" ).text( repository.getLayout() ).endTag( NAMESPACE, "layout" );
415 }
416 serializer.endTag( NAMESPACE, tagName );
417 }
418
419
420
421
422
423
424
425
426
427 private void writeRepositoryBase( RepositoryBase repositoryBase, String tagName, XmlSerializer serializer )
428 throws java.io.IOException
429 {
430 serializer.startTag( NAMESPACE, tagName );
431 if ( repositoryBase.getId() != null )
432 {
433 serializer.startTag( NAMESPACE, "id" ).text( repositoryBase.getId() ).endTag( NAMESPACE, "id" );
434 }
435 if ( repositoryBase.getName() != null )
436 {
437 serializer.startTag( NAMESPACE, "name" ).text( repositoryBase.getName() ).endTag( NAMESPACE, "name" );
438 }
439 if ( repositoryBase.getUrl() != null )
440 {
441 serializer.startTag( NAMESPACE, "url" ).text( repositoryBase.getUrl() ).endTag( NAMESPACE, "url" );
442 }
443 if ( ( repositoryBase.getLayout() != null ) && !repositoryBase.getLayout().equals( "default" ) )
444 {
445 serializer.startTag( NAMESPACE, "layout" ).text( repositoryBase.getLayout() ).endTag( NAMESPACE, "layout" );
446 }
447 serializer.endTag( NAMESPACE, tagName );
448 }
449
450
451
452
453
454
455
456
457
458 private void writeRepositoryPolicy( RepositoryPolicy repositoryPolicy, String tagName, XmlSerializer serializer )
459 throws java.io.IOException
460 {
461 serializer.startTag( NAMESPACE, tagName );
462 if ( repositoryPolicy.isEnabled() != true )
463 {
464 serializer.startTag( NAMESPACE, "enabled" ).text( String.valueOf( repositoryPolicy.isEnabled() ) ).endTag( NAMESPACE, "enabled" );
465 }
466 if ( repositoryPolicy.getUpdatePolicy() != null )
467 {
468 serializer.startTag( NAMESPACE, "updatePolicy" ).text( repositoryPolicy.getUpdatePolicy() ).endTag( NAMESPACE, "updatePolicy" );
469 }
470 if ( repositoryPolicy.getChecksumPolicy() != null )
471 {
472 serializer.startTag( NAMESPACE, "checksumPolicy" ).text( repositoryPolicy.getChecksumPolicy() ).endTag( NAMESPACE, "checksumPolicy" );
473 }
474 serializer.endTag( NAMESPACE, tagName );
475 }
476
477
478
479
480
481
482
483
484
485 private void writeServer( Server server, String tagName, XmlSerializer serializer )
486 throws java.io.IOException
487 {
488 serializer.startTag( NAMESPACE, tagName );
489 if ( server.getUsername() != null )
490 {
491 serializer.startTag( NAMESPACE, "username" ).text( server.getUsername() ).endTag( NAMESPACE, "username" );
492 }
493 if ( server.getPassword() != null )
494 {
495 serializer.startTag( NAMESPACE, "password" ).text( server.getPassword() ).endTag( NAMESPACE, "password" );
496 }
497 if ( server.getPrivateKey() != null )
498 {
499 serializer.startTag( NAMESPACE, "privateKey" ).text( server.getPrivateKey() ).endTag( NAMESPACE, "privateKey" );
500 }
501 if ( server.getPassphrase() != null )
502 {
503 serializer.startTag( NAMESPACE, "passphrase" ).text( server.getPassphrase() ).endTag( NAMESPACE, "passphrase" );
504 }
505 if ( server.getFilePermissions() != null )
506 {
507 serializer.startTag( NAMESPACE, "filePermissions" ).text( server.getFilePermissions() ).endTag( NAMESPACE, "filePermissions" );
508 }
509 if ( server.getDirectoryPermissions() != null )
510 {
511 serializer.startTag( NAMESPACE, "directoryPermissions" ).text( server.getDirectoryPermissions() ).endTag( NAMESPACE, "directoryPermissions" );
512 }
513 if ( server.getConfiguration() != null )
514 {
515 ((Xpp3Dom) server.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
516 }
517 if ( ( server.getId() != null ) && !server.getId().equals( "default" ) )
518 {
519 serializer.startTag( NAMESPACE, "id" ).text( server.getId() ).endTag( NAMESPACE, "id" );
520 }
521 serializer.endTag( NAMESPACE, tagName );
522 }
523
524
525
526
527
528
529
530
531
532 private void writeSettings( Settings settings, String tagName, XmlSerializer serializer )
533 throws java.io.IOException
534 {
535 if ( this.fileComment != null )
536 {
537 serializer.comment(this.fileComment);
538 }
539 serializer.setPrefix( "", "http://maven.apache.org/SETTINGS/1.1.0" );
540 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
541 serializer.startTag( NAMESPACE, tagName );
542 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" );
543 if ( settings.getLocalRepository() != null )
544 {
545 serializer.startTag( NAMESPACE, "localRepository" ).text( settings.getLocalRepository() ).endTag( NAMESPACE, "localRepository" );
546 }
547 if ( settings.isInteractiveMode() != true )
548 {
549 serializer.startTag( NAMESPACE, "interactiveMode" ).text( String.valueOf( settings.isInteractiveMode() ) ).endTag( NAMESPACE, "interactiveMode" );
550 }
551 if ( settings.isUsePluginRegistry() != false )
552 {
553 serializer.startTag( NAMESPACE, "usePluginRegistry" ).text( String.valueOf( settings.isUsePluginRegistry() ) ).endTag( NAMESPACE, "usePluginRegistry" );
554 }
555 if ( settings.isOffline() != false )
556 {
557 serializer.startTag( NAMESPACE, "offline" ).text( String.valueOf( settings.isOffline() ) ).endTag( NAMESPACE, "offline" );
558 }
559 if ( ( settings.getProxies() != null ) && ( settings.getProxies().size() > 0 ) )
560 {
561 serializer.startTag( NAMESPACE, "proxies" );
562 for ( Iterator iter = settings.getProxies().iterator(); iter.hasNext(); )
563 {
564 Proxy o = (Proxy) iter.next();
565 writeProxy( o, "proxy", serializer );
566 }
567 serializer.endTag( NAMESPACE, "proxies" );
568 }
569 if ( ( settings.getServers() != null ) && ( settings.getServers().size() > 0 ) )
570 {
571 serializer.startTag( NAMESPACE, "servers" );
572 for ( Iterator iter = settings.getServers().iterator(); iter.hasNext(); )
573 {
574 Server o = (Server) iter.next();
575 writeServer( o, "server", serializer );
576 }
577 serializer.endTag( NAMESPACE, "servers" );
578 }
579 if ( ( settings.getMirrors() != null ) && ( settings.getMirrors().size() > 0 ) )
580 {
581 serializer.startTag( NAMESPACE, "mirrors" );
582 for ( Iterator iter = settings.getMirrors().iterator(); iter.hasNext(); )
583 {
584 Mirror o = (Mirror) iter.next();
585 writeMirror( o, "mirror", serializer );
586 }
587 serializer.endTag( NAMESPACE, "mirrors" );
588 }
589 if ( ( settings.getProfiles() != null ) && ( settings.getProfiles().size() > 0 ) )
590 {
591 serializer.startTag( NAMESPACE, "profiles" );
592 for ( Iterator iter = settings.getProfiles().iterator(); iter.hasNext(); )
593 {
594 Profile o = (Profile) iter.next();
595 writeProfile( o, "profile", serializer );
596 }
597 serializer.endTag( NAMESPACE, "profiles" );
598 }
599 if ( ( settings.getActiveProfiles() != null ) && ( settings.getActiveProfiles().size() > 0 ) )
600 {
601 serializer.startTag( NAMESPACE, "activeProfiles" );
602 for ( Iterator iter = settings.getActiveProfiles().iterator(); iter.hasNext(); )
603 {
604 String activeProfile = (String) iter.next();
605 serializer.startTag( NAMESPACE, "activeProfile" ).text( activeProfile ).endTag( NAMESPACE, "activeProfile" );
606 }
607 serializer.endTag( NAMESPACE, "activeProfiles" );
608 }
609 if ( ( settings.getPluginGroups() != null ) && ( settings.getPluginGroups().size() > 0 ) )
610 {
611 serializer.startTag( NAMESPACE, "pluginGroups" );
612 for ( Iterator iter = settings.getPluginGroups().iterator(); iter.hasNext(); )
613 {
614 String pluginGroup = (String) iter.next();
615 serializer.startTag( NAMESPACE, "pluginGroup" ).text( pluginGroup ).endTag( NAMESPACE, "pluginGroup" );
616 }
617 serializer.endTag( NAMESPACE, "pluginGroups" );
618 }
619 serializer.endTag( NAMESPACE, tagName );
620 }
621
622
623
624
625
626
627
628
629
630 private void writeTrackableBase( TrackableBase trackableBase, String tagName, XmlSerializer serializer )
631 throws java.io.IOException
632 {
633 serializer.startTag( NAMESPACE, tagName );
634 serializer.endTag( NAMESPACE, tagName );
635 }
636
637 }