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