package org.sonatype.plexus.components.sec.dispatcher.model.io.xpp3;
import java.io.Writer;
import java.text.DateFormat;
import java.util.Iterator;
import java.util.Locale;
import org.codehaus.plexus.util.xml.pull.MXSerializer;
import org.codehaus.plexus.util.xml.pull.XmlSerializer;
import org.sonatype.plexus.components.sec.dispatcher.model.Config;
import org.sonatype.plexus.components.sec.dispatcher.model.ConfigProperty;
import org.sonatype.plexus.components.sec.dispatcher.model.SettingsSecurity;
public class SecurityConfigurationXpp3Writer
{
private static final String NAMESPACE = null;
public void write( Writer writer, SettingsSecurity settingsSecurity )
throws java.io.IOException
{
XmlSerializer serializer = new MXSerializer();
serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", " " );
serializer.setProperty( "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n" );
serializer.setOutput( writer );
serializer.startDocument( settingsSecurity.getModelEncoding(), null );
writeSettingsSecurity( settingsSecurity, "settingsSecurity", serializer );
serializer.endDocument();
}
private void writeConfig( Config config, String tagName, XmlSerializer serializer )
throws java.io.IOException
{
if ( config != null )
{
serializer.startTag( NAMESPACE, tagName );
if ( config.getName() != null )
{
serializer.startTag( NAMESPACE, "name" ).text( config.getName() ).endTag( NAMESPACE, "name" );
}
if ( ( config.getProperties() != null ) && ( config.getProperties().size() > 0 ) )
{
serializer.startTag( NAMESPACE, "properties" );
for ( Iterator iter = config.getProperties().iterator(); iter.hasNext(); )
{
ConfigProperty o = (ConfigProperty) iter.next();
writeConfigProperty( o, "property", serializer );
}
serializer.endTag( NAMESPACE, "properties" );
}
serializer.endTag( NAMESPACE, tagName );
}
}
private void writeConfigProperty( ConfigProperty configProperty, String tagName, XmlSerializer serializer )
throws java.io.IOException
{
if ( configProperty != null )
{
serializer.startTag( NAMESPACE, tagName );
if ( configProperty.getName() != null )
{
serializer.startTag( NAMESPACE, "name" ).text( configProperty.getName() ).endTag( NAMESPACE, "name" );
}
if ( configProperty.getValue() != null )
{
serializer.startTag( NAMESPACE, "value" ).text( configProperty.getValue() ).endTag( NAMESPACE, "value" );
}
serializer.endTag( NAMESPACE, tagName );
}
}
private void writeSettingsSecurity( SettingsSecurity settingsSecurity, String tagName, XmlSerializer serializer )
throws java.io.IOException
{
if ( settingsSecurity != null )
{
serializer.startTag( NAMESPACE, tagName );
if ( settingsSecurity.getMaster() != null )
{
serializer.startTag( NAMESPACE, "master" ).text( settingsSecurity.getMaster() ).endTag( NAMESPACE, "master" );
}
if ( settingsSecurity.getRelocation() != null )
{
serializer.startTag( NAMESPACE, "relocation" ).text( settingsSecurity.getRelocation() ).endTag( NAMESPACE, "relocation" );
}
if ( ( settingsSecurity.getConfigurations() != null ) && ( settingsSecurity.getConfigurations().size() > 0 ) )
{
serializer.startTag( NAMESPACE, "configurations" );
for ( Iterator iter = settingsSecurity.getConfigurations().iterator(); iter.hasNext(); )
{
Config o = (Config) iter.next();
writeConfig( o, "configuration", serializer );
}
serializer.endTag( NAMESPACE, "configurations" );
}
serializer.endTag( NAMESPACE, tagName );
}
}
}