//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.ServiceModel { using System.Xml; using System.ServiceModel; using System.ServiceModel.Description; using System.Xml.Schema; using System.Xml.Serialization; using System.Runtime.Serialization; public class FaultCode { FaultCode subCode; string name; string ns; EnvelopeVersion version; public FaultCode(string name) : this(name, "", null) { } public FaultCode(string name, FaultCode subCode) : this(name, "", subCode) { } public FaultCode(string name, string ns) : this(name, ns, null) { } public FaultCode(string name, string ns, FaultCode subCode) { if (name == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("name")); if (name.Length == 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("name")); if (!string.IsNullOrEmpty(ns)) NamingHelper.CheckUriParameter(ns, "ns"); this.name = name; this.ns = ns; this.subCode = subCode; if (ns == Message12Strings.Namespace) this.version = EnvelopeVersion.Soap12; else if (ns == Message11Strings.Namespace) this.version = EnvelopeVersion.Soap11; else if (ns == MessageStrings.Namespace) this.version = EnvelopeVersion.None; else this.version = null; } public bool IsPredefinedFault { get { return ns.Length == 0 || version != null; } } public bool IsSenderFault { get { if (IsPredefinedFault) return name == (this.version ?? EnvelopeVersion.Soap12).SenderFaultName; return false; } } public bool IsReceiverFault { get { if (IsPredefinedFault) return name == (this.version ?? EnvelopeVersion.Soap12).ReceiverFaultName; return false; } } public string Namespace { get { return ns; } } public string Name { get { return name; } } public FaultCode SubCode { get { return subCode; } } public static FaultCode CreateSenderFaultCode(FaultCode subCode) { return new FaultCode("Sender", subCode); } public static FaultCode CreateSenderFaultCode(string name, string ns) { return CreateSenderFaultCode(new FaultCode(name, ns)); } public static FaultCode CreateReceiverFaultCode(FaultCode subCode) { if (subCode == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("subCode")); return new FaultCode("Receiver", subCode); } public static FaultCode CreateReceiverFaultCode(string name, string ns) { return CreateReceiverFaultCode(new FaultCode(name, ns)); } } }