001    // =================== DO NOT EDIT THIS FILE ====================
002    // Generated by Modello 1.7,
003    // any modifications will be overwritten.
004    // ==============================================================
005    
006    package org.apache.maven.toolchain.model.io.xpp3;
007    
008      //---------------------------------/
009     //- Imported classes and packages -/
010    //---------------------------------/
011    
012    import java.io.OutputStream;
013    import java.io.Writer;
014    import java.util.Iterator;
015    import org.apache.maven.toolchain.model.PersistedToolchains;
016    import org.apache.maven.toolchain.model.ToolchainModel;
017    import org.codehaus.plexus.util.xml.Xpp3Dom;
018    import org.codehaus.plexus.util.xml.pull.MXSerializer;
019    import org.codehaus.plexus.util.xml.pull.XmlSerializer;
020    
021    /**
022     * Class MavenToolchainsXpp3Writer.
023     * 
024     * @version $Revision$ $Date$
025     */
026    @SuppressWarnings( "all" )
027    public class MavenToolchainsXpp3Writer
028    {
029    
030          //--------------------------/
031         //- Class/Member Variables -/
032        //--------------------------/
033    
034        /**
035         * Field NAMESPACE.
036         */
037        private static final String NAMESPACE = null;
038    
039    
040          //-----------/
041         //- Methods -/
042        //-----------/
043    
044        /**
045         * Method write.
046         * 
047         * @param writer
048         * @param persistedToolchains
049         * @throws java.io.IOException
050         */
051        public void write( Writer writer, PersistedToolchains persistedToolchains )
052            throws java.io.IOException
053        {
054            XmlSerializer serializer = new MXSerializer();
055            serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
056            serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
057            serializer.setOutput( writer );
058            serializer.startDocument( persistedToolchains.getModelEncoding(), null );
059            writePersistedToolchains( persistedToolchains, "toolchains", serializer );
060            serializer.endDocument();
061        } //-- void write( Writer, PersistedToolchains )
062    
063        /**
064         * Method write.
065         * 
066         * @param stream
067         * @param persistedToolchains
068         * @throws java.io.IOException
069         */
070        public void write( OutputStream stream, PersistedToolchains persistedToolchains )
071            throws java.io.IOException
072        {
073            XmlSerializer serializer = new MXSerializer();
074            serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "  " );
075            serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
076            serializer.setOutput( stream, persistedToolchains.getModelEncoding() );
077            serializer.startDocument( persistedToolchains.getModelEncoding(), null );
078            writePersistedToolchains( persistedToolchains, "toolchains", serializer );
079            serializer.endDocument();
080        } //-- void write( OutputStream, PersistedToolchains )
081    
082        /**
083         * Method writePersistedToolchains.
084         * 
085         * @param persistedToolchains
086         * @param serializer
087         * @param tagName
088         * @throws java.io.IOException
089         */
090        private void writePersistedToolchains( PersistedToolchains persistedToolchains, String tagName, XmlSerializer serializer )
091            throws java.io.IOException
092        {
093            serializer.setPrefix( "", "http://maven.apache.org/TOOLCHAINS/1.0.0" );
094            serializer.setPrefix( "xsi", "http://www.w3.org/2001/XMLSchema-instance" );
095            serializer.startTag( NAMESPACE, tagName );
096            serializer.attribute( "", "xsi:schemaLocation", "http://maven.apache.org/TOOLCHAINS/1.0.0 http://maven.apache.org/xsd/toolchains-1.0.0.xsd" );
097            if ( ( persistedToolchains.getToolchains() != null ) && ( persistedToolchains.getToolchains().size() > 0 ) )
098            {
099                for ( Iterator iter = persistedToolchains.getToolchains().iterator(); iter.hasNext(); )
100                {
101                    ToolchainModel o = (ToolchainModel) iter.next();
102                    writeToolchainModel( o, "toolchain", serializer );
103                }
104            }
105            serializer.endTag( NAMESPACE, tagName );
106        } //-- void writePersistedToolchains( PersistedToolchains, String, XmlSerializer )
107    
108        /**
109         * Method writeToolchainModel.
110         * 
111         * @param toolchainModel
112         * @param serializer
113         * @param tagName
114         * @throws java.io.IOException
115         */
116        private void writeToolchainModel( ToolchainModel toolchainModel, String tagName, XmlSerializer serializer )
117            throws java.io.IOException
118        {
119            serializer.startTag( NAMESPACE, tagName );
120            if ( toolchainModel.getType() != null )
121            {
122                serializer.startTag( NAMESPACE, "type" ).text( toolchainModel.getType() ).endTag( NAMESPACE, "type" );
123            }
124            if ( toolchainModel.getProvides() != null )
125            {
126                ((Xpp3Dom) toolchainModel.getProvides()).writeToSerializer( NAMESPACE, serializer );
127            }
128            if ( toolchainModel.getConfiguration() != null )
129            {
130                ((Xpp3Dom) toolchainModel.getConfiguration()).writeToSerializer( NAMESPACE, serializer );
131            }
132            serializer.endTag( NAMESPACE, tagName );
133        } //-- void writeToolchainModel( ToolchainModel, String, XmlSerializer )
134    
135    }