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