View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package org.apache.maven.model.io.xpp3;
6   
7     //---------------------------------/
8    //- Imported classes and packages -/
9   //---------------------------------/
10  
11  import java.io.Writer;
12  import java.text.DateFormat;
13  import java.util.Iterator;
14  import java.util.Locale;
15  import org.apache.maven.model.Activation;
16  import org.apache.maven.model.ActivationFile;
17  import org.apache.maven.model.ActivationOS;
18  import org.apache.maven.model.ActivationProperty;
19  import org.apache.maven.model.Build;
20  import org.apache.maven.model.BuildBase;
21  import org.apache.maven.model.CiManagement;
22  import org.apache.maven.model.ConfigurationContainer;
23  import org.apache.maven.model.Contributor;
24  import org.apache.maven.model.Dependency;
25  import org.apache.maven.model.DependencyManagement;
26  import org.apache.maven.model.DeploymentRepository;
27  import org.apache.maven.model.Developer;
28  import org.apache.maven.model.DistributionManagement;
29  import org.apache.maven.model.Exclusion;
30  import org.apache.maven.model.Extension;
31  import org.apache.maven.model.FileSet;
32  import org.apache.maven.model.IssueManagement;
33  import org.apache.maven.model.License;
34  import org.apache.maven.model.MailingList;
35  import org.apache.maven.model.Model;
36  import org.apache.maven.model.ModelBase;
37  import org.apache.maven.model.Notifier;
38  import org.apache.maven.model.Organization;
39  import org.apache.maven.model.Parent;
40  import org.apache.maven.model.PatternSet;
41  import org.apache.maven.model.Plugin;
42  import org.apache.maven.model.PluginConfiguration;
43  import org.apache.maven.model.PluginContainer;
44  import org.apache.maven.model.PluginExecution;
45  import org.apache.maven.model.PluginManagement;
46  import org.apache.maven.model.Prerequisites;
47  import org.apache.maven.model.Profile;
48  import org.apache.maven.model.Relocation;
49  import org.apache.maven.model.ReportPlugin;
50  import org.apache.maven.model.ReportSet;
51  import org.apache.maven.model.Reporting;
52  import org.apache.maven.model.Repository;
53  import org.apache.maven.model.RepositoryBase;
54  import org.apache.maven.model.RepositoryPolicy;
55  import org.apache.maven.model.Resource;
56  import org.apache.maven.model.Scm;
57  import org.apache.maven.model.Site;
58  import org.codehaus.plexus.util.xml.Xpp3Dom;
59  import org.codehaus.plexus.util.xml.pull.MXSerializer;
60  import org.codehaus.plexus.util.xml.pull.XmlSerializer;
61  
62  /**
63   * Class MavenXpp3Writer.
64   * 
65   * @version $Revision$ $Date$
66   */
67  public class MavenXpp3Writer {
68  
69  
70        //--------------------------/
71       //- Class/Member Variables -/
72      //--------------------------/
73  
74      /**
75       * Field NAMESPACE.
76       */
77      private String NAMESPACE;
78  
79  
80        //-----------/
81       //- Methods -/
82      //-----------/
83  
84      /**
85       * Method write.
86       * 
87       * @param writer
88       * @param model
89       * @throws java.io.IOException
90       */
91      public void write( Writer writer, Model model )
92          throws java.io.IOException
93      {
94          XmlSerializer serializer = new MXSerializer();
95          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
96          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
97          serializer.setOutput( writer );
98          serializer.startDocument( model.getModelEncoding(), null );
99          writeModel( model, "project", serializer );
100         serializer.endDocument();
101     } //-- void write( Writer, Model ) 
102 
103     /**
104      * Method writeActivation.
105      * 
106      * @param activation
107      * @param serializer
108      * @param tagName
109      * @throws java.io.IOException
110      */
111     private void writeActivation( Activation activation, String tagName, XmlSerializer serializer )
112         throws java.io.IOException
113     {
114         if ( activation != null )
115         {
116             serializer.startTag( NAMESPACE, tagName );
117             if ( activation.isActiveByDefault() != false )
118             {
119                 serializer.startTag( NAMESPACE, "activeByDefault" ).text( String.valueOf( activation.isActiveByDefault() ) ).endTag( NAMESPACE, "activeByDefault" );
120             }
121             if ( activation.getJdk() != null )
122             {
123                 serializer.startTag( NAMESPACE, "jdk" ).text( activation.getJdk() ).endTag( NAMESPACE, "jdk" );
124             }
125             if ( activation.getOs() != null )
126             {
127                 writeActivationOS( (ActivationOS) activation.getOs(), "os", serializer );
128             }
129             if ( activation.getProperty() != null )
130             {
131                 writeActivationProperty( (ActivationProperty) activation.getProperty(), "property", serializer );
132             }
133             if ( activation.getFile() != null )
134             {
135                 writeActivationFile( (ActivationFile) activation.getFile(), "file", serializer );
136             }
137             serializer.endTag( NAMESPACE, tagName );
138         }
139     } //-- void writeActivation( Activation, String, XmlSerializer ) 
140 
141     /**
142      * Method writeActivationFile.
143      * 
144      * @param activationFile
145      * @param serializer
146      * @param tagName
147      * @throws java.io.IOException
148      */
149     private void writeActivationFile( ActivationFile activationFile, String tagName, XmlSerializer serializer )
150         throws java.io.IOException
151     {
152         if ( activationFile != null )
153         {
154             serializer.startTag( NAMESPACE, tagName );
155             if ( activationFile.getMissing() != null )
156             {
157                 serializer.startTag( NAMESPACE, "missing" ).text( activationFile.getMissing() ).endTag( NAMESPACE, "missing" );
158             }
159             if ( activationFile.getExists() != null )
160             {
161                 serializer.startTag( NAMESPACE, "exists" ).text( activationFile.getExists() ).endTag( NAMESPACE, "exists" );
162             }
163             serializer.endTag( NAMESPACE, tagName );
164         }
165     } //-- void writeActivationFile( ActivationFile, String, XmlSerializer ) 
166 
167     /**
168      * Method writeActivationOS.
169      * 
170      * @param activationOS
171      * @param serializer
172      * @param tagName
173      * @throws java.io.IOException
174      */
175     private void writeActivationOS( ActivationOS activationOS, String tagName, XmlSerializer serializer )
176         throws java.io.IOException
177     {
178         if ( activationOS != null )
179         {
180             serializer.startTag( NAMESPACE, tagName );
181             if ( activationOS.getName() != null )
182             {
183                 serializer.startTag( NAMESPACE, "name" ).text( activationOS.getName() ).endTag( NAMESPACE, "name" );
184             }
185             if ( activationOS.getFamily() != null )
186             {
187                 serializer.startTag( NAMESPACE, "family" ).text( activationOS.getFamily() ).endTag( NAMESPACE, "family" );
188             }
189             if ( activationOS.getArch() != null )
190             {
191                 serializer.startTag( NAMESPACE, "arch" ).text( activationOS.getArch() ).endTag( NAMESPACE, "arch" );
192             }
193             if ( activationOS.getVersion() != null )
194             {
195                 serializer.startTag( NAMESPACE, "version" ).text( activationOS.getVersion() ).endTag( NAMESPACE, "version" );
196             }
197             serializer.endTag( NAMESPACE, tagName );
198         }
199     } //-- void writeActivationOS( ActivationOS, String, XmlSerializer ) 
200 
201     /**
202      * Method writeActivationProperty.
203      * 
204      * @param activationProperty
205      * @param serializer
206      * @param tagName
207      * @throws java.io.IOException
208      */
209     private void writeActivationProperty( ActivationProperty activationProperty, String tagName, XmlSerializer serializer )
210         throws java.io.IOException
211     {
212         if ( activationProperty != null )
213         {
214             serializer.startTag( NAMESPACE, tagName );
215             if ( activationProperty.getName() != null )
216             {
217                 serializer.startTag( NAMESPACE, "name" ).text( activationProperty.getName() ).endTag( NAMESPACE, "name" );
218             }
219             if ( activationProperty.getValue() != null )
220             {
221                 serializer.startTag( NAMESPACE, "value" ).text( activationProperty.getValue() ).endTag( NAMESPACE, "value" );
222             }
223             serializer.endTag( NAMESPACE, tagName );
224         }
225     } //-- void writeActivationProperty( ActivationProperty, String, XmlSerializer ) 
226 
227     /**
228      * Method writeBuild.
229      * 
230      * @param build
231      * @param serializer
232      * @param tagName
233      * @throws java.io.IOException
234      */
235     private void writeBuild( Build build, String tagName, XmlSerializer serializer )
236         throws java.io.IOException
237     {
238         if ( build != null )
239         {
240             serializer.startTag( NAMESPACE, tagName );
241             if ( build.getSourceDirectory() != null )
242             {
243                 serializer.startTag( NAMESPACE, "sourceDirectory" ).text( build.getSourceDirectory() ).endTag( NAMESPACE, "sourceDirectory" );
244             }
245             if ( build.getScriptSourceDirectory() != null )
246             {
247                 serializer.startTag( NAMESPACE, "scriptSourceDirectory" ).text( build.getScriptSourceDirectory() ).endTag( NAMESPACE, "scriptSourceDirectory" );
248             }
249             if ( build.getTestSourceDirectory() != null )
250             {
251                 serializer.startTag( NAMESPACE, "testSourceDirectory" ).text( build.getTestSourceDirectory() ).endTag( NAMESPACE, "testSourceDirectory" );
252             }
253             if ( build.getOutputDirectory() != null )
254             {
255                 serializer.startTag( NAMESPACE, "outputDirectory" ).text( build.getOutputDirectory() ).endTag( NAMESPACE, "outputDirectory" );
256             }
257             if ( build.getTestOutputDirectory() != null )
258             {
259                 serializer.startTag( NAMESPACE, "testOutputDirectory" ).text( build.getTestOutputDirectory() ).endTag( NAMESPACE, "testOutputDirectory" );
260             }
261             if ( build.getExtensions() != null && build.getExtensions().size() > 0 )
262             {
263                 serializer.startTag( NAMESPACE, "extensions" );
264                 for ( Iterator iter = build.getExtensions().iterator(); iter.hasNext(); )
265                 {
266                     Extension o = (Extension) iter.next();
267                     writeExtension( o, "extension", serializer );
268                 }
269                 serializer.endTag( NAMESPACE, "extensions" );
270             }
271             if ( build.getDefaultGoal() != null )
272             {
273                 serializer.startTag( NAMESPACE, "defaultGoal" ).text( build.getDefaultGoal() ).endTag( NAMESPACE, "defaultGoal" );
274             }
275             if ( build.getResources() != null && build.getResources().size() > 0 )
276             {
277                 serializer.startTag( NAMESPACE, "resources" );
278                 for ( Iterator iter = build.getResources().iterator(); iter.hasNext(); )
279                 {
280                     Resource o = (Resource) iter.next();
281                     writeResource( o, "resource", serializer );
282                 }
283                 serializer.endTag( NAMESPACE, "resources" );
284             }
285             if ( build.getTestResources() != null && build.getTestResources().size() > 0 )
286             {
287                 serializer.startTag( NAMESPACE, "testResources" );
288                 for ( Iterator iter = build.getTestResources().iterator(); iter.hasNext(); )
289                 {
290                     Resource o = (Resource) iter.next();
291                     writeResource( o, "testResource", serializer );
292                 }
293                 serializer.endTag( NAMESPACE, "testResources" );
294             }
295             if ( build.getDirectory() != null )
296             {
297                 serializer.startTag( NAMESPACE, "directory" ).text( build.getDirectory() ).endTag( NAMESPACE, "directory" );
298             }
299             if ( build.getFinalName() != null )
300             {
301                 serializer.startTag( NAMESPACE, "finalName" ).text( build.getFinalName() ).endTag( NAMESPACE, "finalName" );
302             }
303             if ( build.getFilters() != null && build.getFilters().size() > 0 )
304             {
305                 serializer.startTag( NAMESPACE, "filters" );
306                 for ( Iterator iter = build.getFilters().iterator(); iter.hasNext(); )
307                 {
308                     String filter = (String) iter.next();
309                     serializer.startTag( NAMESPACE, "filter" ).text( filter ).endTag( NAMESPACE, "filter" );
310                 }
311                 serializer.endTag( NAMESPACE, "filters" );
312             }
313             if ( build.getPluginManagement() != null )
314             {
315                 writePluginManagement( (PluginManagement) build.getPluginManagement(), "pluginManagement", serializer );
316             }
317             if ( build.getPlugins() != null && build.getPlugins().size() > 0 )
318             {
319                 serializer.startTag( NAMESPACE, "plugins" );
320                 for ( Iterator iter = build.getPlugins().iterator(); iter.hasNext(); )
321                 {
322                     Plugin o = (Plugin) iter.next();
323                     writePlugin( o, "plugin", serializer );
324                 }
325                 serializer.endTag( NAMESPACE, "plugins" );
326             }
327             serializer.endTag( NAMESPACE, tagName );
328         }
329     } //-- void writeBuild( Build, String, XmlSerializer ) 
330 
331     /**
332      * Method writeBuildBase.
333      * 
334      * @param buildBase
335      * @param serializer
336      * @param tagName
337      * @throws java.io.IOException
338      */
339     private void writeBuildBase( BuildBase buildBase, String tagName, XmlSerializer serializer )
340         throws java.io.IOException
341     {
342         if ( buildBase != null )
343         {
344             serializer.startTag( NAMESPACE, tagName );
345             if ( buildBase.getDefaultGoal() != null )
346             {
347                 serializer.startTag( NAMESPACE, "defaultGoal" ).text( buildBase.getDefaultGoal() ).endTag( NAMESPACE, "defaultGoal" );
348             }
349             if ( buildBase.getResources() != null && buildBase.getResources().size() > 0 )
350             {
351                 serializer.startTag( NAMESPACE, "resources" );
352                 for ( Iterator iter = buildBase.getResources().iterator(); iter.hasNext(); )
353                 {
354                     Resource o = (Resource) iter.next();
355                     writeResource( o, "resource", serializer );
356                 }
357                 serializer.endTag( NAMESPACE, "resources" );
358             }
359             if ( buildBase.getTestResources() != null && buildBase.getTestResources().size() > 0 )
360             {
361                 serializer.startTag( NAMESPACE, "testResources" );
362                 for ( Iterator iter = buildBase.getTestResources().iterator(); iter.hasNext(); )
363                 {
364                     Resource o = (Resource) iter.next();
365                     writeResource( o, "testResource", serializer );
366                 }
367                 serializer.endTag( NAMESPACE, "testResources" );
368             }
369             if ( buildBase.getDirectory() != null )
370             {
371                 serializer.startTag( NAMESPACE, "directory" ).text( buildBase.getDirectory() ).endTag( NAMESPACE, "directory" );
372             }
373             if ( buildBase.getFinalName() != null )
374             {
375                 serializer.startTag( NAMESPACE, "finalName" ).text( buildBase.getFinalName() ).endTag( NAMESPACE, "finalName" );
376             }
377             if ( buildBase.getFilters() != null && buildBase.getFilters().size() > 0 )
378             {
379                 serializer.startTag( NAMESPACE, "filters" );
380                 for ( Iterator iter = buildBase.getFilters().iterator(); iter.hasNext(); )
381                 {
382                     String filter = (String) iter.next();
383                     serializer.startTag( NAMESPACE, "filter" ).text( filter ).endTag( NAMESPACE, "filter" );
384                 }
385                 serializer.endTag( NAMESPACE, "filters" );
386             }
387             if ( buildBase.getPluginManagement() != null )
388             {
389                 writePluginManagement( (PluginManagement) buildBase.getPluginManagement(), "pluginManagement", serializer );
390             }
391             if ( buildBase.getPlugins() != null && buildBase.getPlugins().size() > 0 )
392             {
393                 serializer.startTag( NAMESPACE, "plugins" );
394                 for ( Iterator iter = buildBase.getPlugins().iterator(); iter.hasNext(); )
395                 {
396                     Plugin o = (Plugin) iter.next();
397                     writePlugin( o, "plugin", serializer );
398                 }
399                 serializer.endTag( NAMESPACE, "plugins" );
400             }
401             serializer.endTag( NAMESPACE, tagName );
402         }
403     } //-- void writeBuildBase( BuildBase, String, XmlSerializer ) 
404 
405     /**
406      * Method writeCiManagement.
407      * 
408      * @param ciManagement
409      * @param serializer
410      * @param tagName
411      * @throws java.io.IOException
412      */
413     private void writeCiManagement( CiManagement ciManagement, String tagName, XmlSerializer serializer )
414         throws java.io.IOException
415     {
416         if ( ciManagement != null )
417         {
418             serializer.startTag( NAMESPACE, tagName );
419             if ( ciManagement.getSystem() != null )
420             {
421                 serializer.startTag( NAMESPACE, "system" ).text( ciManagement.getSystem() ).endTag( NAMESPACE, "system" );
422             }
423             if ( ciManagement.getUrl() != null )
424             {
425                 serializer.startTag( NAMESPACE, "url" ).text( ciManagement.getUrl() ).endTag( NAMESPACE, "url" );
426             }
427             if ( ciManagement.getNotifiers() != null && ciManagement.getNotifiers().size() > 0 )
428             {
429                 serializer.startTag( NAMESPACE, "notifiers" );
430                 for ( Iterator iter = ciManagement.getNotifiers().iterator(); iter.hasNext(); )
431                 {
432                     Notifier o = (Notifier) iter.next();
433                     writeNotifier( o, "notifier", serializer );
434                 }
435                 serializer.endTag( NAMESPACE, "notifiers" );
436             }
437             serializer.endTag( NAMESPACE, tagName );
438         }
439     } //-- void writeCiManagement( CiManagement, String, XmlSerializer ) 
440 
441     /**
442      * Method writeConfigurationContainer.
443      * 
444      * @param configurationContainer
445      * @param serializer
446      * @param tagName
447      * @throws java.io.IOException
448      */
449     private void writeConfigurationContainer( ConfigurationContainer configurationContainer, String tagName, XmlSerializer serializer )
450         throws java.io.IOException
451     {
452         if ( configurationContainer != null )
453         {
454             serializer.startTag( NAMESPACE, tagName );
455             if ( configurationContainer.getInherited() != null )
456             {
457                 serializer.startTag( NAMESPACE, "inherited" ).text( configurationContainer.getInherited() ).endTag( NAMESPACE, "inherited" );
458             }
459             if ( configurationContainer.getConfiguration() != null )
460             {
461                 ((Xpp3Dom) configurationContainer.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
462             }
463             serializer.endTag( NAMESPACE, tagName );
464         }
465     } //-- void writeConfigurationContainer( ConfigurationContainer, String, XmlSerializer ) 
466 
467     /**
468      * Method writeContributor.
469      * 
470      * @param contributor
471      * @param serializer
472      * @param tagName
473      * @throws java.io.IOException
474      */
475     private void writeContributor( Contributor contributor, String tagName, XmlSerializer serializer )
476         throws java.io.IOException
477     {
478         if ( contributor != null )
479         {
480             serializer.startTag( NAMESPACE, tagName );
481             if ( contributor.getName() != null )
482             {
483                 serializer.startTag( NAMESPACE, "name" ).text( contributor.getName() ).endTag( NAMESPACE, "name" );
484             }
485             if ( contributor.getEmail() != null )
486             {
487                 serializer.startTag( NAMESPACE, "email" ).text( contributor.getEmail() ).endTag( NAMESPACE, "email" );
488             }
489             if ( contributor.getUrl() != null )
490             {
491                 serializer.startTag( NAMESPACE, "url" ).text( contributor.getUrl() ).endTag( NAMESPACE, "url" );
492             }
493             if ( contributor.getOrganization() != null )
494             {
495                 serializer.startTag( NAMESPACE, "organization" ).text( contributor.getOrganization() ).endTag( NAMESPACE, "organization" );
496             }
497             if ( contributor.getOrganizationUrl() != null )
498             {
499                 serializer.startTag( NAMESPACE, "organizationUrl" ).text( contributor.getOrganizationUrl() ).endTag( NAMESPACE, "organizationUrl" );
500             }
501             if ( contributor.getRoles() != null && contributor.getRoles().size() > 0 )
502             {
503                 serializer.startTag( NAMESPACE, "roles" );
504                 for ( Iterator iter = contributor.getRoles().iterator(); iter.hasNext(); )
505                 {
506                     String role = (String) iter.next();
507                     serializer.startTag( NAMESPACE, "role" ).text( role ).endTag( NAMESPACE, "role" );
508                 }
509                 serializer.endTag( NAMESPACE, "roles" );
510             }
511             if ( contributor.getTimezone() != null )
512             {
513                 serializer.startTag( NAMESPACE, "timezone" ).text( contributor.getTimezone() ).endTag( NAMESPACE, "timezone" );
514             }
515             if ( contributor.getProperties() != null && contributor.getProperties().size() > 0 )
516             {
517                 serializer.startTag( NAMESPACE, "properties" );
518                 for ( Iterator iter = contributor.getProperties().keySet().iterator(); iter.hasNext(); )
519                 {
520                     String key = (String) iter.next();
521                     String value = (String) contributor.getProperties().get( key );
522                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
523                 }
524                 serializer.endTag( NAMESPACE, "properties" );
525             }
526             serializer.endTag( NAMESPACE, tagName );
527         }
528     } //-- void writeContributor( Contributor, String, XmlSerializer ) 
529 
530     /**
531      * Method writeDependency.
532      * 
533      * @param dependency
534      * @param serializer
535      * @param tagName
536      * @throws java.io.IOException
537      */
538     private void writeDependency( Dependency dependency, String tagName, XmlSerializer serializer )
539         throws java.io.IOException
540     {
541         if ( dependency != null )
542         {
543             serializer.startTag( NAMESPACE, tagName );
544             if ( dependency.getGroupId() != null )
545             {
546                 serializer.startTag( NAMESPACE, "groupId" ).text( dependency.getGroupId() ).endTag( NAMESPACE, "groupId" );
547             }
548             if ( dependency.getArtifactId() != null )
549             {
550                 serializer.startTag( NAMESPACE, "artifactId" ).text( dependency.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
551             }
552             if ( dependency.getVersion() != null )
553             {
554                 serializer.startTag( NAMESPACE, "version" ).text( dependency.getVersion() ).endTag( NAMESPACE, "version" );
555             }
556             if ( dependency.getType() != null && !dependency.getType().equals( "jar" ) )
557             {
558                 serializer.startTag( NAMESPACE, "type" ).text( dependency.getType() ).endTag( NAMESPACE, "type" );
559             }
560             if ( dependency.getClassifier() != null )
561             {
562                 serializer.startTag( NAMESPACE, "classifier" ).text( dependency.getClassifier() ).endTag( NAMESPACE, "classifier" );
563             }
564             if ( dependency.getScope() != null )
565             {
566                 serializer.startTag( NAMESPACE, "scope" ).text( dependency.getScope() ).endTag( NAMESPACE, "scope" );
567             }
568             if ( dependency.getSystemPath() != null )
569             {
570                 serializer.startTag( NAMESPACE, "systemPath" ).text( dependency.getSystemPath() ).endTag( NAMESPACE, "systemPath" );
571             }
572             if ( dependency.getExclusions() != null && dependency.getExclusions().size() > 0 )
573             {
574                 serializer.startTag( NAMESPACE, "exclusions" );
575                 for ( Iterator iter = dependency.getExclusions().iterator(); iter.hasNext(); )
576                 {
577                     Exclusion o = (Exclusion) iter.next();
578                     writeExclusion( o, "exclusion", serializer );
579                 }
580                 serializer.endTag( NAMESPACE, "exclusions" );
581             }
582             if ( dependency.isOptional() != false )
583             {
584                 serializer.startTag( NAMESPACE, "optional" ).text( String.valueOf( dependency.isOptional() ) ).endTag( NAMESPACE, "optional" );
585             }
586             serializer.endTag( NAMESPACE, tagName );
587         }
588     } //-- void writeDependency( Dependency, String, XmlSerializer ) 
589 
590     /**
591      * Method writeDependencyManagement.
592      * 
593      * @param dependencyManagement
594      * @param serializer
595      * @param tagName
596      * @throws java.io.IOException
597      */
598     private void writeDependencyManagement( DependencyManagement dependencyManagement, String tagName, XmlSerializer serializer )
599         throws java.io.IOException
600     {
601         if ( dependencyManagement != null )
602         {
603             serializer.startTag( NAMESPACE, tagName );
604             if ( dependencyManagement.getDependencies() != null && dependencyManagement.getDependencies().size() > 0 )
605             {
606                 serializer.startTag( NAMESPACE, "dependencies" );
607                 for ( Iterator iter = dependencyManagement.getDependencies().iterator(); iter.hasNext(); )
608                 {
609                     Dependency o = (Dependency) iter.next();
610                     writeDependency( o, "dependency", serializer );
611                 }
612                 serializer.endTag( NAMESPACE, "dependencies" );
613             }
614             serializer.endTag( NAMESPACE, tagName );
615         }
616     } //-- void writeDependencyManagement( DependencyManagement, String, XmlSerializer ) 
617 
618     /**
619      * Method writeDeploymentRepository.
620      * 
621      * @param deploymentRepository
622      * @param serializer
623      * @param tagName
624      * @throws java.io.IOException
625      */
626     private void writeDeploymentRepository( DeploymentRepository deploymentRepository, String tagName, XmlSerializer serializer )
627         throws java.io.IOException
628     {
629         if ( deploymentRepository != null )
630         {
631             serializer.startTag( NAMESPACE, tagName );
632             if ( deploymentRepository.isUniqueVersion() != true )
633             {
634                 serializer.startTag( NAMESPACE, "uniqueVersion" ).text( String.valueOf( deploymentRepository.isUniqueVersion() ) ).endTag( NAMESPACE, "uniqueVersion" );
635             }
636             if ( deploymentRepository.getId() != null )
637             {
638                 serializer.startTag( NAMESPACE, "id" ).text( deploymentRepository.getId() ).endTag( NAMESPACE, "id" );
639             }
640             if ( deploymentRepository.getName() != null )
641             {
642                 serializer.startTag( NAMESPACE, "name" ).text( deploymentRepository.getName() ).endTag( NAMESPACE, "name" );
643             }
644             if ( deploymentRepository.getUrl() != null )
645             {
646                 serializer.startTag( NAMESPACE, "url" ).text( deploymentRepository.getUrl() ).endTag( NAMESPACE, "url" );
647             }
648             if ( deploymentRepository.getLayout() != null && !deploymentRepository.getLayout().equals( "default" ) )
649             {
650                 serializer.startTag( NAMESPACE, "layout" ).text( deploymentRepository.getLayout() ).endTag( NAMESPACE, "layout" );
651             }
652             serializer.endTag( NAMESPACE, tagName );
653         }
654     } //-- void writeDeploymentRepository( DeploymentRepository, String, XmlSerializer ) 
655 
656     /**
657      * Method writeDeveloper.
658      * 
659      * @param developer
660      * @param serializer
661      * @param tagName
662      * @throws java.io.IOException
663      */
664     private void writeDeveloper( Developer developer, String tagName, XmlSerializer serializer )
665         throws java.io.IOException
666     {
667         if ( developer != null )
668         {
669             serializer.startTag( NAMESPACE, tagName );
670             if ( developer.getId() != null )
671             {
672                 serializer.startTag( NAMESPACE, "id" ).text( developer.getId() ).endTag( NAMESPACE, "id" );
673             }
674             if ( developer.getName() != null )
675             {
676                 serializer.startTag( NAMESPACE, "name" ).text( developer.getName() ).endTag( NAMESPACE, "name" );
677             }
678             if ( developer.getEmail() != null )
679             {
680                 serializer.startTag( NAMESPACE, "email" ).text( developer.getEmail() ).endTag( NAMESPACE, "email" );
681             }
682             if ( developer.getUrl() != null )
683             {
684                 serializer.startTag( NAMESPACE, "url" ).text( developer.getUrl() ).endTag( NAMESPACE, "url" );
685             }
686             if ( developer.getOrganization() != null )
687             {
688                 serializer.startTag( NAMESPACE, "organization" ).text( developer.getOrganization() ).endTag( NAMESPACE, "organization" );
689             }
690             if ( developer.getOrganizationUrl() != null )
691             {
692                 serializer.startTag( NAMESPACE, "organizationUrl" ).text( developer.getOrganizationUrl() ).endTag( NAMESPACE, "organizationUrl" );
693             }
694             if ( developer.getRoles() != null && developer.getRoles().size() > 0 )
695             {
696                 serializer.startTag( NAMESPACE, "roles" );
697                 for ( Iterator iter = developer.getRoles().iterator(); iter.hasNext(); )
698                 {
699                     String role = (String) iter.next();
700                     serializer.startTag( NAMESPACE, "role" ).text( role ).endTag( NAMESPACE, "role" );
701                 }
702                 serializer.endTag( NAMESPACE, "roles" );
703             }
704             if ( developer.getTimezone() != null )
705             {
706                 serializer.startTag( NAMESPACE, "timezone" ).text( developer.getTimezone() ).endTag( NAMESPACE, "timezone" );
707             }
708             if ( developer.getProperties() != null && developer.getProperties().size() > 0 )
709             {
710                 serializer.startTag( NAMESPACE, "properties" );
711                 for ( Iterator iter = developer.getProperties().keySet().iterator(); iter.hasNext(); )
712                 {
713                     String key = (String) iter.next();
714                     String value = (String) developer.getProperties().get( key );
715                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
716                 }
717                 serializer.endTag( NAMESPACE, "properties" );
718             }
719             serializer.endTag( NAMESPACE, tagName );
720         }
721     } //-- void writeDeveloper( Developer, String, XmlSerializer ) 
722 
723     /**
724      * Method writeDistributionManagement.
725      * 
726      * @param distributionManagement
727      * @param serializer
728      * @param tagName
729      * @throws java.io.IOException
730      */
731     private void writeDistributionManagement( DistributionManagement distributionManagement, String tagName, XmlSerializer serializer )
732         throws java.io.IOException
733     {
734         if ( distributionManagement != null )
735         {
736             serializer.startTag( NAMESPACE, tagName );
737             if ( distributionManagement.getRepository() != null )
738             {
739                 writeDeploymentRepository( (DeploymentRepository) distributionManagement.getRepository(), "repository", serializer );
740             }
741             if ( distributionManagement.getSnapshotRepository() != null )
742             {
743                 writeDeploymentRepository( (DeploymentRepository) distributionManagement.getSnapshotRepository(), "snapshotRepository", serializer );
744             }
745             if ( distributionManagement.getSite() != null )
746             {
747                 writeSite( (Site) distributionManagement.getSite(), "site", serializer );
748             }
749             if ( distributionManagement.getDownloadUrl() != null )
750             {
751                 serializer.startTag( NAMESPACE, "downloadUrl" ).text( distributionManagement.getDownloadUrl() ).endTag( NAMESPACE, "downloadUrl" );
752             }
753             if ( distributionManagement.getRelocation() != null )
754             {
755                 writeRelocation( (Relocation) distributionManagement.getRelocation(), "relocation", serializer );
756             }
757             if ( distributionManagement.getStatus() != null )
758             {
759                 serializer.startTag( NAMESPACE, "status" ).text( distributionManagement.getStatus() ).endTag( NAMESPACE, "status" );
760             }
761             serializer.endTag( NAMESPACE, tagName );
762         }
763     } //-- void writeDistributionManagement( DistributionManagement, String, XmlSerializer ) 
764 
765     /**
766      * Method writeExclusion.
767      * 
768      * @param exclusion
769      * @param serializer
770      * @param tagName
771      * @throws java.io.IOException
772      */
773     private void writeExclusion( Exclusion exclusion, String tagName, XmlSerializer serializer )
774         throws java.io.IOException
775     {
776         if ( exclusion != null )
777         {
778             serializer.startTag( NAMESPACE, tagName );
779             if ( exclusion.getArtifactId() != null )
780             {
781                 serializer.startTag( NAMESPACE, "artifactId" ).text( exclusion.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
782             }
783             if ( exclusion.getGroupId() != null )
784             {
785                 serializer.startTag( NAMESPACE, "groupId" ).text( exclusion.getGroupId() ).endTag( NAMESPACE, "groupId" );
786             }
787             serializer.endTag( NAMESPACE, tagName );
788         }
789     } //-- void writeExclusion( Exclusion, String, XmlSerializer ) 
790 
791     /**
792      * Method writeExtension.
793      * 
794      * @param extension
795      * @param serializer
796      * @param tagName
797      * @throws java.io.IOException
798      */
799     private void writeExtension( Extension extension, String tagName, XmlSerializer serializer )
800         throws java.io.IOException
801     {
802         if ( extension != null )
803         {
804             serializer.startTag( NAMESPACE, tagName );
805             if ( extension.getGroupId() != null )
806             {
807                 serializer.startTag( NAMESPACE, "groupId" ).text( extension.getGroupId() ).endTag( NAMESPACE, "groupId" );
808             }
809             if ( extension.getArtifactId() != null )
810             {
811                 serializer.startTag( NAMESPACE, "artifactId" ).text( extension.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
812             }
813             if ( extension.getVersion() != null )
814             {
815                 serializer.startTag( NAMESPACE, "version" ).text( extension.getVersion() ).endTag( NAMESPACE, "version" );
816             }
817             serializer.endTag( NAMESPACE, tagName );
818         }
819     } //-- void writeExtension( Extension, String, XmlSerializer ) 
820 
821     /**
822      * Method writeFileSet.
823      * 
824      * @param fileSet
825      * @param serializer
826      * @param tagName
827      * @throws java.io.IOException
828      */
829     private void writeFileSet( FileSet fileSet, String tagName, XmlSerializer serializer )
830         throws java.io.IOException
831     {
832         if ( fileSet != null )
833         {
834             serializer.startTag( NAMESPACE, tagName );
835             if ( fileSet.getDirectory() != null )
836             {
837                 serializer.startTag( NAMESPACE, "directory" ).text( fileSet.getDirectory() ).endTag( NAMESPACE, "directory" );
838             }
839             if ( fileSet.getIncludes() != null && fileSet.getIncludes().size() > 0 )
840             {
841                 serializer.startTag( NAMESPACE, "includes" );
842                 for ( Iterator iter = fileSet.getIncludes().iterator(); iter.hasNext(); )
843                 {
844                     String include = (String) iter.next();
845                     serializer.startTag( NAMESPACE, "include" ).text( include ).endTag( NAMESPACE, "include" );
846                 }
847                 serializer.endTag( NAMESPACE, "includes" );
848             }
849             if ( fileSet.getExcludes() != null && fileSet.getExcludes().size() > 0 )
850             {
851                 serializer.startTag( NAMESPACE, "excludes" );
852                 for ( Iterator iter = fileSet.getExcludes().iterator(); iter.hasNext(); )
853                 {
854                     String exclude = (String) iter.next();
855                     serializer.startTag( NAMESPACE, "exclude" ).text( exclude ).endTag( NAMESPACE, "exclude" );
856                 }
857                 serializer.endTag( NAMESPACE, "excludes" );
858             }
859             serializer.endTag( NAMESPACE, tagName );
860         }
861     } //-- void writeFileSet( FileSet, String, XmlSerializer ) 
862 
863     /**
864      * Method writeIssueManagement.
865      * 
866      * @param issueManagement
867      * @param serializer
868      * @param tagName
869      * @throws java.io.IOException
870      */
871     private void writeIssueManagement( IssueManagement issueManagement, String tagName, XmlSerializer serializer )
872         throws java.io.IOException
873     {
874         if ( issueManagement != null )
875         {
876             serializer.startTag( NAMESPACE, tagName );
877             if ( issueManagement.getSystem() != null )
878             {
879                 serializer.startTag( NAMESPACE, "system" ).text( issueManagement.getSystem() ).endTag( NAMESPACE, "system" );
880             }
881             if ( issueManagement.getUrl() != null )
882             {
883                 serializer.startTag( NAMESPACE, "url" ).text( issueManagement.getUrl() ).endTag( NAMESPACE, "url" );
884             }
885             serializer.endTag( NAMESPACE, tagName );
886         }
887     } //-- void writeIssueManagement( IssueManagement, String, XmlSerializer ) 
888 
889     /**
890      * Method writeLicense.
891      * 
892      * @param license
893      * @param serializer
894      * @param tagName
895      * @throws java.io.IOException
896      */
897     private void writeLicense( License license, String tagName, XmlSerializer serializer )
898         throws java.io.IOException
899     {
900         if ( license != null )
901         {
902             serializer.startTag( NAMESPACE, tagName );
903             if ( license.getName() != null )
904             {
905                 serializer.startTag( NAMESPACE, "name" ).text( license.getName() ).endTag( NAMESPACE, "name" );
906             }
907             if ( license.getUrl() != null )
908             {
909                 serializer.startTag( NAMESPACE, "url" ).text( license.getUrl() ).endTag( NAMESPACE, "url" );
910             }
911             if ( license.getDistribution() != null )
912             {
913                 serializer.startTag( NAMESPACE, "distribution" ).text( license.getDistribution() ).endTag( NAMESPACE, "distribution" );
914             }
915             if ( license.getComments() != null )
916             {
917                 serializer.startTag( NAMESPACE, "comments" ).text( license.getComments() ).endTag( NAMESPACE, "comments" );
918             }
919             serializer.endTag( NAMESPACE, tagName );
920         }
921     } //-- void writeLicense( License, String, XmlSerializer ) 
922 
923     /**
924      * Method writeMailingList.
925      * 
926      * @param mailingList
927      * @param serializer
928      * @param tagName
929      * @throws java.io.IOException
930      */
931     private void writeMailingList( MailingList mailingList, String tagName, XmlSerializer serializer )
932         throws java.io.IOException
933     {
934         if ( mailingList != null )
935         {
936             serializer.startTag( NAMESPACE, tagName );
937             if ( mailingList.getName() != null )
938             {
939                 serializer.startTag( NAMESPACE, "name" ).text( mailingList.getName() ).endTag( NAMESPACE, "name" );
940             }
941             if ( mailingList.getSubscribe() != null )
942             {
943                 serializer.startTag( NAMESPACE, "subscribe" ).text( mailingList.getSubscribe() ).endTag( NAMESPACE, "subscribe" );
944             }
945             if ( mailingList.getUnsubscribe() != null )
946             {
947                 serializer.startTag( NAMESPACE, "unsubscribe" ).text( mailingList.getUnsubscribe() ).endTag( NAMESPACE, "unsubscribe" );
948             }
949             if ( mailingList.getPost() != null )
950             {
951                 serializer.startTag( NAMESPACE, "post" ).text( mailingList.getPost() ).endTag( NAMESPACE, "post" );
952             }
953             if ( mailingList.getArchive() != null )
954             {
955                 serializer.startTag( NAMESPACE, "archive" ).text( mailingList.getArchive() ).endTag( NAMESPACE, "archive" );
956             }
957             if ( mailingList.getOtherArchives() != null && mailingList.getOtherArchives().size() > 0 )
958             {
959                 serializer.startTag( NAMESPACE, "otherArchives" );
960                 for ( Iterator iter = mailingList.getOtherArchives().iterator(); iter.hasNext(); )
961                 {
962                     String otherArchive = (String) iter.next();
963                     serializer.startTag( NAMESPACE, "otherArchive" ).text( otherArchive ).endTag( NAMESPACE, "otherArchive" );
964                 }
965                 serializer.endTag( NAMESPACE, "otherArchives" );
966             }
967             serializer.endTag( NAMESPACE, tagName );
968         }
969     } //-- void writeMailingList( MailingList, String, XmlSerializer ) 
970 
971     /**
972      * Method writeModel.
973      * 
974      * @param model
975      * @param serializer
976      * @param tagName
977      * @throws java.io.IOException
978      */
979     private void writeModel( Model model, String tagName, XmlSerializer serializer )
980         throws java.io.IOException
981     {
982         if ( model != null )
983         {
984             serializer.startTag( NAMESPACE, tagName );
985             if ( model.getModelVersion() != null )
986             {
987                 serializer.startTag( NAMESPACE, "modelVersion" ).text( model.getModelVersion() ).endTag( NAMESPACE, "modelVersion" );
988             }
989             if ( model.getParent() != null )
990             {
991                 writeParent( (Parent) model.getParent(), "parent", serializer );
992             }
993             if ( model.getGroupId() != null )
994             {
995                 serializer.startTag( NAMESPACE, "groupId" ).text( model.getGroupId() ).endTag( NAMESPACE, "groupId" );
996             }
997             if ( model.getArtifactId() != null )
998             {
999                 serializer.startTag( NAMESPACE, "artifactId" ).text( model.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
1000             }
1001             if ( model.getVersion() != null )
1002             {
1003                 serializer.startTag( NAMESPACE, "version" ).text( model.getVersion() ).endTag( NAMESPACE, "version" );
1004             }
1005             if ( model.getPackaging() != null && !model.getPackaging().equals( "jar" ) )
1006             {
1007                 serializer.startTag( NAMESPACE, "packaging" ).text( model.getPackaging() ).endTag( NAMESPACE, "packaging" );
1008             }
1009             if ( model.getName() != null )
1010             {
1011                 serializer.startTag( NAMESPACE, "name" ).text( model.getName() ).endTag( NAMESPACE, "name" );
1012             }
1013             if ( model.getDescription() != null )
1014             {
1015                 serializer.startTag( NAMESPACE, "description" ).text( model.getDescription() ).endTag( NAMESPACE, "description" );
1016             }
1017             if ( model.getUrl() != null )
1018             {
1019                 serializer.startTag( NAMESPACE, "url" ).text( model.getUrl() ).endTag( NAMESPACE, "url" );
1020             }
1021             if ( model.getInceptionYear() != null )
1022             {
1023                 serializer.startTag( NAMESPACE, "inceptionYear" ).text( model.getInceptionYear() ).endTag( NAMESPACE, "inceptionYear" );
1024             }
1025             if ( model.getOrganization() != null )
1026             {
1027                 writeOrganization( (Organization) model.getOrganization(), "organization", serializer );
1028             }
1029             if ( model.getLicenses() != null && model.getLicenses().size() > 0 )
1030             {
1031                 serializer.startTag( NAMESPACE, "licenses" );
1032                 for ( Iterator iter = model.getLicenses().iterator(); iter.hasNext(); )
1033                 {
1034                     License o = (License) iter.next();
1035                     writeLicense( o, "license", serializer );
1036                 }
1037                 serializer.endTag( NAMESPACE, "licenses" );
1038             }
1039             if ( model.getMailingLists() != null && model.getMailingLists().size() > 0 )
1040             {
1041                 serializer.startTag( NAMESPACE, "mailingLists" );
1042                 for ( Iterator iter = model.getMailingLists().iterator(); iter.hasNext(); )
1043                 {
1044                     MailingList o = (MailingList) iter.next();
1045                     writeMailingList( o, "mailingList", serializer );
1046                 }
1047                 serializer.endTag( NAMESPACE, "mailingLists" );
1048             }
1049             if ( model.getDevelopers() != null && model.getDevelopers().size() > 0 )
1050             {
1051                 serializer.startTag( NAMESPACE, "developers" );
1052                 for ( Iterator iter = model.getDevelopers().iterator(); iter.hasNext(); )
1053                 {
1054                     Developer o = (Developer) iter.next();
1055                     writeDeveloper( o, "developer", serializer );
1056                 }
1057                 serializer.endTag( NAMESPACE, "developers" );
1058             }
1059             if ( model.getContributors() != null && model.getContributors().size() > 0 )
1060             {
1061                 serializer.startTag( NAMESPACE, "contributors" );
1062                 for ( Iterator iter = model.getContributors().iterator(); iter.hasNext(); )
1063                 {
1064                     Contributor o = (Contributor) iter.next();
1065                     writeContributor( o, "contributor", serializer );
1066                 }
1067                 serializer.endTag( NAMESPACE, "contributors" );
1068             }
1069             if ( model.getIssueManagement() != null )
1070             {
1071                 writeIssueManagement( (IssueManagement) model.getIssueManagement(), "issueManagement", serializer );
1072             }
1073             if ( model.getScm() != null )
1074             {
1075                 writeScm( (Scm) model.getScm(), "scm", serializer );
1076             }
1077             if ( model.getCiManagement() != null )
1078             {
1079                 writeCiManagement( (CiManagement) model.getCiManagement(), "ciManagement", serializer );
1080             }
1081             if ( model.getPrerequisites() != null )
1082             {
1083                 writePrerequisites( (Prerequisites) model.getPrerequisites(), "prerequisites", serializer );
1084             }
1085             if ( model.getBuild() != null )
1086             {
1087                 writeBuild( (Build) model.getBuild(), "build", serializer );
1088             }
1089             if ( model.getProfiles() != null && model.getProfiles().size() > 0 )
1090             {
1091                 serializer.startTag( NAMESPACE, "profiles" );
1092                 for ( Iterator iter = model.getProfiles().iterator(); iter.hasNext(); )
1093                 {
1094                     Profile o = (Profile) iter.next();
1095                     writeProfile( o, "profile", serializer );
1096                 }
1097                 serializer.endTag( NAMESPACE, "profiles" );
1098             }
1099             if ( model.getDistributionManagement() != null )
1100             {
1101                 writeDistributionManagement( (DistributionManagement) model.getDistributionManagement(), "distributionManagement", serializer );
1102             }
1103             if ( model.getModules() != null && model.getModules().size() > 0 )
1104             {
1105                 serializer.startTag( NAMESPACE, "modules" );
1106                 for ( Iterator iter = model.getModules().iterator(); iter.hasNext(); )
1107                 {
1108                     String module = (String) iter.next();
1109                     serializer.startTag( NAMESPACE, "module" ).text( module ).endTag( NAMESPACE, "module" );
1110                 }
1111                 serializer.endTag( NAMESPACE, "modules" );
1112             }
1113             if ( model.getRepositories() != null && model.getRepositories().size() > 0 )
1114             {
1115                 serializer.startTag( NAMESPACE, "repositories" );
1116                 for ( Iterator iter = model.getRepositories().iterator(); iter.hasNext(); )
1117                 {
1118                     Repository o = (Repository) iter.next();
1119                     writeRepository( o, "repository", serializer );
1120                 }
1121                 serializer.endTag( NAMESPACE, "repositories" );
1122             }
1123             if ( model.getPluginRepositories() != null && model.getPluginRepositories().size() > 0 )
1124             {
1125                 serializer.startTag( NAMESPACE, "pluginRepositories" );
1126                 for ( Iterator iter = model.getPluginRepositories().iterator(); iter.hasNext(); )
1127                 {
1128                     Repository o = (Repository) iter.next();
1129                     writeRepository( o, "pluginRepository", serializer );
1130                 }
1131                 serializer.endTag( NAMESPACE, "pluginRepositories" );
1132             }
1133             if ( model.getDependencies() != null && model.getDependencies().size() > 0 )
1134             {
1135                 serializer.startTag( NAMESPACE, "dependencies" );
1136                 for ( Iterator iter = model.getDependencies().iterator(); iter.hasNext(); )
1137                 {
1138                     Dependency o = (Dependency) iter.next();
1139                     writeDependency( o, "dependency", serializer );
1140                 }
1141                 serializer.endTag( NAMESPACE, "dependencies" );
1142             }
1143             if ( model.getReports() != null )
1144             {
1145                 ((Xpp3Dom) model.getReports()).writeToSerializer( NAMESPACE, serializer );
1146             }
1147             if ( model.getReporting() != null )
1148             {
1149                 writeReporting( (Reporting) model.getReporting(), "reporting", serializer );
1150             }
1151             if ( model.getDependencyManagement() != null )
1152             {
1153                 writeDependencyManagement( (DependencyManagement) model.getDependencyManagement(), "dependencyManagement", serializer );
1154             }
1155             if ( model.getProperties() != null && model.getProperties().size() > 0 )
1156             {
1157                 serializer.startTag( NAMESPACE, "properties" );
1158                 for ( Iterator iter = model.getProperties().keySet().iterator(); iter.hasNext(); )
1159                 {
1160                     String key = (String) iter.next();
1161                     String value = (String) model.getProperties().get( key );
1162                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
1163                 }
1164                 serializer.endTag( NAMESPACE, "properties" );
1165             }
1166             serializer.endTag( NAMESPACE, tagName );
1167         }
1168     } //-- void writeModel( Model, String, XmlSerializer ) 
1169 
1170     /**
1171      * Method writeModelBase.
1172      * 
1173      * @param modelBase
1174      * @param serializer
1175      * @param tagName
1176      * @throws java.io.IOException
1177      */
1178     private void writeModelBase( ModelBase modelBase, String tagName, XmlSerializer serializer )
1179         throws java.io.IOException
1180     {
1181         if ( modelBase != null )
1182         {
1183             serializer.startTag( NAMESPACE, tagName );
1184             if ( modelBase.getDistributionManagement() != null )
1185             {
1186                 writeDistributionManagement( (DistributionManagement) modelBase.getDistributionManagement(), "distributionManagement", serializer );
1187             }
1188             if ( modelBase.getModules() != null && modelBase.getModules().size() > 0 )
1189             {
1190                 serializer.startTag( NAMESPACE, "modules" );
1191                 for ( Iterator iter = modelBase.getModules().iterator(); iter.hasNext(); )
1192                 {
1193                     String module = (String) iter.next();
1194                     serializer.startTag( NAMESPACE, "module" ).text( module ).endTag( NAMESPACE, "module" );
1195                 }
1196                 serializer.endTag( NAMESPACE, "modules" );
1197             }
1198             if ( modelBase.getRepositories() != null && modelBase.getRepositories().size() > 0 )
1199             {
1200                 serializer.startTag( NAMESPACE, "repositories" );
1201                 for ( Iterator iter = modelBase.getRepositories().iterator(); iter.hasNext(); )
1202                 {
1203                     Repository o = (Repository) iter.next();
1204                     writeRepository( o, "repository", serializer );
1205                 }
1206                 serializer.endTag( NAMESPACE, "repositories" );
1207             }
1208             if ( modelBase.getPluginRepositories() != null && modelBase.getPluginRepositories().size() > 0 )
1209             {
1210                 serializer.startTag( NAMESPACE, "pluginRepositories" );
1211                 for ( Iterator iter = modelBase.getPluginRepositories().iterator(); iter.hasNext(); )
1212                 {
1213                     Repository o = (Repository) iter.next();
1214                     writeRepository( o, "pluginRepository", serializer );
1215                 }
1216                 serializer.endTag( NAMESPACE, "pluginRepositories" );
1217             }
1218             if ( modelBase.getDependencies() != null && modelBase.getDependencies().size() > 0 )
1219             {
1220                 serializer.startTag( NAMESPACE, "dependencies" );
1221                 for ( Iterator iter = modelBase.getDependencies().iterator(); iter.hasNext(); )
1222                 {
1223                     Dependency o = (Dependency) iter.next();
1224                     writeDependency( o, "dependency", serializer );
1225                 }
1226                 serializer.endTag( NAMESPACE, "dependencies" );
1227             }
1228             if ( modelBase.getReports() != null )
1229             {
1230                 ((Xpp3Dom) modelBase.getReports()).writeToSerializer( NAMESPACE, serializer );
1231             }
1232             if ( modelBase.getReporting() != null )
1233             {
1234                 writeReporting( (Reporting) modelBase.getReporting(), "reporting", serializer );
1235             }
1236             if ( modelBase.getDependencyManagement() != null )
1237             {
1238                 writeDependencyManagement( (DependencyManagement) modelBase.getDependencyManagement(), "dependencyManagement", serializer );
1239             }
1240             if ( modelBase.getProperties() != null && modelBase.getProperties().size() > 0 )
1241             {
1242                 serializer.startTag( NAMESPACE, "properties" );
1243                 for ( Iterator iter = modelBase.getProperties().keySet().iterator(); iter.hasNext(); )
1244                 {
1245                     String key = (String) iter.next();
1246                     String value = (String) modelBase.getProperties().get( key );
1247                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
1248                 }
1249                 serializer.endTag( NAMESPACE, "properties" );
1250             }
1251             serializer.endTag( NAMESPACE, tagName );
1252         }
1253     } //-- void writeModelBase( ModelBase, String, XmlSerializer ) 
1254 
1255     /**
1256      * Method writeNotifier.
1257      * 
1258      * @param notifier
1259      * @param serializer
1260      * @param tagName
1261      * @throws java.io.IOException
1262      */
1263     private void writeNotifier( Notifier notifier, String tagName, XmlSerializer serializer )
1264         throws java.io.IOException
1265     {
1266         if ( notifier != null )
1267         {
1268             serializer.startTag( NAMESPACE, tagName );
1269             if ( notifier.getType() != null && !notifier.getType().equals( "mail" ) )
1270             {
1271                 serializer.startTag( NAMESPACE, "type" ).text( notifier.getType() ).endTag( NAMESPACE, "type" );
1272             }
1273             if ( notifier.isSendOnError() != true )
1274             {
1275                 serializer.startTag( NAMESPACE, "sendOnError" ).text( String.valueOf( notifier.isSendOnError() ) ).endTag( NAMESPACE, "sendOnError" );
1276             }
1277             if ( notifier.isSendOnFailure() != true )
1278             {
1279                 serializer.startTag( NAMESPACE, "sendOnFailure" ).text( String.valueOf( notifier.isSendOnFailure() ) ).endTag( NAMESPACE, "sendOnFailure" );
1280             }
1281             if ( notifier.isSendOnSuccess() != true )
1282             {
1283                 serializer.startTag( NAMESPACE, "sendOnSuccess" ).text( String.valueOf( notifier.isSendOnSuccess() ) ).endTag( NAMESPACE, "sendOnSuccess" );
1284             }
1285             if ( notifier.isSendOnWarning() != true )
1286             {
1287                 serializer.startTag( NAMESPACE, "sendOnWarning" ).text( String.valueOf( notifier.isSendOnWarning() ) ).endTag( NAMESPACE, "sendOnWarning" );
1288             }
1289             if ( notifier.getAddress() != null )
1290             {
1291                 serializer.startTag( NAMESPACE, "address" ).text( notifier.getAddress() ).endTag( NAMESPACE, "address" );
1292             }
1293             if ( notifier.getConfiguration() != null && notifier.getConfiguration().size() > 0 )
1294             {
1295                 serializer.startTag( NAMESPACE, "configuration" );
1296                 for ( Iterator iter = notifier.getConfiguration().keySet().iterator(); iter.hasNext(); )
1297                 {
1298                     String key = (String) iter.next();
1299                     String value = (String) notifier.getConfiguration().get( key );
1300                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
1301                 }
1302                 serializer.endTag( NAMESPACE, "configuration" );
1303             }
1304             serializer.endTag( NAMESPACE, tagName );
1305         }
1306     } //-- void writeNotifier( Notifier, String, XmlSerializer ) 
1307 
1308     /**
1309      * Method writeOrganization.
1310      * 
1311      * @param organization
1312      * @param serializer
1313      * @param tagName
1314      * @throws java.io.IOException
1315      */
1316     private void writeOrganization( Organization organization, String tagName, XmlSerializer serializer )
1317         throws java.io.IOException
1318     {
1319         if ( organization != null )
1320         {
1321             serializer.startTag( NAMESPACE, tagName );
1322             if ( organization.getName() != null )
1323             {
1324                 serializer.startTag( NAMESPACE, "name" ).text( organization.getName() ).endTag( NAMESPACE, "name" );
1325             }
1326             if ( organization.getUrl() != null )
1327             {
1328                 serializer.startTag( NAMESPACE, "url" ).text( organization.getUrl() ).endTag( NAMESPACE, "url" );
1329             }
1330             serializer.endTag( NAMESPACE, tagName );
1331         }
1332     } //-- void writeOrganization( Organization, String, XmlSerializer ) 
1333 
1334     /**
1335      * Method writeParent.
1336      * 
1337      * @param parent
1338      * @param serializer
1339      * @param tagName
1340      * @throws java.io.IOException
1341      */
1342     private void writeParent( Parent parent, String tagName, XmlSerializer serializer )
1343         throws java.io.IOException
1344     {
1345         if ( parent != null )
1346         {
1347             serializer.startTag( NAMESPACE, tagName );
1348             if ( parent.getArtifactId() != null )
1349             {
1350                 serializer.startTag( NAMESPACE, "artifactId" ).text( parent.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
1351             }
1352             if ( parent.getGroupId() != null )
1353             {
1354                 serializer.startTag( NAMESPACE, "groupId" ).text( parent.getGroupId() ).endTag( NAMESPACE, "groupId" );
1355             }
1356             if ( parent.getVersion() != null )
1357             {
1358                 serializer.startTag( NAMESPACE, "version" ).text( parent.getVersion() ).endTag( NAMESPACE, "version" );
1359             }
1360             if ( parent.getRelativePath() != null && !parent.getRelativePath().equals( "../pom.xml" ) )
1361             {
1362                 serializer.startTag( NAMESPACE, "relativePath" ).text( parent.getRelativePath() ).endTag( NAMESPACE, "relativePath" );
1363             }
1364             serializer.endTag( NAMESPACE, tagName );
1365         }
1366     } //-- void writeParent( Parent, String, XmlSerializer ) 
1367 
1368     /**
1369      * Method writePatternSet.
1370      * 
1371      * @param patternSet
1372      * @param serializer
1373      * @param tagName
1374      * @throws java.io.IOException
1375      */
1376     private void writePatternSet( PatternSet patternSet, String tagName, XmlSerializer serializer )
1377         throws java.io.IOException
1378     {
1379         if ( patternSet != null )
1380         {
1381             serializer.startTag( NAMESPACE, tagName );
1382             if ( patternSet.getIncludes() != null && patternSet.getIncludes().size() > 0 )
1383             {
1384                 serializer.startTag( NAMESPACE, "includes" );
1385                 for ( Iterator iter = patternSet.getIncludes().iterator(); iter.hasNext(); )
1386                 {
1387                     String include = (String) iter.next();
1388                     serializer.startTag( NAMESPACE, "include" ).text( include ).endTag( NAMESPACE, "include" );
1389                 }
1390                 serializer.endTag( NAMESPACE, "includes" );
1391             }
1392             if ( patternSet.getExcludes() != null && patternSet.getExcludes().size() > 0 )
1393             {
1394                 serializer.startTag( NAMESPACE, "excludes" );
1395                 for ( Iterator iter = patternSet.getExcludes().iterator(); iter.hasNext(); )
1396                 {
1397                     String exclude = (String) iter.next();
1398                     serializer.startTag( NAMESPACE, "exclude" ).text( exclude ).endTag( NAMESPACE, "exclude" );
1399                 }
1400                 serializer.endTag( NAMESPACE, "excludes" );
1401             }
1402             serializer.endTag( NAMESPACE, tagName );
1403         }
1404     } //-- void writePatternSet( PatternSet, String, XmlSerializer ) 
1405 
1406     /**
1407      * Method writePlugin.
1408      * 
1409      * @param plugin
1410      * @param serializer
1411      * @param tagName
1412      * @throws java.io.IOException
1413      */
1414     private void writePlugin( Plugin plugin, String tagName, XmlSerializer serializer )
1415         throws java.io.IOException
1416     {
1417         if ( plugin != null )
1418         {
1419             serializer.startTag( NAMESPACE, tagName );
1420             if ( plugin.getGroupId() != null && !plugin.getGroupId().equals( "org.apache.maven.plugins" ) )
1421             {
1422                 serializer.startTag( NAMESPACE, "groupId" ).text( plugin.getGroupId() ).endTag( NAMESPACE, "groupId" );
1423             }
1424             if ( plugin.getArtifactId() != null )
1425             {
1426                 serializer.startTag( NAMESPACE, "artifactId" ).text( plugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
1427             }
1428             if ( plugin.getVersion() != null )
1429             {
1430                 serializer.startTag( NAMESPACE, "version" ).text( plugin.getVersion() ).endTag( NAMESPACE, "version" );
1431             }
1432             if ( plugin.isExtensions() != false )
1433             {
1434                 serializer.startTag( NAMESPACE, "extensions" ).text( String.valueOf( plugin.isExtensions() ) ).endTag( NAMESPACE, "extensions" );
1435             }
1436             if ( plugin.getExecutions() != null && plugin.getExecutions().size() > 0 )
1437             {
1438                 serializer.startTag( NAMESPACE, "executions" );
1439                 for ( Iterator iter = plugin.getExecutions().iterator(); iter.hasNext(); )
1440                 {
1441                     PluginExecution o = (PluginExecution) iter.next();
1442                     writePluginExecution( o, "execution", serializer );
1443                 }
1444                 serializer.endTag( NAMESPACE, "executions" );
1445             }
1446             if ( plugin.getDependencies() != null && plugin.getDependencies().size() > 0 )
1447             {
1448                 serializer.startTag( NAMESPACE, "dependencies" );
1449                 for ( Iterator iter = plugin.getDependencies().iterator(); iter.hasNext(); )
1450                 {
1451                     Dependency o = (Dependency) iter.next();
1452                     writeDependency( o, "dependency", serializer );
1453                 }
1454                 serializer.endTag( NAMESPACE, "dependencies" );
1455             }
1456             if ( plugin.getGoals() != null )
1457             {
1458                 ((Xpp3Dom) plugin.getGoals()).writeToSerializer( NAMESPACE, serializer );
1459             }
1460             if ( plugin.getInherited() != null )
1461             {
1462                 serializer.startTag( NAMESPACE, "inherited" ).text( plugin.getInherited() ).endTag( NAMESPACE, "inherited" );
1463             }
1464             if ( plugin.getConfiguration() != null )
1465             {
1466                 ((Xpp3Dom) plugin.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
1467             }
1468             serializer.endTag( NAMESPACE, tagName );
1469         }
1470     } //-- void writePlugin( Plugin, String, XmlSerializer ) 
1471 
1472     /**
1473      * Method writePluginConfiguration.
1474      * 
1475      * @param pluginConfiguration
1476      * @param serializer
1477      * @param tagName
1478      * @throws java.io.IOException
1479      */
1480     private void writePluginConfiguration( PluginConfiguration pluginConfiguration, String tagName, XmlSerializer serializer )
1481         throws java.io.IOException
1482     {
1483         if ( pluginConfiguration != null )
1484         {
1485             serializer.startTag( NAMESPACE, tagName );
1486             if ( pluginConfiguration.getPluginManagement() != null )
1487             {
1488                 writePluginManagement( (PluginManagement) pluginConfiguration.getPluginManagement(), "pluginManagement", serializer );
1489             }
1490             if ( pluginConfiguration.getPlugins() != null && pluginConfiguration.getPlugins().size() > 0 )
1491             {
1492                 serializer.startTag( NAMESPACE, "plugins" );
1493                 for ( Iterator iter = pluginConfiguration.getPlugins().iterator(); iter.hasNext(); )
1494                 {
1495                     Plugin o = (Plugin) iter.next();
1496                     writePlugin( o, "plugin", serializer );
1497                 }
1498                 serializer.endTag( NAMESPACE, "plugins" );
1499             }
1500             serializer.endTag( NAMESPACE, tagName );
1501         }
1502     } //-- void writePluginConfiguration( PluginConfiguration, String, XmlSerializer ) 
1503 
1504     /**
1505      * Method writePluginContainer.
1506      * 
1507      * @param pluginContainer
1508      * @param serializer
1509      * @param tagName
1510      * @throws java.io.IOException
1511      */
1512     private void writePluginContainer( PluginContainer pluginContainer, String tagName, XmlSerializer serializer )
1513         throws java.io.IOException
1514     {
1515         if ( pluginContainer != null )
1516         {
1517             serializer.startTag( NAMESPACE, tagName );
1518             if ( pluginContainer.getPlugins() != null && pluginContainer.getPlugins().size() > 0 )
1519             {
1520                 serializer.startTag( NAMESPACE, "plugins" );
1521                 for ( Iterator iter = pluginContainer.getPlugins().iterator(); iter.hasNext(); )
1522                 {
1523                     Plugin o = (Plugin) iter.next();
1524                     writePlugin( o, "plugin", serializer );
1525                 }
1526                 serializer.endTag( NAMESPACE, "plugins" );
1527             }
1528             serializer.endTag( NAMESPACE, tagName );
1529         }
1530     } //-- void writePluginContainer( PluginContainer, String, XmlSerializer ) 
1531 
1532     /**
1533      * Method writePluginExecution.
1534      * 
1535      * @param pluginExecution
1536      * @param serializer
1537      * @param tagName
1538      * @throws java.io.IOException
1539      */
1540     private void writePluginExecution( PluginExecution pluginExecution, String tagName, XmlSerializer serializer )
1541         throws java.io.IOException
1542     {
1543         if ( pluginExecution != null )
1544         {
1545             serializer.startTag( NAMESPACE, tagName );
1546             if ( pluginExecution.getId() != null && !pluginExecution.getId().equals( "default" ) )
1547             {
1548                 serializer.startTag( NAMESPACE, "id" ).text( pluginExecution.getId() ).endTag( NAMESPACE, "id" );
1549             }
1550             if ( pluginExecution.getPhase() != null )
1551             {
1552                 serializer.startTag( NAMESPACE, "phase" ).text( pluginExecution.getPhase() ).endTag( NAMESPACE, "phase" );
1553             }
1554             if ( pluginExecution.getGoals() != null && pluginExecution.getGoals().size() > 0 )
1555             {
1556                 serializer.startTag( NAMESPACE, "goals" );
1557                 for ( Iterator iter = pluginExecution.getGoals().iterator(); iter.hasNext(); )
1558                 {
1559                     String goal = (String) iter.next();
1560                     serializer.startTag( NAMESPACE, "goal" ).text( goal ).endTag( NAMESPACE, "goal" );
1561                 }
1562                 serializer.endTag( NAMESPACE, "goals" );
1563             }
1564             if ( pluginExecution.getInherited() != null )
1565             {
1566                 serializer.startTag( NAMESPACE, "inherited" ).text( pluginExecution.getInherited() ).endTag( NAMESPACE, "inherited" );
1567             }
1568             if ( pluginExecution.getConfiguration() != null )
1569             {
1570                 ((Xpp3Dom) pluginExecution.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
1571             }
1572             serializer.endTag( NAMESPACE, tagName );
1573         }
1574     } //-- void writePluginExecution( PluginExecution, String, XmlSerializer ) 
1575 
1576     /**
1577      * Method writePluginManagement.
1578      * 
1579      * @param pluginManagement
1580      * @param serializer
1581      * @param tagName
1582      * @throws java.io.IOException
1583      */
1584     private void writePluginManagement( PluginManagement pluginManagement, String tagName, XmlSerializer serializer )
1585         throws java.io.IOException
1586     {
1587         if ( pluginManagement != null )
1588         {
1589             serializer.startTag( NAMESPACE, tagName );
1590             if ( pluginManagement.getPlugins() != null && pluginManagement.getPlugins().size() > 0 )
1591             {
1592                 serializer.startTag( NAMESPACE, "plugins" );
1593                 for ( Iterator iter = pluginManagement.getPlugins().iterator(); iter.hasNext(); )
1594                 {
1595                     Plugin o = (Plugin) iter.next();
1596                     writePlugin( o, "plugin", serializer );
1597                 }
1598                 serializer.endTag( NAMESPACE, "plugins" );
1599             }
1600             serializer.endTag( NAMESPACE, tagName );
1601         }
1602     } //-- void writePluginManagement( PluginManagement, String, XmlSerializer ) 
1603 
1604     /**
1605      * Method writePrerequisites.
1606      * 
1607      * @param prerequisites
1608      * @param serializer
1609      * @param tagName
1610      * @throws java.io.IOException
1611      */
1612     private void writePrerequisites( Prerequisites prerequisites, String tagName, XmlSerializer serializer )
1613         throws java.io.IOException
1614     {
1615         if ( prerequisites != null )
1616         {
1617             serializer.startTag( NAMESPACE, tagName );
1618             if ( prerequisites.getMaven() != null && !prerequisites.getMaven().equals( "2.0" ) )
1619             {
1620                 serializer.startTag( NAMESPACE, "maven" ).text( prerequisites.getMaven() ).endTag( NAMESPACE, "maven" );
1621             }
1622             serializer.endTag( NAMESPACE, tagName );
1623         }
1624     } //-- void writePrerequisites( Prerequisites, String, XmlSerializer ) 
1625 
1626     /**
1627      * Method writeProfile.
1628      * 
1629      * @param profile
1630      * @param serializer
1631      * @param tagName
1632      * @throws java.io.IOException
1633      */
1634     private void writeProfile( Profile profile, String tagName, XmlSerializer serializer )
1635         throws java.io.IOException
1636     {
1637         if ( profile != null )
1638         {
1639             serializer.startTag( NAMESPACE, tagName );
1640             if ( profile.getId() != null )
1641             {
1642                 serializer.startTag( NAMESPACE, "id" ).text( profile.getId() ).endTag( NAMESPACE, "id" );
1643             }
1644             if ( profile.getActivation() != null )
1645             {
1646                 writeActivation( (Activation) profile.getActivation(), "activation", serializer );
1647             }
1648             if ( profile.getBuild() != null )
1649             {
1650                 writeBuildBase( (BuildBase) profile.getBuild(), "build", serializer );
1651             }
1652             if ( profile.getDistributionManagement() != null )
1653             {
1654                 writeDistributionManagement( (DistributionManagement) profile.getDistributionManagement(), "distributionManagement", serializer );
1655             }
1656             if ( profile.getModules() != null && profile.getModules().size() > 0 )
1657             {
1658                 serializer.startTag( NAMESPACE, "modules" );
1659                 for ( Iterator iter = profile.getModules().iterator(); iter.hasNext(); )
1660                 {
1661                     String module = (String) iter.next();
1662                     serializer.startTag( NAMESPACE, "module" ).text( module ).endTag( NAMESPACE, "module" );
1663                 }
1664                 serializer.endTag( NAMESPACE, "modules" );
1665             }
1666             if ( profile.getRepositories() != null && profile.getRepositories().size() > 0 )
1667             {
1668                 serializer.startTag( NAMESPACE, "repositories" );
1669                 for ( Iterator iter = profile.getRepositories().iterator(); iter.hasNext(); )
1670                 {
1671                     Repository o = (Repository) iter.next();
1672                     writeRepository( o, "repository", serializer );
1673                 }
1674                 serializer.endTag( NAMESPACE, "repositories" );
1675             }
1676             if ( profile.getPluginRepositories() != null && profile.getPluginRepositories().size() > 0 )
1677             {
1678                 serializer.startTag( NAMESPACE, "pluginRepositories" );
1679                 for ( Iterator iter = profile.getPluginRepositories().iterator(); iter.hasNext(); )
1680                 {
1681                     Repository o = (Repository) iter.next();
1682                     writeRepository( o, "pluginRepository", serializer );
1683                 }
1684                 serializer.endTag( NAMESPACE, "pluginRepositories" );
1685             }
1686             if ( profile.getDependencies() != null && profile.getDependencies().size() > 0 )
1687             {
1688                 serializer.startTag( NAMESPACE, "dependencies" );
1689                 for ( Iterator iter = profile.getDependencies().iterator(); iter.hasNext(); )
1690                 {
1691                     Dependency o = (Dependency) iter.next();
1692                     writeDependency( o, "dependency", serializer );
1693                 }
1694                 serializer.endTag( NAMESPACE, "dependencies" );
1695             }
1696             if ( profile.getReports() != null )
1697             {
1698                 ((Xpp3Dom) profile.getReports()).writeToSerializer( NAMESPACE, serializer );
1699             }
1700             if ( profile.getReporting() != null )
1701             {
1702                 writeReporting( (Reporting) profile.getReporting(), "reporting", serializer );
1703             }
1704             if ( profile.getDependencyManagement() != null )
1705             {
1706                 writeDependencyManagement( (DependencyManagement) profile.getDependencyManagement(), "dependencyManagement", serializer );
1707             }
1708             if ( profile.getProperties() != null && profile.getProperties().size() > 0 )
1709             {
1710                 serializer.startTag( NAMESPACE, "properties" );
1711                 for ( Iterator iter = profile.getProperties().keySet().iterator(); iter.hasNext(); )
1712                 {
1713                     String key = (String) iter.next();
1714                     String value = (String) profile.getProperties().get( key );
1715                     serializer.startTag( NAMESPACE, "" + key + "" ).text( value ).endTag( NAMESPACE, "" + key + "" );
1716                 }
1717                 serializer.endTag( NAMESPACE, "properties" );
1718             }
1719             serializer.endTag( NAMESPACE, tagName );
1720         }
1721     } //-- void writeProfile( Profile, String, XmlSerializer ) 
1722 
1723     /**
1724      * Method writeRelocation.
1725      * 
1726      * @param relocation
1727      * @param serializer
1728      * @param tagName
1729      * @throws java.io.IOException
1730      */
1731     private void writeRelocation( Relocation relocation, String tagName, XmlSerializer serializer )
1732         throws java.io.IOException
1733     {
1734         if ( relocation != null )
1735         {
1736             serializer.startTag( NAMESPACE, tagName );
1737             if ( relocation.getGroupId() != null )
1738             {
1739                 serializer.startTag( NAMESPACE, "groupId" ).text( relocation.getGroupId() ).endTag( NAMESPACE, "groupId" );
1740             }
1741             if ( relocation.getArtifactId() != null )
1742             {
1743                 serializer.startTag( NAMESPACE, "artifactId" ).text( relocation.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
1744             }
1745             if ( relocation.getVersion() != null )
1746             {
1747                 serializer.startTag( NAMESPACE, "version" ).text( relocation.getVersion() ).endTag( NAMESPACE, "version" );
1748             }
1749             if ( relocation.getMessage() != null )
1750             {
1751                 serializer.startTag( NAMESPACE, "message" ).text( relocation.getMessage() ).endTag( NAMESPACE, "message" );
1752             }
1753             serializer.endTag( NAMESPACE, tagName );
1754         }
1755     } //-- void writeRelocation( Relocation, String, XmlSerializer ) 
1756 
1757     /**
1758      * Method writeReportPlugin.
1759      * 
1760      * @param reportPlugin
1761      * @param serializer
1762      * @param tagName
1763      * @throws java.io.IOException
1764      */
1765     private void writeReportPlugin( ReportPlugin reportPlugin, String tagName, XmlSerializer serializer )
1766         throws java.io.IOException
1767     {
1768         if ( reportPlugin != null )
1769         {
1770             serializer.startTag( NAMESPACE, tagName );
1771             if ( reportPlugin.getGroupId() != null && !reportPlugin.getGroupId().equals( "org.apache.maven.plugins" ) )
1772             {
1773                 serializer.startTag( NAMESPACE, "groupId" ).text( reportPlugin.getGroupId() ).endTag( NAMESPACE, "groupId" );
1774             }
1775             if ( reportPlugin.getArtifactId() != null )
1776             {
1777                 serializer.startTag( NAMESPACE, "artifactId" ).text( reportPlugin.getArtifactId() ).endTag( NAMESPACE, "artifactId" );
1778             }
1779             if ( reportPlugin.getVersion() != null )
1780             {
1781                 serializer.startTag( NAMESPACE, "version" ).text( reportPlugin.getVersion() ).endTag( NAMESPACE, "version" );
1782             }
1783             if ( reportPlugin.getInherited() != null )
1784             {
1785                 serializer.startTag( NAMESPACE, "inherited" ).text( reportPlugin.getInherited() ).endTag( NAMESPACE, "inherited" );
1786             }
1787             if ( reportPlugin.getConfiguration() != null )
1788             {
1789                 ((Xpp3Dom) reportPlugin.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
1790             }
1791             if ( reportPlugin.getReportSets() != null && reportPlugin.getReportSets().size() > 0 )
1792             {
1793                 serializer.startTag( NAMESPACE, "reportSets" );
1794                 for ( Iterator iter = reportPlugin.getReportSets().iterator(); iter.hasNext(); )
1795                 {
1796                     ReportSet o = (ReportSet) iter.next();
1797                     writeReportSet( o, "reportSet", serializer );
1798                 }
1799                 serializer.endTag( NAMESPACE, "reportSets" );
1800             }
1801             serializer.endTag( NAMESPACE, tagName );
1802         }
1803     } //-- void writeReportPlugin( ReportPlugin, String, XmlSerializer ) 
1804 
1805     /**
1806      * Method writeReportSet.
1807      * 
1808      * @param reportSet
1809      * @param serializer
1810      * @param tagName
1811      * @throws java.io.IOException
1812      */
1813     private void writeReportSet( ReportSet reportSet, String tagName, XmlSerializer serializer )
1814         throws java.io.IOException
1815     {
1816         if ( reportSet != null )
1817         {
1818             serializer.startTag( NAMESPACE, tagName );
1819             if ( reportSet.getId() != null && !reportSet.getId().equals( "default" ) )
1820             {
1821                 serializer.startTag( NAMESPACE, "id" ).text( reportSet.getId() ).endTag( NAMESPACE, "id" );
1822             }
1823             if ( reportSet.getConfiguration() != null )
1824             {
1825                 ((Xpp3Dom) reportSet.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
1826             }
1827             if ( reportSet.getInherited() != null )
1828             {
1829                 serializer.startTag( NAMESPACE, "inherited" ).text( reportSet.getInherited() ).endTag( NAMESPACE, "inherited" );
1830             }
1831             if ( reportSet.getReports() != null && reportSet.getReports().size() > 0 )
1832             {
1833                 serializer.startTag( NAMESPACE, "reports" );
1834                 for ( Iterator iter = reportSet.getReports().iterator(); iter.hasNext(); )
1835                 {
1836                     String report = (String) iter.next();
1837                     serializer.startTag( NAMESPACE, "report" ).text( report ).endTag( NAMESPACE, "report" );
1838                 }
1839                 serializer.endTag( NAMESPACE, "reports" );
1840             }
1841             serializer.endTag( NAMESPACE, tagName );
1842         }
1843     } //-- void writeReportSet( ReportSet, String, XmlSerializer ) 
1844 
1845     /**
1846      * Method writeReporting.
1847      * 
1848      * @param reporting
1849      * @param serializer
1850      * @param tagName
1851      * @throws java.io.IOException
1852      */
1853     private void writeReporting( Reporting reporting, String tagName, XmlSerializer serializer )
1854         throws java.io.IOException
1855     {
1856         if ( reporting != null )
1857         {
1858             serializer.startTag( NAMESPACE, tagName );
1859             if ( reporting.isExcludeDefaultsValue() != null )
1860             {
1861                 serializer.startTag( NAMESPACE, "excludeDefaults" ).text( String.valueOf( reporting.isExcludeDefaultsValue() ) ).endTag( NAMESPACE, "excludeDefaults" );
1862             }
1863             if ( reporting.getOutputDirectory() != null )
1864             {
1865                 serializer.startTag( NAMESPACE, "outputDirectory" ).text( reporting.getOutputDirectory() ).endTag( NAMESPACE, "outputDirectory" );
1866             }
1867             if ( reporting.getPlugins() != null && reporting.getPlugins().size() > 0 )
1868             {
1869                 serializer.startTag( NAMESPACE, "plugins" );
1870                 for ( Iterator iter = reporting.getPlugins().iterator(); iter.hasNext(); )
1871                 {
1872                     ReportPlugin o = (ReportPlugin) iter.next();
1873                     writeReportPlugin( o, "plugin", serializer );
1874                 }
1875                 serializer.endTag( NAMESPACE, "plugins" );
1876             }
1877             serializer.endTag( NAMESPACE, tagName );
1878         }
1879     } //-- void writeReporting( Reporting, String, XmlSerializer ) 
1880 
1881     /**
1882      * Method writeRepository.
1883      * 
1884      * @param repository
1885      * @param serializer
1886      * @param tagName
1887      * @throws java.io.IOException
1888      */
1889     private void writeRepository( Repository repository, String tagName, XmlSerializer serializer )
1890         throws java.io.IOException
1891     {
1892         if ( repository != null )
1893         {
1894             serializer.startTag( NAMESPACE, tagName );
1895             if ( repository.getReleases() != null )
1896             {
1897                 writeRepositoryPolicy( (RepositoryPolicy) repository.getReleases(), "releases", serializer );
1898             }
1899             if ( repository.getSnapshots() != null )
1900             {
1901                 writeRepositoryPolicy( (RepositoryPolicy) repository.getSnapshots(), "snapshots", serializer );
1902             }
1903             if ( repository.getId() != null )
1904             {
1905                 serializer.startTag( NAMESPACE, "id" ).text( repository.getId() ).endTag( NAMESPACE, "id" );
1906             }
1907             if ( repository.getName() != null )
1908             {
1909                 serializer.startTag( NAMESPACE, "name" ).text( repository.getName() ).endTag( NAMESPACE, "name" );
1910             }
1911             if ( repository.getUrl() != null )
1912             {
1913                 serializer.startTag( NAMESPACE, "url" ).text( repository.getUrl() ).endTag( NAMESPACE, "url" );
1914             }
1915             if ( repository.getLayout() != null && !repository.getLayout().equals( "default" ) )
1916             {
1917                 serializer.startTag( NAMESPACE, "layout" ).text( repository.getLayout() ).endTag( NAMESPACE, "layout" );
1918             }
1919             serializer.endTag( NAMESPACE, tagName );
1920         }
1921     } //-- void writeRepository( Repository, String, XmlSerializer ) 
1922 
1923     /**
1924      * Method writeRepositoryBase.
1925      * 
1926      * @param repositoryBase
1927      * @param serializer
1928      * @param tagName
1929      * @throws java.io.IOException
1930      */
1931     private void writeRepositoryBase( RepositoryBase repositoryBase, String tagName, XmlSerializer serializer )
1932         throws java.io.IOException
1933     {
1934         if ( repositoryBase != null )
1935         {
1936             serializer.startTag( NAMESPACE, tagName );
1937             if ( repositoryBase.getId() != null )
1938             {
1939                 serializer.startTag( NAMESPACE, "id" ).text( repositoryBase.getId() ).endTag( NAMESPACE, "id" );
1940             }
1941             if ( repositoryBase.getName() != null )
1942             {
1943                 serializer.startTag( NAMESPACE, "name" ).text( repositoryBase.getName() ).endTag( NAMESPACE, "name" );
1944             }
1945             if ( repositoryBase.getUrl() != null )
1946             {
1947                 serializer.startTag( NAMESPACE, "url" ).text( repositoryBase.getUrl() ).endTag( NAMESPACE, "url" );
1948             }
1949             if ( repositoryBase.getLayout() != null && !repositoryBase.getLayout().equals( "default" ) )
1950             {
1951                 serializer.startTag( NAMESPACE, "layout" ).text( repositoryBase.getLayout() ).endTag( NAMESPACE, "layout" );
1952             }
1953             serializer.endTag( NAMESPACE, tagName );
1954         }
1955     } //-- void writeRepositoryBase( RepositoryBase, String, XmlSerializer ) 
1956 
1957     /**
1958      * Method writeRepositoryPolicy.
1959      * 
1960      * @param repositoryPolicy
1961      * @param serializer
1962      * @param tagName
1963      * @throws java.io.IOException
1964      */
1965     private void writeRepositoryPolicy( RepositoryPolicy repositoryPolicy, String tagName, XmlSerializer serializer )
1966         throws java.io.IOException
1967     {
1968         if ( repositoryPolicy != null )
1969         {
1970             serializer.startTag( NAMESPACE, tagName );
1971             if ( repositoryPolicy.isEnabled() != true )
1972             {
1973                 serializer.startTag( NAMESPACE, "enabled" ).text( String.valueOf( repositoryPolicy.isEnabled() ) ).endTag( NAMESPACE, "enabled" );
1974             }
1975             if ( repositoryPolicy.getUpdatePolicy() != null )
1976             {
1977                 serializer.startTag( NAMESPACE, "updatePolicy" ).text( repositoryPolicy.getUpdatePolicy() ).endTag( NAMESPACE, "updatePolicy" );
1978             }
1979             if ( repositoryPolicy.getChecksumPolicy() != null )
1980             {
1981                 serializer.startTag( NAMESPACE, "checksumPolicy" ).text( repositoryPolicy.getChecksumPolicy() ).endTag( NAMESPACE, "checksumPolicy" );
1982             }
1983             serializer.endTag( NAMESPACE, tagName );
1984         }
1985     } //-- void writeRepositoryPolicy( RepositoryPolicy, String, XmlSerializer ) 
1986 
1987     /**
1988      * Method writeResource.
1989      * 
1990      * @param resource
1991      * @param serializer
1992      * @param tagName
1993      * @throws java.io.IOException
1994      */
1995     private void writeResource( Resource resource, String tagName, XmlSerializer serializer )
1996         throws java.io.IOException
1997     {
1998         if ( resource != null )
1999         {
2000             serializer.startTag( NAMESPACE, tagName );
2001             if ( resource.getTargetPath() != null )
2002             {
2003                 serializer.startTag( NAMESPACE, "targetPath" ).text( resource.getTargetPath() ).endTag( NAMESPACE, "targetPath" );
2004             }
2005             if ( resource.isFiltering() != false )
2006             {
2007                 serializer.startTag( NAMESPACE, "filtering" ).text( String.valueOf( resource.isFiltering() ) ).endTag( NAMESPACE, "filtering" );
2008             }
2009             if ( resource.getMergeId() != null )
2010             {
2011                 serializer.startTag( NAMESPACE, "mergeId" ).text( resource.getMergeId() ).endTag( NAMESPACE, "mergeId" );
2012             }
2013             if ( resource.getDirectory() != null )
2014             {
2015                 serializer.startTag( NAMESPACE, "directory" ).text( resource.getDirectory() ).endTag( NAMESPACE, "directory" );
2016             }
2017             if ( resource.getIncludes() != null && resource.getIncludes().size() > 0 )
2018             {
2019                 serializer.startTag( NAMESPACE, "includes" );
2020                 for ( Iterator iter = resource.getIncludes().iterator(); iter.hasNext(); )
2021                 {
2022                     String include = (String) iter.next();
2023                     serializer.startTag( NAMESPACE, "include" ).text( include ).endTag( NAMESPACE, "include" );
2024                 }
2025                 serializer.endTag( NAMESPACE, "includes" );
2026             }
2027             if ( resource.getExcludes() != null && resource.getExcludes().size() > 0 )
2028             {
2029                 serializer.startTag( NAMESPACE, "excludes" );
2030                 for ( Iterator iter = resource.getExcludes().iterator(); iter.hasNext(); )
2031                 {
2032                     String exclude = (String) iter.next();
2033                     serializer.startTag( NAMESPACE, "exclude" ).text( exclude ).endTag( NAMESPACE, "exclude" );
2034                 }
2035                 serializer.endTag( NAMESPACE, "excludes" );
2036             }
2037             serializer.endTag( NAMESPACE, tagName );
2038         }
2039     } //-- void writeResource( Resource, String, XmlSerializer ) 
2040 
2041     /**
2042      * Method writeScm.
2043      * 
2044      * @param scm
2045      * @param serializer
2046      * @param tagName
2047      * @throws java.io.IOException
2048      */
2049     private void writeScm( Scm scm, String tagName, XmlSerializer serializer )
2050         throws java.io.IOException
2051     {
2052         if ( scm != null )
2053         {
2054             serializer.startTag( NAMESPACE, tagName );
2055             if ( scm.getConnection() != null )
2056             {
2057                 serializer.startTag( NAMESPACE, "connection" ).text( scm.getConnection() ).endTag( NAMESPACE, "connection" );
2058             }
2059             if ( scm.getDeveloperConnection() != null )
2060             {
2061                 serializer.startTag( NAMESPACE, "developerConnection" ).text( scm.getDeveloperConnection() ).endTag( NAMESPACE, "developerConnection" );
2062             }
2063             if ( scm.getTag() != null && !scm.getTag().equals( "HEAD" ) )
2064             {
2065                 serializer.startTag( NAMESPACE, "tag" ).text( scm.getTag() ).endTag( NAMESPACE, "tag" );
2066             }
2067             if ( scm.getUrl() != null )
2068             {
2069                 serializer.startTag( NAMESPACE, "url" ).text( scm.getUrl() ).endTag( NAMESPACE, "url" );
2070             }
2071             serializer.endTag( NAMESPACE, tagName );
2072         }
2073     } //-- void writeScm( Scm, String, XmlSerializer ) 
2074 
2075     /**
2076      * Method writeSite.
2077      * 
2078      * @param site
2079      * @param serializer
2080      * @param tagName
2081      * @throws java.io.IOException
2082      */
2083     private void writeSite( Site site, String tagName, XmlSerializer serializer )
2084         throws java.io.IOException
2085     {
2086         if ( site != null )
2087         {
2088             serializer.startTag( NAMESPACE, tagName );
2089             if ( site.getId() != null )
2090             {
2091                 serializer.startTag( NAMESPACE, "id" ).text( site.getId() ).endTag( NAMESPACE, "id" );
2092             }
2093             if ( site.getName() != null )
2094             {
2095                 serializer.startTag( NAMESPACE, "name" ).text( site.getName() ).endTag( NAMESPACE, "name" );
2096             }
2097             if ( site.getUrl() != null )
2098             {
2099                 serializer.startTag( NAMESPACE, "url" ).text( site.getUrl() ).endTag( NAMESPACE, "url" );
2100             }
2101             serializer.endTag( NAMESPACE, tagName );
2102         }
2103     } //-- void writeSite( Site, String, XmlSerializer ) 
2104 
2105 
2106 }