File: Compilation\WCFModel\MetadataSource.cs
Project: ndp\fx\src\xsp\system\Extensions\System.Web.Extensions.csproj (System.Web.Extensions)
#region Copyright (c) Microsoft Corporation
/// <copyright company='Microsoft Corporation'>
///    Copyright (c) Microsoft Corporation. All Rights Reserved.
///    Information Contained Herein is Proprietary and Confidential.
/// </copyright>
#endregion
 
using System;
using System.Diagnostics;
using XmlSerialization = System.Xml.Serialization;
 
#if WEB_EXTENSIONS_CODE
using System.Web.Resources;
#else
using Microsoft.VSDesigner.WCF.Resources;
#endif
 
#if WEB_EXTENSIONS_CODE
namespace System.Web.Compilation.WCFModel
#else
namespace Microsoft.VSDesigner.WCFModel
#endif
{
    /// <summary>
    /// This class implements a MetadataSource item in the svcmap file
    /// </summary>
    /// <remarks></remarks>
#if WEB_EXTENSIONS_CODE
    internal class MetadataSource
#else
    [CLSCompliant(true)]
    public class MetadataSource
#endif
    {
        // URL of metadata source
        private string m_Address;
 
        // protocol to download it
        private string m_Protocol;
 
        // ID of this source
        private int m_SourceId;
 
        /// <summary>
        /// Constructor
        /// </summary>
        /// <remarks> Must support a default construct for XmlSerializer</remarks>
        public MetadataSource()
        {
            m_Address = String.Empty;
            m_Protocol = String.Empty;
        }
 
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="address"></param>
        /// <param name="sourceId"></param>
        public MetadataSource(string protocol, string address, int sourceId)
        {
            if (protocol == null)
            {
                throw new ArgumentNullException("protocol");
            }
            if (address == null)
            {
                throw new ArgumentNullException("address");
            }
            if (protocol.Length == 0)
            {
                throw new ArgumentException(WCFModelStrings.ReferenceGroup_EmptyProtocol);
            }
            if (address == null)
            {
                throw new ArgumentException(WCFModelStrings.ReferenceGroup_EmptyAddress);
            }
            m_Protocol = protocol;
            m_Address = address;
 
            if (sourceId < 0)
            {
                Debug.Fail("Source ID shouldn't be a nagtive number");
                throw new ArgumentException(WCFModelStrings.ReferenceGroup_InvalidSourceId);
            }
            m_SourceId = sourceId;
        }
 
        /// <summary>
        /// URL address to download metadata
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlAttribute()]
        public string Address
        {
            get
            {
                return m_Address;
            }
            set
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }
                m_Address = value;
            }
        }
 
        /// <summary>
        /// protocol used to download metadata
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlAttribute()]
        public string Protocol
        {
            get
            {
                return m_Protocol;
            }
            set
            {
                if (value == null)
                {
                    throw new ArgumentNullException("value");
                }
                m_Protocol = value;
            }
        }
 
        /// <summary>
        /// generated ID for this metadata source
        /// </summary>
        /// <value></value>
        /// <remarks></remarks>
        [XmlSerialization.XmlAttribute()]
        public int SourceId
        {
            get
            {
                return m_SourceId;
            }
            set
            {
                if (value < 0)
                {
                    Debug.Fail("Source ID shouldn't be a nagtive number");
                    throw new ArgumentException(WCFModelStrings.ReferenceGroup_InvalidSourceId);
                }
                m_SourceId = value;
            }
        }
 
    }
 
}