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