File: System\IdentityModel\WrappedXmlDictionaryReader.cs
Project: ndp\cdf\src\WCF\IdentityModel\System.IdentityModel.csproj (System.IdentityModel)
//-----------------------------------------------------------------------
// <copyright file="WrappedXmlDictionaryReader.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
 
namespace System.IdentityModel
{
    using System.Xml;
 
    /// <summary>
    /// This class wraps a given _reader and delegates all calls to it. 
    /// XmlDictionaryReader class does not provide a way to set the _reader
    /// Quotas on the XmlDictionaryReader.CreateDictionaryReader(XmlReader)
    /// API. This class overrides XmlDictionaryReader.Quotas property and 
    /// hence custom quotas can be specified.
    /// </summary>
    internal class WrappedXmlDictionaryReader : XmlDictionaryReader, IXmlLineInfo
    {
        private XmlReader reader;
        private XmlDictionaryReaderQuotas xmlDictionaryReaderQuotas;
 
        public WrappedXmlDictionaryReader(
            XmlReader reader,
            XmlDictionaryReaderQuotas xmlDictionaryReaderQuotas)
        {
            if (reader == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("reader");
            }
 
            if (xmlDictionaryReaderQuotas == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("xmlDictionaryReaderQuotas");
            }
 
            this.reader = reader;
            this.xmlDictionaryReaderQuotas = xmlDictionaryReaderQuotas;
        }
 
        public override int AttributeCount
        {
            get
            {
                return this.reader.AttributeCount;
            }
        }
 
        public override string BaseURI
        {
            get
            {
                return this.reader.BaseURI;
            }
        }
 
        public override bool CanReadBinaryContent
        {
            get { return this.reader.CanReadBinaryContent; }
        }
 
        public override bool CanReadValueChunk
        {
            get { return this.reader.CanReadValueChunk; }
        }
 
        public override int Depth
        {
            get
            {
                return this.reader.Depth;
            }
        }
 
        public override bool EOF
        {
            get
            {
                return this.reader.EOF;
            }
        }
 
        public override bool HasValue
        {
            get
            {
                return this.reader.HasValue;
            }
        }
 
        public override bool IsDefault
        {
            get
            {
                return this.reader.IsDefault;
            }
        }
 
        public override bool IsEmptyElement
        {
            get
            {
                return this.reader.IsEmptyElement;
            }
        }
 
        public override string LocalName
        {
            get
            {
                return this.reader.LocalName;
            }
        }
 
        public override string Name
        {
            get
            {
                return this.reader.Name;
            }
        }
 
        public override string NamespaceURI
        {
            get
            {
                return this.reader.NamespaceURI;
            }
        }
 
        public override XmlNameTable NameTable
        {
            get
            {
                return this.reader.NameTable;
            }
        }
 
        public override XmlNodeType NodeType
        {
            get
            {
                return this.reader.NodeType;
            }
        }
 
        public override string Prefix
        {
            get
            {
                return this.reader.Prefix;
            }
        }
 
        public override char QuoteChar
        {
            get
            {
                return this.reader.QuoteChar;
            }
        }
 
        public override ReadState ReadState
        {
            get
            {
                return this.reader.ReadState;
            }
        }
 
        public override string Value
        {
            get
            {
                return this.reader.Value;
            }
        }
 
        public override string XmlLang
        {
            get
            {
                return this.reader.XmlLang;
            }
        }
 
        public override XmlSpace XmlSpace
        {
            get
            {
                return this.reader.XmlSpace;
            }
        }
 
        public override Type ValueType
        {
            get
            {
                return this.reader.ValueType;
            }
        }
 
        public int LineNumber
        {
            get
            {
                IXmlLineInfo lineInfo = this.reader as IXmlLineInfo;
 
                if (lineInfo == null)
                {
                    return 1;
                }
 
                return lineInfo.LineNumber;
            }
        }
 
        public int LinePosition
        {
            get
            {
                IXmlLineInfo lineInfo = this.reader as IXmlLineInfo;
 
                if (lineInfo == null)
                {
                    return 1;
                }
 
                return lineInfo.LinePosition;
            }
        }
 
        public override XmlDictionaryReaderQuotas Quotas
        {
            get
            {
                return this.xmlDictionaryReaderQuotas;
            }
        }
 
        public override string this[int index]
        {
            get
            {
                return this.reader[index];
            }
        }
 
        public override string this[string name]
        {
            get
            {
                return this.reader[name];
            }
        }
 
        public override string this[string name, string namespaceUri]
        {
            get
            {
                return this.reader[name, namespaceUri];
            }
        }
 
        public override void Close()
        {
            this.reader.Close();
        }
 
        public override string GetAttribute(int index)
        {
            return this.reader.GetAttribute(index);
        }
 
        public override string GetAttribute(string name)
        {
            return this.reader.GetAttribute(name);
        }
 
        public override string GetAttribute(string name, string namespaceUri)
        {
            return this.reader.GetAttribute(name, namespaceUri);
        }
 
        public override bool IsStartElement(string name)
        {
            return this.reader.IsStartElement(name);
        }
 
        public override bool IsStartElement(string localName, string namespaceUri)
        {
            return this.reader.IsStartElement(localName, namespaceUri);
        }
 
        public override string LookupNamespace(string namespaceUri)
        {
            return this.reader.LookupNamespace(namespaceUri);
        }
 
        public override void MoveToAttribute(int index)
        {
            this.reader.MoveToAttribute(index);
        }
 
        public override bool MoveToAttribute(string name)
        {
            return this.reader.MoveToAttribute(name);
        }
 
        public override bool MoveToAttribute(string name, string namespaceUri)
        {
            return this.reader.MoveToAttribute(name, namespaceUri);
        }
 
        public override bool MoveToElement()
        {
            return this.reader.MoveToElement();
        }
 
        public override bool MoveToFirstAttribute()
        {
            return this.reader.MoveToFirstAttribute();
        }
 
        public override bool MoveToNextAttribute()
        {
            return this.reader.MoveToNextAttribute();
        }
 
        public override bool Read()
        {
            return this.reader.Read();
        }
 
        public override bool ReadAttributeValue()
        {
            return this.reader.ReadAttributeValue();
        }
 
        public override string ReadElementString(string name)
        {
            return this.reader.ReadElementString(name);
        }
 
        public override string ReadElementString(string localName, string namespaceUri)
        {
            return this.reader.ReadElementString(localName, namespaceUri);
        }
 
        public override string ReadInnerXml()
        {
            return this.reader.ReadInnerXml();
        }
 
        public override string ReadOuterXml()
        {
            return this.reader.ReadOuterXml();
        }
 
        public override void ReadStartElement(string name)
        {
            this.reader.ReadStartElement(name);
        }
 
        public override void ReadStartElement(string localName, string namespaceUri)
        {
            this.reader.ReadStartElement(localName, namespaceUri);
        }
 
        public override void ReadEndElement()
        {
            this.reader.ReadEndElement();
        }
 
        public override string ReadString()
        {
            return this.reader.ReadString();
        }
 
        public override void ResolveEntity()
        {
            this.reader.ResolveEntity();
        }
 
        public override int ReadElementContentAsBase64(byte[] buffer, int offset, int count)
        {
            return this.reader.ReadElementContentAsBase64(buffer, offset, count);
        }
 
        public override int ReadContentAsBase64(byte[] buffer, int offset, int count)
        {
            return this.reader.ReadContentAsBase64(buffer, offset, count);
        }
 
        public override int ReadElementContentAsBinHex(byte[] buffer, int offset, int count)
        {
            return this.reader.ReadElementContentAsBinHex(buffer, offset, count);
        }
 
        public override int ReadContentAsBinHex(byte[] buffer, int offset, int count)
        {
            return this.reader.ReadContentAsBinHex(buffer, offset, count);
        }
 
        public override int ReadValueChunk(char[] chars, int offset, int count)
        {
            return this.reader.ReadValueChunk(chars, offset, count);
        }
 
        public override bool ReadContentAsBoolean()
        {
            return this.reader.ReadContentAsBoolean();
        }
 
        public override DateTime ReadContentAsDateTime()
        {
            return this.reader.ReadContentAsDateTime();
        }
 
        public override decimal ReadContentAsDecimal()
        {
            return (decimal)this.reader.ReadContentAs(typeof(decimal), null);
        }
 
        public override double ReadContentAsDouble()
        {
            return this.reader.ReadContentAsDouble();
        }
 
        public override int ReadContentAsInt()
        {
            return this.reader.ReadContentAsInt();
        }
 
        public override long ReadContentAsLong()
        {
            return this.reader.ReadContentAsLong();
        }
 
        public override float ReadContentAsFloat()
        {
            return this.reader.ReadContentAsFloat();
        }
 
        public override string ReadContentAsString()
        {
            return this.reader.ReadContentAsString();
        }
 
        public override object ReadContentAs(Type valueType, IXmlNamespaceResolver namespaceResolver)
        {
            return this.reader.ReadContentAs(valueType, namespaceResolver);
        }
 
        public bool HasLineInfo()
        {
            IXmlLineInfo lineInfo = this.reader as IXmlLineInfo;
 
            if (lineInfo == null)
            {
                return false;
            }
 
            return lineInfo.HasLineInfo();
        }
    }
}