1
2
3
4
5 package org.apache.maven.model.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.model.Model;
25 import org.apache.maven.api.model.ModelBase;
26 import org.apache.maven.api.model.PluginContainer;
27 import org.apache.maven.api.model.PluginConfiguration;
28 import org.apache.maven.api.model.BuildBase;
29 import org.apache.maven.api.model.Build;
30 import org.apache.maven.api.model.CiManagement;
31 import org.apache.maven.api.model.Notifier;
32 import org.apache.maven.api.model.Contributor;
33 import org.apache.maven.api.model.Dependency;
34 import org.apache.maven.api.model.Developer;
35 import org.apache.maven.api.model.Exclusion;
36 import org.apache.maven.api.model.IssueManagement;
37 import org.apache.maven.api.model.DistributionManagement;
38 import org.apache.maven.api.model.License;
39 import org.apache.maven.api.model.MailingList;
40 import org.apache.maven.api.model.Organization;
41 import org.apache.maven.api.model.PatternSet;
42 import org.apache.maven.api.model.Parent;
43 import org.apache.maven.api.model.Scm;
44 import org.apache.maven.api.model.FileSet;
45 import org.apache.maven.api.model.Resource;
46 import org.apache.maven.api.model.RepositoryBase;
47 import org.apache.maven.api.model.Repository;
48 import org.apache.maven.api.model.DeploymentRepository;
49 import org.apache.maven.api.model.RepositoryPolicy;
50 import org.apache.maven.api.model.Site;
51 import org.apache.maven.api.model.ConfigurationContainer;
52 import org.apache.maven.api.model.Plugin;
53 import org.apache.maven.api.model.PluginExecution;
54 import org.apache.maven.api.model.DependencyManagement;
55 import org.apache.maven.api.model.PluginManagement;
56 import org.apache.maven.api.model.Reporting;
57 import org.apache.maven.api.model.Profile;
58 import org.apache.maven.api.model.Activation;
59 import org.apache.maven.api.model.ActivationProperty;
60 import org.apache.maven.api.model.ActivationOS;
61 import org.apache.maven.api.model.ActivationFile;
62 import org.apache.maven.api.model.ReportPlugin;
63 import org.apache.maven.api.model.ReportSet;
64 import org.apache.maven.api.model.Prerequisites;
65 import org.apache.maven.api.model.Relocation;
66 import org.apache.maven.api.model.Extension;
67 import org.apache.maven.api.model.InputLocation;
68 import org.apache.maven.api.model.InputSource;
69 import org.codehaus.plexus.util.ReaderFactory;
70 import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
71 import org.codehaus.plexus.util.xml.pull.MXParser;
72 import org.codehaus.plexus.util.xml.pull.MXSerializer;
73 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
74 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
75 import org.codehaus.plexus.util.xml.pull.XmlSerializer;
76
77 @Generated
78 public class MavenXpp3Writer
79 {
80
81
82
83
84
85
86
87 private static final String NAMESPACE = null;
88
89
90
91
92 private String fileComment = null;
93
94
95
96
97
98
99
100
101
102
103
104 public void setFileComment( String fileComment )
105 {
106 this.fileComment = fileComment;
107 }
108
109
110
111
112
113
114
115
116 public void write( Writer writer, Model model )
117 throws java.io.IOException
118 {
119 XmlSerializer serializer = new MXSerializer();
120 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
121 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
122 serializer.setOutput( writer );
123 serializer.startDocument( model.getModelEncoding(), null );
124 writeModel( "project", model, serializer );
125 serializer.endDocument();
126 }
127
128
129
130
131
132
133
134
135 public void write( OutputStream stream, Model model )
136 throws java.io.IOException
137 {
138 XmlSerializer serializer = new MXSerializer();
139 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
140 serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
141 serializer.setOutput( stream, model.getModelEncoding() );
142 serializer.startDocument( model.getModelEncoding(), null );
143 writeModel( "project", model, serializer );
144 serializer.endDocument();
145 }
146
147
148
149
150
151
152
153
154 protected void writeDomToSerializer( org.apache.maven.api.xml.XmlNode dom, XmlSerializer serializer )
155 throws java.io.IOException
156 {
157 serializer.startTag( NAMESPACE, dom.getName() );
158
159 for ( Map.Entry<String, String> attribute : dom.getAttributes().entrySet() )
160 {
161 serializer.attribute( NAMESPACE, attribute.getKey(), attribute.getValue() );
162 }
163 for ( XmlNode aChild : dom.getChildren() )
164 {
165 writeDomToSerializer( aChild, serializer );
166 }
167
168 String value = dom.getValue();
169 if ( value != null )
170 {
171 serializer.text( value );
172 }
173
174 serializer.endTag( NAMESPACE, dom.getName() );
175
176 }
177
178
179 private void writeModel( String tagName, Model model, XmlSerializer serializer )
180 throws IOException
181 {
182 if ( model != null )
183 {
184 if ( this.fileComment != null )
185 {
186 serializer.comment(this.fileComment);
187 }
188 serializer.setPrefix( "", "http://maven.apache.org/POM/4.0.0" );
189 serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
190 serializer.startTag( NAMESPACE, tagName );
191 serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" );
192 writeAttr( "child.project.url.inherit.append.path", model.getChildProjectUrlInheritAppendPath(), serializer );
193 writeTag( "modelVersion", null, model.getModelVersion(), serializer );
194 writeParent( "parent", model.getParent(), serializer );
195 writeTag( "groupId", null, model.getGroupId(), serializer );
196 writeTag( "artifactId", null, model.getArtifactId(), serializer );
197 writeTag( "version", null, model.getVersion(), serializer );
198 writeTag( "packaging", "jar", model.getPackaging(), serializer );
199 writeTag( "name", null, model.getName(), serializer );
200 writeTag( "description", null, model.getDescription(), serializer );
201 writeTag( "url", null, model.getUrl(), serializer );
202 writeTag( "inceptionYear", null, model.getInceptionYear(), serializer );
203 writeOrganization( "organization", model.getOrganization(), serializer );
204 writeList( "licenses", false, model.getLicenses(), serializer, t -> writeLicense( "license", t, serializer ) );
205 writeList( "developers", false, model.getDevelopers(), serializer, t -> writeDeveloper( "developer", t, serializer ) );
206 writeList( "contributors", false, model.getContributors(), serializer, t -> writeContributor( "contributor", t, serializer ) );
207 writeList( "mailingLists", false, model.getMailingLists(), serializer, t -> writeMailingList( "mailingList", t, serializer ) );
208 writePrerequisites( "prerequisites", model.getPrerequisites(), serializer );
209 writeList( "modules", model.getModules(), serializer, t -> writeTag( "module", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
210 writeScm( "scm", model.getScm(), serializer );
211 writeIssueManagement( "issueManagement", model.getIssueManagement(), serializer );
212 writeCiManagement( "ciManagement", model.getCiManagement(), serializer );
213 writeDistributionManagement( "distributionManagement", model.getDistributionManagement(), serializer );
214 writeProperties( "properties", model.getProperties(), serializer );
215 writeDependencyManagement( "dependencyManagement", model.getDependencyManagement(), serializer );
216 writeList( "dependencies", false, model.getDependencies(), serializer, t -> writeDependency( "dependency", t, serializer ) );
217 writeList( "repositories", false, model.getRepositories(), serializer, t -> writeRepository( "repository", t, serializer ) );
218 writeList( "pluginRepositories", false, model.getPluginRepositories(), serializer, t -> writeRepository( "pluginRepository", t, serializer ) );
219 writeBuild( "build", model.getBuild(), serializer );
220 writeReporting( "reporting", model.getReporting(), serializer );
221 writeList( "profiles", false, model.getProfiles(), serializer, t -> writeProfile( "profile", t, serializer ) );
222 serializer.endTag( NAMESPACE, tagName );
223 }
224 }
225
226 private void writeModelBase( String tagName, ModelBase modelBase, XmlSerializer serializer )
227 throws IOException
228 {
229 if ( modelBase != null )
230 {
231 serializer.startTag( NAMESPACE, tagName );
232 writeList( "modules", modelBase.getModules(), serializer, t -> writeTag( "module", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
233 writeDistributionManagement( "distributionManagement", modelBase.getDistributionManagement(), serializer );
234 writeProperties( "properties", modelBase.getProperties(), serializer );
235 writeDependencyManagement( "dependencyManagement", modelBase.getDependencyManagement(), serializer );
236 writeList( "dependencies", false, modelBase.getDependencies(), serializer, t -> writeDependency( "dependency", t, serializer ) );
237 writeList( "repositories", false, modelBase.getRepositories(), serializer, t -> writeRepository( "repository", t, serializer ) );
238 writeList( "pluginRepositories", false, modelBase.getPluginRepositories(), serializer, t -> writeRepository( "pluginRepository", t, serializer ) );
239 writeReporting( "reporting", modelBase.getReporting(), serializer );
240 serializer.endTag( NAMESPACE, tagName );
241 }
242 }
243
244 private void writePluginContainer( String tagName, PluginContainer pluginContainer, XmlSerializer serializer )
245 throws IOException
246 {
247 if ( pluginContainer != null )
248 {
249 serializer.startTag( NAMESPACE, tagName );
250 writeList( "plugins", false, pluginContainer.getPlugins(), serializer, t -> writePlugin( "plugin", t, serializer ) );
251 serializer.endTag( NAMESPACE, tagName );
252 }
253 }
254
255 private void writePluginConfiguration( String tagName, PluginConfiguration pluginConfiguration, XmlSerializer serializer )
256 throws IOException
257 {
258 if ( pluginConfiguration != null )
259 {
260 serializer.startTag( NAMESPACE, tagName );
261 writePluginManagement( "pluginManagement", pluginConfiguration.getPluginManagement(), serializer );
262 writeList( "plugins", false, pluginConfiguration.getPlugins(), serializer, t -> writePlugin( "plugin", t, serializer ) );
263 serializer.endTag( NAMESPACE, tagName );
264 }
265 }
266
267 private void writeBuildBase( String tagName, BuildBase buildBase, XmlSerializer serializer )
268 throws IOException
269 {
270 if ( buildBase != null )
271 {
272 serializer.startTag( NAMESPACE, tagName );
273 writeTag( "defaultGoal", null, buildBase.getDefaultGoal(), serializer );
274 writeList( "resources", false, buildBase.getResources(), serializer, t -> writeResource( "resource", t, serializer ) );
275 writeList( "testResources", false, buildBase.getTestResources(), serializer, t -> writeResource( "testResource", t, serializer ) );
276 writeTag( "directory", null, buildBase.getDirectory(), serializer );
277 writeTag( "finalName", null, buildBase.getFinalName(), serializer );
278 writeList( "filters", buildBase.getFilters(), serializer, t -> writeTag( "filter", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
279 writePluginManagement( "pluginManagement", buildBase.getPluginManagement(), serializer );
280 writeList( "plugins", false, buildBase.getPlugins(), serializer, t -> writePlugin( "plugin", t, serializer ) );
281 serializer.endTag( NAMESPACE, tagName );
282 }
283 }
284
285 private void writeBuild( String tagName, Build build, XmlSerializer serializer )
286 throws IOException
287 {
288 if ( build != null )
289 {
290 serializer.startTag( NAMESPACE, tagName );
291 writeTag( "sourceDirectory", null, build.getSourceDirectory(), serializer );
292 writeTag( "scriptSourceDirectory", null, build.getScriptSourceDirectory(), serializer );
293 writeTag( "testSourceDirectory", null, build.getTestSourceDirectory(), serializer );
294 writeTag( "outputDirectory", null, build.getOutputDirectory(), serializer );
295 writeTag( "testOutputDirectory", null, build.getTestOutputDirectory(), serializer );
296 writeList( "extensions", false, build.getExtensions(), serializer, t -> writeExtension( "extension", t, serializer ) );
297 writeTag( "defaultGoal", null, build.getDefaultGoal(), serializer );
298 writeList( "resources", false, build.getResources(), serializer, t -> writeResource( "resource", t, serializer ) );
299 writeList( "testResources", false, build.getTestResources(), serializer, t -> writeResource( "testResource", t, serializer ) );
300 writeTag( "directory", null, build.getDirectory(), serializer );
301 writeTag( "finalName", null, build.getFinalName(), serializer );
302 writeList( "filters", build.getFilters(), serializer, t -> writeTag( "filter", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
303 writePluginManagement( "pluginManagement", build.getPluginManagement(), serializer );
304 writeList( "plugins", false, build.getPlugins(), serializer, t -> writePlugin( "plugin", t, serializer ) );
305 serializer.endTag( NAMESPACE, tagName );
306 }
307 }
308
309 private void writeCiManagement( String tagName, CiManagement ciManagement, XmlSerializer serializer )
310 throws IOException
311 {
312 if ( ciManagement != null )
313 {
314 serializer.startTag( NAMESPACE, tagName );
315 writeTag( "system", null, ciManagement.getSystem(), serializer );
316 writeTag( "url", null, ciManagement.getUrl(), serializer );
317 writeList( "notifiers", false, ciManagement.getNotifiers(), serializer, t -> writeNotifier( "notifier", t, serializer ) );
318 serializer.endTag( NAMESPACE, tagName );
319 }
320 }
321
322 private void writeNotifier( String tagName, Notifier notifier, XmlSerializer serializer )
323 throws IOException
324 {
325 if ( notifier != null )
326 {
327 serializer.startTag( NAMESPACE, tagName );
328 writeTag( "type", "mail", notifier.getType(), serializer );
329 writeTag( "sendOnError", "true", notifier.isSendOnError() ? null : "false", serializer );
330 writeTag( "sendOnFailure", "true", notifier.isSendOnFailure() ? null : "false", serializer );
331 writeTag( "sendOnSuccess", "true", notifier.isSendOnSuccess() ? null : "false", serializer );
332 writeTag( "sendOnWarning", "true", notifier.isSendOnWarning() ? null : "false", serializer );
333 writeTag( "address", null, notifier.getAddress(), serializer );
334 writeProperties( "configuration", notifier.getConfiguration(), serializer );
335 serializer.endTag( NAMESPACE, tagName );
336 }
337 }
338
339 private void writeContributor( String tagName, Contributor contributor, XmlSerializer serializer )
340 throws IOException
341 {
342 if ( contributor != null )
343 {
344 serializer.startTag( NAMESPACE, tagName );
345 writeTag( "name", null, contributor.getName(), serializer );
346 writeTag( "email", null, contributor.getEmail(), serializer );
347 writeTag( "url", null, contributor.getUrl(), serializer );
348 writeTag( "organization", null, contributor.getOrganization(), serializer );
349 writeTag( "organizationUrl", null, contributor.getOrganizationUrl(), serializer );
350 writeList( "roles", contributor.getRoles(), serializer, t -> writeTag( "role", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
351 writeTag( "timezone", null, contributor.getTimezone(), serializer );
352 writeProperties( "properties", contributor.getProperties(), serializer );
353 serializer.endTag( NAMESPACE, tagName );
354 }
355 }
356
357 private void writeDependency( String tagName, Dependency dependency, XmlSerializer serializer )
358 throws IOException
359 {
360 if ( dependency != null )
361 {
362 serializer.startTag( NAMESPACE, tagName );
363 writeTag( "groupId", null, dependency.getGroupId(), serializer );
364 writeTag( "artifactId", null, dependency.getArtifactId(), serializer );
365 writeTag( "version", null, dependency.getVersion(), serializer );
366 writeTag( "type", "jar", dependency.getType(), serializer );
367 writeTag( "classifier", null, dependency.getClassifier(), serializer );
368 writeTag( "scope", null, dependency.getScope(), serializer );
369 writeTag( "systemPath", null, dependency.getSystemPath(), serializer );
370 writeList( "exclusions", false, dependency.getExclusions(), serializer, t -> writeExclusion( "exclusion", t, serializer ) );
371 writeTag( "optional", null, dependency.getOptional(), serializer );
372 serializer.endTag( NAMESPACE, tagName );
373 }
374 }
375
376 private void writeDeveloper( String tagName, Developer developer, XmlSerializer serializer )
377 throws IOException
378 {
379 if ( developer != null )
380 {
381 serializer.startTag( NAMESPACE, tagName );
382 writeTag( "id", null, developer.getId(), serializer );
383 writeTag( "name", null, developer.getName(), serializer );
384 writeTag( "email", null, developer.getEmail(), serializer );
385 writeTag( "url", null, developer.getUrl(), serializer );
386 writeTag( "organization", null, developer.getOrganization(), serializer );
387 writeTag( "organizationUrl", null, developer.getOrganizationUrl(), serializer );
388 writeList( "roles", developer.getRoles(), serializer, t -> writeTag( "role", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
389 writeTag( "timezone", null, developer.getTimezone(), serializer );
390 writeProperties( "properties", developer.getProperties(), serializer );
391 serializer.endTag( NAMESPACE, tagName );
392 }
393 }
394
395 private void writeExclusion( String tagName, Exclusion exclusion, XmlSerializer serializer )
396 throws IOException
397 {
398 if ( exclusion != null )
399 {
400 serializer.startTag( NAMESPACE, tagName );
401 writeTag( "groupId", null, exclusion.getGroupId(), serializer );
402 writeTag( "artifactId", null, exclusion.getArtifactId(), serializer );
403 serializer.endTag( NAMESPACE, tagName );
404 }
405 }
406
407 private void writeIssueManagement( String tagName, IssueManagement issueManagement, XmlSerializer serializer )
408 throws IOException
409 {
410 if ( issueManagement != null )
411 {
412 serializer.startTag( NAMESPACE, tagName );
413 writeTag( "system", null, issueManagement.getSystem(), serializer );
414 writeTag( "url", null, issueManagement.getUrl(), serializer );
415 serializer.endTag( NAMESPACE, tagName );
416 }
417 }
418
419 private void writeDistributionManagement( String tagName, DistributionManagement distributionManagement, XmlSerializer serializer )
420 throws IOException
421 {
422 if ( distributionManagement != null )
423 {
424 serializer.startTag( NAMESPACE, tagName );
425 writeDeploymentRepository( "repository", distributionManagement.getRepository(), serializer );
426 writeDeploymentRepository( "snapshotRepository", distributionManagement.getSnapshotRepository(), serializer );
427 writeSite( "site", distributionManagement.getSite(), serializer );
428 writeTag( "downloadUrl", null, distributionManagement.getDownloadUrl(), serializer );
429 writeRelocation( "relocation", distributionManagement.getRelocation(), serializer );
430 writeTag( "status", null, distributionManagement.getStatus(), serializer );
431 serializer.endTag( NAMESPACE, tagName );
432 }
433 }
434
435 private void writeLicense( String tagName, License license, XmlSerializer serializer )
436 throws IOException
437 {
438 if ( license != null )
439 {
440 serializer.startTag( NAMESPACE, tagName );
441 writeTag( "name", null, license.getName(), serializer );
442 writeTag( "url", null, license.getUrl(), serializer );
443 writeTag( "distribution", null, license.getDistribution(), serializer );
444 writeTag( "comments", null, license.getComments(), serializer );
445 serializer.endTag( NAMESPACE, tagName );
446 }
447 }
448
449 private void writeMailingList( String tagName, MailingList mailingList, XmlSerializer serializer )
450 throws IOException
451 {
452 if ( mailingList != null )
453 {
454 serializer.startTag( NAMESPACE, tagName );
455 writeTag( "name", null, mailingList.getName(), serializer );
456 writeTag( "subscribe", null, mailingList.getSubscribe(), serializer );
457 writeTag( "unsubscribe", null, mailingList.getUnsubscribe(), serializer );
458 writeTag( "post", null, mailingList.getPost(), serializer );
459 writeTag( "archive", null, mailingList.getArchive(), serializer );
460 writeList( "otherArchives", mailingList.getOtherArchives(), serializer, t -> writeTag( "otherArchive", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
461 serializer.endTag( NAMESPACE, tagName );
462 }
463 }
464
465 private void writeOrganization( String tagName, Organization organization, XmlSerializer serializer )
466 throws IOException
467 {
468 if ( organization != null )
469 {
470 serializer.startTag( NAMESPACE, tagName );
471 writeTag( "name", null, organization.getName(), serializer );
472 writeTag( "url", null, organization.getUrl(), serializer );
473 serializer.endTag( NAMESPACE, tagName );
474 }
475 }
476
477 private void writePatternSet( String tagName, PatternSet patternSet, XmlSerializer serializer )
478 throws IOException
479 {
480 if ( patternSet != null )
481 {
482 serializer.startTag( NAMESPACE, tagName );
483 writeList( "includes", patternSet.getIncludes(), serializer, t -> writeTag( "include", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
484 writeList( "excludes", patternSet.getExcludes(), serializer, t -> writeTag( "exclude", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
485 serializer.endTag( NAMESPACE, tagName );
486 }
487 }
488
489 private void writeParent( String tagName, Parent parent, XmlSerializer serializer )
490 throws IOException
491 {
492 if ( parent != null )
493 {
494 serializer.startTag( NAMESPACE, tagName );
495 writeTag( "groupId", null, parent.getGroupId(), serializer );
496 writeTag( "artifactId", null, parent.getArtifactId(), serializer );
497 writeTag( "version", null, parent.getVersion(), serializer );
498 writeTag( "relativePath", "../pom.xml", parent.getRelativePath(), serializer );
499 serializer.endTag( NAMESPACE, tagName );
500 }
501 }
502
503 private void writeScm( String tagName, Scm scm, XmlSerializer serializer )
504 throws IOException
505 {
506 if ( scm != null )
507 {
508 serializer.startTag( NAMESPACE, tagName );
509 writeAttr( "child.scm.connection.inherit.append.path", scm.getChildScmConnectionInheritAppendPath(), serializer );
510 writeAttr( "child.scm.developerConnection.inherit.append.path", scm.getChildScmDeveloperConnectionInheritAppendPath(), serializer );
511 writeAttr( "child.scm.url.inherit.append.path", scm.getChildScmUrlInheritAppendPath(), serializer );
512 writeTag( "connection", null, scm.getConnection(), serializer );
513 writeTag( "developerConnection", null, scm.getDeveloperConnection(), serializer );
514 writeTag( "tag", "HEAD", scm.getTag(), serializer );
515 writeTag( "url", null, scm.getUrl(), serializer );
516 serializer.endTag( NAMESPACE, tagName );
517 }
518 }
519
520 private void writeFileSet( String tagName, FileSet fileSet, XmlSerializer serializer )
521 throws IOException
522 {
523 if ( fileSet != null )
524 {
525 serializer.startTag( NAMESPACE, tagName );
526 writeTag( "directory", null, fileSet.getDirectory(), serializer );
527 writeList( "includes", fileSet.getIncludes(), serializer, t -> writeTag( "include", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
528 writeList( "excludes", fileSet.getExcludes(), serializer, t -> writeTag( "exclude", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
529 serializer.endTag( NAMESPACE, tagName );
530 }
531 }
532
533 private void writeResource( String tagName, Resource resource, XmlSerializer serializer )
534 throws IOException
535 {
536 if ( resource != null )
537 {
538 serializer.startTag( NAMESPACE, tagName );
539 writeTag( "targetPath", null, resource.getTargetPath(), serializer );
540 writeTag( "filtering", null, resource.getFiltering(), serializer );
541 writeTag( "directory", null, resource.getDirectory(), serializer );
542 writeList( "includes", resource.getIncludes(), serializer, t -> writeTag( "include", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
543 writeList( "excludes", resource.getExcludes(), serializer, t -> writeTag( "exclude", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
544 serializer.endTag( NAMESPACE, tagName );
545 }
546 }
547
548 private void writeRepositoryBase( String tagName, RepositoryBase repositoryBase, XmlSerializer serializer )
549 throws IOException
550 {
551 if ( repositoryBase != null )
552 {
553 serializer.startTag( NAMESPACE, tagName );
554 writeTag( "id", null, repositoryBase.getId(), serializer );
555 writeTag( "name", null, repositoryBase.getName(), serializer );
556 writeTag( "url", null, repositoryBase.getUrl(), serializer );
557 writeTag( "layout", "default", repositoryBase.getLayout(), serializer );
558 serializer.endTag( NAMESPACE, tagName );
559 }
560 }
561
562 private void writeRepository( String tagName, Repository repository, XmlSerializer serializer )
563 throws IOException
564 {
565 if ( repository != null )
566 {
567 serializer.startTag( NAMESPACE, tagName );
568 writeRepositoryPolicy( "releases", repository.getReleases(), serializer );
569 writeRepositoryPolicy( "snapshots", repository.getSnapshots(), serializer );
570 writeTag( "id", null, repository.getId(), serializer );
571 writeTag( "name", null, repository.getName(), serializer );
572 writeTag( "url", null, repository.getUrl(), serializer );
573 writeTag( "layout", "default", repository.getLayout(), serializer );
574 serializer.endTag( NAMESPACE, tagName );
575 }
576 }
577
578 private void writeDeploymentRepository( String tagName, DeploymentRepository deploymentRepository, XmlSerializer serializer )
579 throws IOException
580 {
581 if ( deploymentRepository != null )
582 {
583 serializer.startTag( NAMESPACE, tagName );
584 writeTag( "uniqueVersion", "true", deploymentRepository.isUniqueVersion() ? null : "false", serializer );
585 writeRepositoryPolicy( "releases", deploymentRepository.getReleases(), serializer );
586 writeRepositoryPolicy( "snapshots", deploymentRepository.getSnapshots(), serializer );
587 writeTag( "id", null, deploymentRepository.getId(), serializer );
588 writeTag( "name", null, deploymentRepository.getName(), serializer );
589 writeTag( "url", null, deploymentRepository.getUrl(), serializer );
590 writeTag( "layout", "default", deploymentRepository.getLayout(), serializer );
591 serializer.endTag( NAMESPACE, tagName );
592 }
593 }
594
595 private void writeRepositoryPolicy( String tagName, RepositoryPolicy repositoryPolicy, XmlSerializer serializer )
596 throws IOException
597 {
598 if ( repositoryPolicy != null )
599 {
600 serializer.startTag( NAMESPACE, tagName );
601 writeTag( "enabled", null, repositoryPolicy.getEnabled(), serializer );
602 writeTag( "updatePolicy", null, repositoryPolicy.getUpdatePolicy(), serializer );
603 writeTag( "checksumPolicy", null, repositoryPolicy.getChecksumPolicy(), serializer );
604 serializer.endTag( NAMESPACE, tagName );
605 }
606 }
607
608 private void writeSite( String tagName, Site site, XmlSerializer serializer )
609 throws IOException
610 {
611 if ( site != null )
612 {
613 serializer.startTag( NAMESPACE, tagName );
614 writeAttr( "child.site.url.inherit.append.path", site.getChildSiteUrlInheritAppendPath(), serializer );
615 writeTag( "id", null, site.getId(), serializer );
616 writeTag( "name", null, site.getName(), serializer );
617 writeTag( "url", null, site.getUrl(), serializer );
618 serializer.endTag( NAMESPACE, tagName );
619 }
620 }
621
622 private void writeConfigurationContainer( String tagName, ConfigurationContainer configurationContainer, XmlSerializer serializer )
623 throws IOException
624 {
625 if ( configurationContainer != null )
626 {
627 serializer.startTag( NAMESPACE, tagName );
628 writeTag( "inherited", null, configurationContainer.getInherited(), serializer );
629 writeDom( configurationContainer.getConfiguration(), serializer );
630 serializer.endTag( NAMESPACE, tagName );
631 }
632 }
633
634 private void writePlugin( String tagName, Plugin plugin, XmlSerializer serializer )
635 throws IOException
636 {
637 if ( plugin != null )
638 {
639 serializer.startTag( NAMESPACE, tagName );
640 writeTag( "groupId", "org.apache.maven.plugins", plugin.getGroupId(), serializer );
641 writeTag( "artifactId", null, plugin.getArtifactId(), serializer );
642 writeTag( "version", null, plugin.getVersion(), serializer );
643 writeTag( "extensions", null, plugin.getExtensions(), serializer );
644 writeList( "executions", false, plugin.getExecutions(), serializer, t -> writePluginExecution( "execution", t, serializer ) );
645 writeList( "dependencies", false, plugin.getDependencies(), serializer, t -> writeDependency( "dependency", t, serializer ) );
646 writeTag( "inherited", null, plugin.getInherited(), serializer );
647 writeDom( plugin.getConfiguration(), serializer );
648 serializer.endTag( NAMESPACE, tagName );
649 }
650 }
651
652 private void writePluginExecution( String tagName, PluginExecution pluginExecution, XmlSerializer serializer )
653 throws IOException
654 {
655 if ( pluginExecution != null )
656 {
657 serializer.startTag( NAMESPACE, tagName );
658 writeTag( "id", "default", pluginExecution.getId(), serializer );
659 writeTag( "phase", null, pluginExecution.getPhase(), serializer );
660 writeList( "goals", pluginExecution.getGoals(), serializer, t -> writeTag( "goal", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
661 writeTag( "inherited", null, pluginExecution.getInherited(), serializer );
662 writeDom( pluginExecution.getConfiguration(), serializer );
663 serializer.endTag( NAMESPACE, tagName );
664 }
665 }
666
667 private void writeDependencyManagement( String tagName, DependencyManagement dependencyManagement, XmlSerializer serializer )
668 throws IOException
669 {
670 if ( dependencyManagement != null )
671 {
672 serializer.startTag( NAMESPACE, tagName );
673 writeList( "dependencies", false, dependencyManagement.getDependencies(), serializer, t -> writeDependency( "dependency", t, serializer ) );
674 serializer.endTag( NAMESPACE, tagName );
675 }
676 }
677
678 private void writePluginManagement( String tagName, PluginManagement pluginManagement, XmlSerializer serializer )
679 throws IOException
680 {
681 if ( pluginManagement != null )
682 {
683 serializer.startTag( NAMESPACE, tagName );
684 writeList( "plugins", false, pluginManagement.getPlugins(), serializer, t -> writePlugin( "plugin", t, serializer ) );
685 serializer.endTag( NAMESPACE, tagName );
686 }
687 }
688
689 private void writeReporting( String tagName, Reporting reporting, XmlSerializer serializer )
690 throws IOException
691 {
692 if ( reporting != null )
693 {
694 serializer.startTag( NAMESPACE, tagName );
695 writeTag( "excludeDefaults", null, reporting.getExcludeDefaults(), serializer );
696 writeTag( "outputDirectory", null, reporting.getOutputDirectory(), serializer );
697 writeList( "plugins", false, reporting.getPlugins(), serializer, t -> writeReportPlugin( "plugin", t, serializer ) );
698 serializer.endTag( NAMESPACE, tagName );
699 }
700 }
701
702 private void writeProfile( String tagName, Profile profile, XmlSerializer serializer )
703 throws IOException
704 {
705 if ( profile != null )
706 {
707 serializer.startTag( NAMESPACE, tagName );
708 writeTag( "id", "default", profile.getId(), serializer );
709 writeActivation( "activation", profile.getActivation(), serializer );
710 writeBuildBase( "build", profile.getBuild(), serializer );
711 writeList( "modules", profile.getModules(), serializer, t -> writeTag( "module", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
712 writeDistributionManagement( "distributionManagement", profile.getDistributionManagement(), serializer );
713 writeProperties( "properties", profile.getProperties(), serializer );
714 writeDependencyManagement( "dependencyManagement", profile.getDependencyManagement(), serializer );
715 writeList( "dependencies", false, profile.getDependencies(), serializer, t -> writeDependency( "dependency", t, serializer ) );
716 writeList( "repositories", false, profile.getRepositories(), serializer, t -> writeRepository( "repository", t, serializer ) );
717 writeList( "pluginRepositories", false, profile.getPluginRepositories(), serializer, t -> writeRepository( "pluginRepository", t, serializer ) );
718 writeReporting( "reporting", profile.getReporting(), serializer );
719 serializer.endTag( NAMESPACE, tagName );
720 }
721 }
722
723 private void writeActivation( String tagName, Activation activation, XmlSerializer serializer )
724 throws IOException
725 {
726 if ( activation != null )
727 {
728 serializer.startTag( NAMESPACE, tagName );
729 writeTag( "activeByDefault", "false", activation.isActiveByDefault() ? "true" : null, serializer );
730 writeTag( "jdk", null, activation.getJdk(), serializer );
731 writeActivationOS( "os", activation.getOs(), serializer );
732 writeActivationProperty( "property", activation.getProperty(), serializer );
733 writeActivationFile( "file", activation.getFile(), serializer );
734 serializer.endTag( NAMESPACE, tagName );
735 }
736 }
737
738 private void writeActivationProperty( String tagName, ActivationProperty activationProperty, XmlSerializer serializer )
739 throws IOException
740 {
741 if ( activationProperty != null )
742 {
743 serializer.startTag( NAMESPACE, tagName );
744 writeTag( "name", null, activationProperty.getName(), serializer );
745 writeTag( "value", null, activationProperty.getValue(), serializer );
746 serializer.endTag( NAMESPACE, tagName );
747 }
748 }
749
750 private void writeActivationOS( String tagName, ActivationOS activationOS, XmlSerializer serializer )
751 throws IOException
752 {
753 if ( activationOS != null )
754 {
755 serializer.startTag( NAMESPACE, tagName );
756 writeTag( "name", null, activationOS.getName(), serializer );
757 writeTag( "family", null, activationOS.getFamily(), serializer );
758 writeTag( "arch", null, activationOS.getArch(), serializer );
759 writeTag( "version", null, activationOS.getVersion(), serializer );
760 serializer.endTag( NAMESPACE, tagName );
761 }
762 }
763
764 private void writeActivationFile( String tagName, ActivationFile activationFile, XmlSerializer serializer )
765 throws IOException
766 {
767 if ( activationFile != null )
768 {
769 serializer.startTag( NAMESPACE, tagName );
770 writeTag( "missing", null, activationFile.getMissing(), serializer );
771 writeTag( "exists", null, activationFile.getExists(), serializer );
772 serializer.endTag( NAMESPACE, tagName );
773 }
774 }
775
776 private void writeReportPlugin( String tagName, ReportPlugin reportPlugin, XmlSerializer serializer )
777 throws IOException
778 {
779 if ( reportPlugin != null )
780 {
781 serializer.startTag( NAMESPACE, tagName );
782 writeTag( "groupId", "org.apache.maven.plugins", reportPlugin.getGroupId(), serializer );
783 writeTag( "artifactId", null, reportPlugin.getArtifactId(), serializer );
784 writeTag( "version", null, reportPlugin.getVersion(), serializer );
785 writeList( "reportSets", false, reportPlugin.getReportSets(), serializer, t -> writeReportSet( "reportSet", t, serializer ) );
786 writeTag( "inherited", null, reportPlugin.getInherited(), serializer );
787 writeDom( reportPlugin.getConfiguration(), serializer );
788 serializer.endTag( NAMESPACE, tagName );
789 }
790 }
791
792 private void writeReportSet( String tagName, ReportSet reportSet, XmlSerializer serializer )
793 throws IOException
794 {
795 if ( reportSet != null )
796 {
797 serializer.startTag( NAMESPACE, tagName );
798 writeTag( "id", "default", reportSet.getId(), serializer );
799 writeList( "reports", reportSet.getReports(), serializer, t -> writeTag( "report", "new java.util.ArrayList/*<String>*/()", t, serializer ) );
800 writeTag( "inherited", null, reportSet.getInherited(), serializer );
801 writeDom( reportSet.getConfiguration(), serializer );
802 serializer.endTag( NAMESPACE, tagName );
803 }
804 }
805
806 private void writePrerequisites( String tagName, Prerequisites prerequisites, XmlSerializer serializer )
807 throws IOException
808 {
809 if ( prerequisites != null )
810 {
811 serializer.startTag( NAMESPACE, tagName );
812 writeTag( "maven", "2.0", prerequisites.getMaven(), serializer );
813 serializer.endTag( NAMESPACE, tagName );
814 }
815 }
816
817 private void writeRelocation( String tagName, Relocation relocation, XmlSerializer serializer )
818 throws IOException
819 {
820 if ( relocation != null )
821 {
822 serializer.startTag( NAMESPACE, tagName );
823 writeTag( "groupId", null, relocation.getGroupId(), serializer );
824 writeTag( "artifactId", null, relocation.getArtifactId(), serializer );
825 writeTag( "version", null, relocation.getVersion(), serializer );
826 writeTag( "message", null, relocation.getMessage(), serializer );
827 serializer.endTag( NAMESPACE, tagName );
828 }
829 }
830
831 private void writeExtension( String tagName, Extension extension, XmlSerializer serializer )
832 throws IOException
833 {
834 if ( extension != null )
835 {
836 serializer.startTag( NAMESPACE, tagName );
837 writeTag( "groupId", null, extension.getGroupId(), serializer );
838 writeTag( "artifactId", null, extension.getArtifactId(), serializer );
839 writeTag( "version", null, extension.getVersion(), serializer );
840 serializer.endTag( NAMESPACE, tagName );
841 }
842 }
843
844 @FunctionalInterface
845 private interface ElementWriter<T>
846 {
847 public void write( T t ) throws IOException;
848 }
849
850 private <T> void writeList( String tagName, List<T> list, XmlSerializer serializer, ElementWriter<T> writer )
851 throws IOException
852 {
853 writeList( tagName, false, list, serializer, writer );
854 }
855
856 private <T> void writeList( String tagName, boolean flat, List<T> list, XmlSerializer serializer, ElementWriter<T> writer )
857 throws IOException
858 {
859 if ( list != null && !list.isEmpty() )
860 {
861 if ( !flat )
862 {
863 serializer.startTag( NAMESPACE, tagName );
864 }
865 for ( T t : list )
866 {
867 writer.write( t );
868 }
869 if ( !flat )
870 {
871 serializer.endTag( NAMESPACE, tagName );
872 }
873 }
874 }
875
876 private <T> void writeProperties( String tagName, Map<String, String> props, XmlSerializer serializer )
877 throws IOException
878 {
879 if ( props != null && !props.isEmpty() )
880 {
881 serializer.startTag( NAMESPACE, tagName );
882 for ( Map.Entry<String, String> entry : props.entrySet() )
883 {
884 writeTag( entry.getKey(), null, entry.getValue(), serializer );
885 }
886 serializer.endTag( NAMESPACE, tagName );
887 }
888 }
889
890 private void writeDom( XmlNode dom, XmlSerializer serializer )
891 throws IOException
892 {
893 if ( dom != null )
894 {
895 serializer.startTag( NAMESPACE, dom.getName() );
896 for ( Map.Entry<String, String> attr : dom.getAttributes().entrySet() )
897 {
898 serializer.attribute( NAMESPACE, attr.getKey(), attr.getValue() );
899 }
900 for ( XmlNode child : dom.getChildren() )
901 {
902 writeDom( child, serializer );
903 }
904 String value = dom.getValue();
905 if ( value != null )
906 {
907 serializer.text( value );
908 }
909 serializer.endTag( NAMESPACE, dom.getName() );
910 }
911 }
912
913 private void writeTag( String tagName, String defaultValue, String value, XmlSerializer serializer )
914 throws IOException
915 {
916 if ( value != null && !Objects.equals( defaultValue, value ) )
917 {
918 serializer.startTag( NAMESPACE, tagName ).text( value ).endTag( NAMESPACE, tagName );
919 }
920 }
921
922 private void writeAttr( String attrName, String value, XmlSerializer serializer )
923 throws IOException
924 {
925 if ( value != null )
926 {
927 serializer.attribute( NAMESPACE, attrName, value );
928 }
929 }
930
931 }