View Javadoc

1   /*
2    * $Id$
3    */
4   
5   package org.apache.maven.toolchain.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.toolchain.model.PersistedToolchains;
16  import org.apache.maven.toolchain.model.ToolchainModel;
17  import org.codehaus.plexus.util.xml.Xpp3Dom;
18  import org.codehaus.plexus.util.xml.pull.MXSerializer;
19  import org.codehaus.plexus.util.xml.pull.XmlSerializer;
20  
21  /**
22   * Class MavenToolchainsXpp3Writer.
23   * 
24   * @version $Revision$ $Date$
25   */
26  public class MavenToolchainsXpp3Writer {
27  
28  
29        //--------------------------/
30       //- Class/Member Variables -/
31      //--------------------------/
32  
33      /**
34       * Field NAMESPACE.
35       */
36      private String NAMESPACE;
37  
38  
39        //-----------/
40       //- Methods -/
41      //-----------/
42  
43      /**
44       * Method write.
45       * 
46       * @param writer
47       * @param persistedToolchains
48       * @throws java.io.IOException
49       */
50      public void write( Writer writer, PersistedToolchains persistedToolchains )
51          throws java.io.IOException
52      {
53          XmlSerializer serializer = new MXSerializer();
54          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
55          serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
56          serializer.setOutput( writer );
57          serializer.startDocument( persistedToolchains.getModelEncoding(), null );
58          writePersistedToolchains( persistedToolchains, "toolchains", serializer );
59          serializer.endDocument();
60      } //-- void write( Writer, PersistedToolchains ) 
61  
62      /**
63       * Method writePersistedToolchains.
64       * 
65       * @param persistedToolchains
66       * @param serializer
67       * @param tagName
68       * @throws java.io.IOException
69       */
70      private void writePersistedToolchains( PersistedToolchains persistedToolchains, String tagName, XmlSerializer serializer )
71          throws java.io.IOException
72      {
73          if ( persistedToolchains != null )
74          {
75              serializer.startTag( NAMESPACE, tagName );
76              if ( persistedToolchains.getToolchains() != null && persistedToolchains.getToolchains().size() > 0 )
77              {
78                  for ( Iterator iter = persistedToolchains.getToolchains().iterator(); iter.hasNext(); )
79                  {
80                      ToolchainModel o = (ToolchainModel) iter.next();
81                      writeToolchainModel( o, "toolchain", serializer );
82                  }
83              }
84              serializer.endTag( NAMESPACE, tagName );
85          }
86      } //-- void writePersistedToolchains( PersistedToolchains, String, XmlSerializer ) 
87  
88      /**
89       * Method writeToolchainModel.
90       * 
91       * @param toolchainModel
92       * @param serializer
93       * @param tagName
94       * @throws java.io.IOException
95       */
96      private void writeToolchainModel( ToolchainModel toolchainModel, String tagName, XmlSerializer serializer )
97          throws java.io.IOException
98      {
99          if ( toolchainModel != null )
100         {
101             serializer.startTag( NAMESPACE, tagName );
102             if ( toolchainModel.getType() != null )
103             {
104                 serializer.startTag( NAMESPACE, "type" ).text( toolchainModel.getType() ).endTag( NAMESPACE, "type" );
105             }
106             if ( toolchainModel.getProvides() != null )
107             {
108                 ((Xpp3Dom) toolchainModel.getProvides()).writeToSerializer( NAMESPACE, serializer );
109             }
110             if ( toolchainModel.getConfiguration() != null )
111             {
112                 ((Xpp3Dom) toolchainModel.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
113             }
114             serializer.endTag( NAMESPACE, tagName );
115         }
116     } //-- void writeToolchainModel( ToolchainModel, String, XmlSerializer ) 
117 
118 
119 }