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