//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.ObjectModel;
namespace System.IdentityModel.Metadata
{
    /// 
    /// Defines a role descriptor.
    /// 
    public abstract class RoleDescriptor
    {
        Collection contacts = new Collection();
        Uri errorUrl;
        Collection keys = new Collection();
        Organization organization;
        Collection protocolsSupported = new Collection();
        DateTime validUntil = DateTime.MaxValue;
        /// 
        /// Empty constructor.
        /// 
        protected RoleDescriptor()
            : this(new Collection())
        {
        }
        /// 
        /// Constructs a role descriptor with a collection of supported protocols.
        /// 
        /// The supported protocol collection.
        protected RoleDescriptor(Collection protocolsSupported)
        {
            this.protocolsSupported = protocolsSupported;
        }
        /// 
        /// Gets the collection of .
        /// 
        public ICollection Contacts
        {
            get { return this.contacts; }
        }
        /// 
        /// Gets or sets the error url.
        /// 
        public Uri ErrorUrl
        {
            get { return this.errorUrl; }
            set { this.errorUrl = value; }
        }
        /// 
        /// Gets the collection of .
        /// 
        public ICollection Keys
        {
            get { return this.keys; }
        }
        /// 
        /// Gets or sets the .
        /// 
        public Organization Organization
        {
            get { return this.organization; }
            set { this.organization = value; }
        }
        /// 
        /// Gets the collection of protocols supported.
        /// 
        public ICollection ProtocolsSupported
        {
            get { return this.protocolsSupported; }
        }
        /// 
        /// Gets or sets the expiration time.
        /// 
        public DateTime ValidUntil
        {
            get { return this.validUntil; }
            set { this.validUntil = value; }
        }
    }
}