UnrecognizedPolicyAssertionElement.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Configuration / UnrecognizedPolicyAssertionElement.cs / 1 / UnrecognizedPolicyAssertionElement.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

namespace System.ServiceModel.Configuration 
{
    using System.ComponentModel; 
    using System.Configuration; 
    using System.Globalization;
    using System.Text; 
    using System.Xml;
    using System.ServiceModel.Channels;
    using System.Collections.Generic;
    using System.Collections.ObjectModel; 
    using System.ServiceModel.Description;
    using System.Diagnostics; 
 
    internal sealed partial class UnrecognizedPolicyAssertionElement : BindingElementExtensionElement
    { 
        XmlQualifiedName wsdlBinding;
        ICollection bindingAsserions;
        IDictionary> operationAssertions;
        IDictionary> messageAssertions; 

 
        public override Type BindingElementType 
        {
            get { return typeof(UnrecognizedAssertionsBindingElement); } 
        }

        public override void CopyFrom(ServiceModelExtensionElement from)
        { 
            base.CopyFrom(from);
 
            UnrecognizedPolicyAssertionElement source = (UnrecognizedPolicyAssertionElement)from; 
#pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
            this.wsdlBinding = source.wsdlBinding; 
            this.bindingAsserions = source.bindingAsserions;
            this.operationAssertions = source.operationAssertions;
            this.messageAssertions = source.messageAssertions;
        } 

        protected internal override BindingElement CreateBindingElement() 
        { 
            return new UnrecognizedAssertionsBindingElement(XmlQualifiedName.Empty, null);
        } 

        protected internal override void InitializeFrom(BindingElement bindingElement)
        {
            base.InitializeFrom(bindingElement); 
            UnrecognizedAssertionsBindingElement binding = (UnrecognizedAssertionsBindingElement)bindingElement;
 
            this.wsdlBinding = binding.WsdlBinding; 
            this.bindingAsserions = binding.BindingAsserions;
            this.operationAssertions = binding.OperationAssertions; 
            this.messageAssertions = binding.MessageAssertions;
        }

        protected override bool SerializeToXmlElement(XmlWriter writer, String elementName) 
        {
            XmlDocument document = new XmlDocument(); 
            if (writer != null && this.bindingAsserions != null && this.bindingAsserions.Count > 0) 
            {
                int indent = 1; 
                XmlWriterSettings settings = WriterSettings(writer);
                DiagnosticUtility.DebugAssert(this.wsdlBinding != null, "");
                WriteComment(SR.GetString(SR.UnrecognizedBindingAssertions1, this.wsdlBinding.Namespace), indent, writer, settings);
                WriteComment(String.Format(CultureInfo.InvariantCulture, "", this.wsdlBinding.Name), indent, writer, settings); 
                indent++;
                foreach(XmlElement assertion in this.bindingAsserions) 
                { 
                    WriteComment(ToString(assertion, document), indent, writer, settings);
                } 
                if (this.operationAssertions == null || this.operationAssertions.Count == 0)
                    return true;

                foreach (OperationDescription operation in this.operationAssertions.Keys) 
                {
                    WriteComment(String.Format(CultureInfo.InvariantCulture, "", operation.Name), indent, writer, settings); 
                    indent++; 
                    foreach (XmlElement assertion in this.operationAssertions[operation])
                    { 
                        WriteComment(ToString(assertion, document), indent, writer, settings);
                    }

                    if (this.messageAssertions == null || this.messageAssertions.Count == 0) 
                        return true;
 
                    foreach (MessageDescription message in operation.Messages) 
                    {
                        ICollection assertions; 
                        if (this.messageAssertions.TryGetValue(message, out assertions))
                        {
                            if (message.Direction == MessageDirection.Input)
                                WriteComment("",  indent, writer, settings); 
                            else if (message.Direction == MessageDirection.Output)
                                WriteComment("", indent, writer, settings); 
                            foreach (XmlElement assertion in assertions) 
                            {
                                WriteComment(ToString(assertion, document), indent + 1, writer, settings); 
                            }
                        }
                    }
                } 
                return true;
            } 
            return false; 
        }
 
        protected override void Unmerge(ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
        {
            if (sourceElement is UnrecognizedPolicyAssertionElement)
            { 
                this.wsdlBinding = ((UnrecognizedPolicyAssertionElement)sourceElement).wsdlBinding;
                this.bindingAsserions = ((UnrecognizedPolicyAssertionElement)sourceElement).bindingAsserions; 
                this.operationAssertions = ((UnrecognizedPolicyAssertionElement)sourceElement).operationAssertions; 
                this.messageAssertions = ((UnrecognizedPolicyAssertionElement)sourceElement).messageAssertions;
            } 
            base.Unmerge(sourceElement, parentElement, saveMode);
        }

        string ToString(XmlElement e, XmlDocument document) 
        {
            XmlElement top = document.CreateElement(e.Prefix, e.LocalName, e.NamespaceURI); 
            top.InsertBefore(document.CreateTextNode(".."), null); 
            return top.OuterXml;
        } 

        void WriteComment(string text, int indent, XmlWriter writer, XmlWriterSettings settings)
        {
            if (settings.Indent) 
            {
                // indent is always > 0 
                StringBuilder sb = new StringBuilder(); 
                for (int i = 0; i < indent; i++)
                { 
                    sb.Append(settings.IndentChars);
                }
                sb.Append(text);
                sb.Append(settings.IndentChars); 
                text = sb.ToString();
            } 
            writer.WriteComment(text); 
        }
 
        XmlWriterSettings WriterSettings(XmlWriter writer)
        {
            if (writer.Settings == null)
            { 
                // V1 writers
                XmlWriterSettings settings = new XmlWriterSettings(); 
                XmlTextWriter xmlTextWriter = writer as XmlTextWriter; 
                if (xmlTextWriter != null)
                { 
                    settings.Indent = xmlTextWriter.Formatting == Formatting.Indented;
                    if (settings.Indent && xmlTextWriter.Indentation > 0)
                    {
                        StringBuilder sb = new StringBuilder(xmlTextWriter.Indentation); 
                        for (int i = 0; i < xmlTextWriter.Indentation; i++)
                            sb.Append(xmlTextWriter.IndentChar); 
                        settings.IndentChars = sb.ToString(); 
                    }
                } 
                return settings;
            }
            return writer.Settings;
        } 
    }
} 
 

 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK