//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel.Channels { using System.Runtime.Serialization; using System.Xml; using System.ServiceModel.Security; public sealed class AddressingVersion { string ns; XmlDictionaryString dictionaryNs; MessagePartSpecification signedMessageParts; string toStringFormat; string anonymous; XmlDictionaryString dictionaryAnonymous; Uri anonymousUri; Uri noneUri; string faultAction; string defaultFaultAction; static AddressingVersion none = new AddressingVersion(AddressingNoneStrings.Namespace, XD.AddressingNoneDictionary.Namespace, SR.AddressingNoneToStringFormat, new MessagePartSpecification(), null, null, null, null, null); static AddressingVersion addressing10 = new AddressingVersion(Addressing10Strings.Namespace, XD.Addressing10Dictionary.Namespace, SR.Addressing10ToStringFormat, Addressing10SignedMessageParts, Addressing10Strings.Anonymous, XD.Addressing10Dictionary.Anonymous, Addressing10Strings.NoneAddress, Addressing10Strings.FaultAction, Addressing10Strings.DefaultFaultAction); static MessagePartSpecification addressing10SignedMessageParts; static AddressingVersion addressing200408 = new AddressingVersion(Addressing200408Strings.Namespace, XD.Addressing200408Dictionary.Namespace, SR.Addressing200408ToStringFormat, Addressing200408SignedMessageParts, Addressing200408Strings.Anonymous, XD.Addressing200408Dictionary.Anonymous, null, Addressing200408Strings.FaultAction, Addressing200408Strings.DefaultFaultAction); static MessagePartSpecification addressing200408SignedMessageParts; AddressingVersion(string ns, XmlDictionaryString dictionaryNs, string toStringFormat, MessagePartSpecification signedMessageParts, string anonymous, XmlDictionaryString dictionaryAnonymous, string none, string faultAction, string defaultFaultAction) { this.ns = ns; this.dictionaryNs = dictionaryNs; this.toStringFormat = toStringFormat; this.signedMessageParts = signedMessageParts; this.anonymous = anonymous; this.dictionaryAnonymous = dictionaryAnonymous; if (anonymous != null) { this.anonymousUri = new Uri(anonymous); } if (none != null) { this.noneUri = new Uri(none); } this.faultAction = faultAction; this.defaultFaultAction = defaultFaultAction; } public static AddressingVersion WSAddressingAugust2004 { get { return addressing200408; } } public static AddressingVersion WSAddressing10 { get { return addressing10; } } public static AddressingVersion None { get { return none; } } internal string Namespace { get { return ns; } } static MessagePartSpecification Addressing10SignedMessageParts { get { if (addressing10SignedMessageParts == null) { MessagePartSpecification s = new MessagePartSpecification( new XmlQualifiedName(AddressingStrings.To, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.From, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.FaultTo, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.ReplyTo, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.MessageId, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.RelatesTo, Addressing10Strings.Namespace), new XmlQualifiedName(AddressingStrings.Action, Addressing10Strings.Namespace) ); s.MakeReadOnly(); addressing10SignedMessageParts = s; } return addressing10SignedMessageParts; } } static MessagePartSpecification Addressing200408SignedMessageParts { get { if (addressing200408SignedMessageParts == null) { MessagePartSpecification s = new MessagePartSpecification( new XmlQualifiedName(AddressingStrings.To, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.From, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.FaultTo, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.ReplyTo, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.MessageId, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.RelatesTo, Addressing200408Strings.Namespace), new XmlQualifiedName(AddressingStrings.Action, Addressing200408Strings.Namespace) ); s.MakeReadOnly(); addressing200408SignedMessageParts = s; } return addressing200408SignedMessageParts; } } internal XmlDictionaryString DictionaryNamespace { get { return dictionaryNs; } } internal string Anonymous { get { return anonymous; } } internal XmlDictionaryString DictionaryAnonymous { get { return dictionaryAnonymous; } } internal Uri AnonymousUri { get { return anonymousUri; } } internal Uri NoneUri { get { return noneUri; } } internal string FaultAction // the action for addressing faults { get { return faultAction; } } internal string DefaultFaultAction // a default string that can be used for non-addressing faults { get { return defaultFaultAction; } } internal MessagePartSpecification SignedMessageParts { get { return this.signedMessageParts; } } public override string ToString() { return SR.GetString(toStringFormat, Namespace); } } }