You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ym...@apache.org on 2002/08/24 00:03:59 UTC

cvs commit: jakarta-avalon-excalibur/csframework/src/cs/Configuration DefaultConfigurationSerializer.cs

ymikulski    2002/08/23 15:03:59

  Added:       csframework/src/cs/Configuration
                        DefaultConfigurationSerializer.cs
  Log:
  no message
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-excalibur/csframework/src/cs/Configuration/DefaultConfigurationSerializer.cs
  
  Index: DefaultConfigurationSerializer.cs
  ===================================================================
  ///
  /// Copyright (C) The Apache Software Foundation. All rights reserved.
  ///
  /// This software is published under the terms of the Apache Software License
  /// version 1.1, a copy of which has been included  with this distribution in
  /// the LICENSE.txt file.
  ///
  using System;
  using System.Collections;
  using System.IO;
  using System.Xml;
  
  namespace Apache.Avalon.Configuration
  {
  	/// <summary>
  	/// A Serializer of <see cref="DefaultConfiguration"/>.
  	/// </summary>
  	public class DefaultConfigurationSerializer
  	{
  
  		/// <summary>
  		/// Makes a serialization of a <see cref="DefaultConfiguration"/> instance.
  		/// </summary>
  		/// <param name="filename">
  		/// The File name where <see cref="DefaultConfiguration"/> instance will be
  		/// serialized to.
  		/// </param>
  		/// <param name="configuration">A <see cref="DefaultConfiguration"/> instance to serialize</param>
  		public static void Serialize(string filename, DefaultConfiguration configuration)
  		{
  			XmlTextWriter writer = new XmlTextWriter(new StreamWriter(filename));
  
  			//Use indentation for readability.
  			writer.Formatting = Formatting.Indented;
  			writer.Indentation = 4;
  			
  			writer.WriteStartDocument(true);
  
  			Serialize(writer, configuration);				
  
  			writer.WriteEndDocument(); 
  			writer.Close(); 
  		}
  
  		public static void Serialize(XmlWriter writer, DefaultConfiguration configuration)
  		{
  			// serialize the configuration
  			writer.WriteStartElement(configuration.Prefix, configuration.Name, configuration.Namespace); 
  			
  			if (configuration.Value != null)
  			{
  				writer.WriteString(configuration.Value.ToString());
  			}
  			
  			// attribute serialization
  			foreach (DictionaryEntry attr in configuration.Attributes) 
  			{
  				writer.WriteAttributeString(attr.Key.ToString(), attr.Value.ToString()); 
  			}  
  
  			// child serialization
  			foreach(IConfiguration child in configuration.Children)
  			{
  				Serialize(writer, (DefaultConfiguration) child);
  			}
  
  			writer.WriteEndElement();
  		}
  
  		/// <summary>
  		/// Makes a deserialization of a <see cref="DefaultConfiguration"/> instance.
  		/// </summary>
  		/// <param name="filename">The name of the file, containing the XML document to deserialize.</param>
  		/// <returns>A deserialized <see cref="DefaultConfiguration"/>  instance.</returns>
  		public static DefaultConfiguration Deserialize(string fileName)
  		{
  			DefaultConfiguration configuration = null;
  
  			XmlDocument document = new XmlDocument();
  			document.Load(fileName);
  			
  			XmlNode root = document.DocumentElement; 
  
  			if (root != null)
  			{
  				configuration = Deserialize(root);
  			}
  
  			return configuration;
  		}
  
  		/// <summary>
  		/// Makes a deserialization of <see cref="System.Xml.XmlNode"/> instance.
  		/// </summary>
  		/// <param name="node">The node to deserialize.</param>
  		/// <returns>A deserialized <see cref="DefaultConfiguration"/>  instance.</returns>
  		public static DefaultConfiguration Deserialize(XmlNode node)
  		{
  			// node deserialization
  			DefaultConfiguration configuration =
  				 new DefaultConfiguration(node.LocalName, "-", node.NamespaceURI, node.Prefix);
  			
  			configuration.Value = node.Value;
  
  			// attribute deserialization
  			foreach (XmlAttribute attr in node.Attributes)
  			{
  				configuration.Attributes[attr.Name] = attr.Value;  
  			}
  
  			// child deserialization
  			foreach (XmlNode child in node.ChildNodes)
  			{
  				DefaultConfiguration childConfiguration = Deserialize(child);
  				configuration.Children.Add(childConfiguration); 
  			}
  
  			return configuration;
  		}
  	}
  }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>