Message headers are now serialized and deserialized for MessageHeaderDescription.
[mono.git] / mcs / class / System.Web.Services / System.Web.Services.Protocols / SoapException.cs
index 7ae6ca87b5af89d25707b583570d4740b1ec3865..b81332a4800e3f0df15b0b5150e5f187524efd17 100644 (file)
@@ -1,12 +1,12 @@
-// \r
-// System.Web.Services.Protocols.SoapException.cs\r
-//\r
-// Author:\r
-//   Tim Coleman (tim@timcoleman.com)\r
-//   Lluis Sanchez Gual (lluis@novell.com)\r
-//\r
-// Copyright (C) Tim Coleman, 2002\r
-//\r
+// 
+// System.Web.Services.Protocols.SoapException.cs
+//
+// Author:
+//   Tim Coleman (tim@timcoleman.com)
+//   Lluis Sanchez Gual (lluis@novell.com)
+//
+// Copyright (C) Tim Coleman, 2002
+//
 
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-\r
-using System.Xml;\r
-\r
-namespace System.Web.Services.Protocols \r
-{\r
-       [Serializable]\r
-       public class SoapException : SystemException \r
-       {\r
-               #region Fields\r
-\r
-               public static readonly XmlQualifiedName ClientFaultCode = new XmlQualifiedName ("Client", "http://schemas.xmlsoap.org/soap/envelope/");\r
-               public static readonly XmlQualifiedName DetailElementName = new XmlQualifiedName ("detail");\r
-               public static readonly XmlQualifiedName MustUnderstandFaultCode = new XmlQualifiedName ("MustUnderstand", "http://schemas.xmlsoap.org/soap/envelope/");\r
-               public static readonly XmlQualifiedName ServerFaultCode = new XmlQualifiedName ("Server", "http://schemas.xmlsoap.org/soap/envelope/");\r
-               public static readonly XmlQualifiedName VersionMismatchFaultCode = new XmlQualifiedName ("VersionMismatch", "http://schemas.xmlsoap.org/soap/envelope/");\r
-\r
-               string actor;\r
-               XmlQualifiedName code;\r
-               XmlNode detail;\r
-               \r
-#if NET_2_0\r
-               string lang;\r
-               string role;\r
-               SoapFaultSubcode subcode;\r
-#endif\r
-               #endregion\r
-\r
-               #region Constructors\r
-\r
-               public SoapException (string message, XmlQualifiedName code)\r
-                       : base (message)\r
-               {\r
-                       this.code = code;\r
-               }\r
-\r
-               public SoapException (string message, XmlQualifiedName code, Exception innerException)\r
-                       : base (message, innerException)\r
-               {\r
-                       this.code = code;\r
-               }\r
-\r
-               public SoapException (string message, XmlQualifiedName code, string actor)\r
-                       : base (message)\r
-               {\r
-                       this.code = code;\r
-                       this.actor = actor;\r
-               }\r
-\r
-               public SoapException (string message, XmlQualifiedName code, string actor, Exception innerException)\r
-                       : base (message, innerException)\r
-               {\r
-                       this.code = code;\r
-                       this.actor = actor;\r
-               }\r
-\r
-               public SoapException (string message, XmlQualifiedName code, string actor, XmlNode detail)\r
-                       : base (message)\r
-               {\r
-                       this.code = code;\r
-                       this.actor = actor;\r
-                       this.detail = detail;\r
-               }\r
-\r
-               public SoapException (string message, XmlQualifiedName code, string actor, XmlNode detail, Exception innerException)\r
-                       : base (message, innerException)\r
-               {\r
-                       this.code = code;\r
-                       this.actor = actor;\r
-                       this.detail = detail;\r
-               }\r
-\r
-#if NET_2_0\r
-               public SoapException (string message, XmlQualifiedName code, SoapFaultSubcode subcode)\r
-                       : base (message)\r
-               {\r
-                       this.code = code;\r
-                       this.subcode = subcode;\r
-               }\r
-               \r
-               public SoapException (string message, XmlQualifiedName code, string actor, string role, XmlNode detail, SoapFaultSubcode subcode, Exception innerException)\r
-                       : base (message, innerException)\r
-               {\r
-                       this.code = code;\r
-                       this.subcode = subcode;\r
-                       this.detail = detail;\r
-                       this.actor = actor;\r
-                       this.role = role;\r
-               }\r
-               \r
-               public SoapException (string message, XmlQualifiedName code, string actor, string role, string lang, XmlNode detail, SoapFaultSubcode subcode, Exception innerException)\r
-               {\r
-                       this.code = code;\r
-                       this.subcode = subcode;\r
-                       this.detail = detail;\r
-                       this.actor = actor;\r
-                       this.role = role;\r
-                       this.lang = lang;\r
-               }\r
-\r
-               public static bool IsClientFaultCode (XmlQualifiedName code)\r
-               {\r
-                       if (code == ClientFaultCode) return true;\r
-                       if (code == Soap12FaultCodes.SenderFaultCode) return true;\r
-                       return false;\r
-               }\r
-\r
-               public static bool IsMustUnderstandFaultCode (XmlQualifiedName code)\r
-               {\r
-                       if (code == MustUnderstandFaultCode) return true;\r
-                       if (code == Soap12FaultCodes.MustUnderstandFaultCode) return true;\r
-                       return false;\r
-               }\r
-                               \r
-               public static bool IsServerFaultCode (XmlQualifiedName code)\r
-               {\r
-                       if (code == ServerFaultCode) return true;\r
-                       if (code == Soap12FaultCodes.ReceiverFaultCode) return true;\r
-                       return false;\r
-               }\r
-                               \r
-               public static bool IsVersionMismatchFaultCode (XmlQualifiedName code)\r
-               {\r
-                       if (code == VersionMismatchFaultCode) return true;\r
-                       if (code == Soap12FaultCodes.VersionMismatchFaultCode) return true;\r
-                       return false;\r
-               }\r
-\r
-#endif\r
-\r
-               #endregion // Constructors\r
-\r
-               #region Properties\r
-\r
-               public string Actor {\r
-                       get { return actor; }\r
-               }\r
-\r
-               public XmlQualifiedName Code {\r
-                       get { return code; }\r
-               }\r
-\r
-               public XmlNode Detail {\r
-                       get { return detail; }\r
-               }\r
-\r
-#if NET_2_0\r
-               [System.Runtime.InteropServices.ComVisible(false)]\r
-               public string Lang {\r
-                       get { return lang; }\r
-               }\r
-               \r
-               [System.Runtime.InteropServices.ComVisible(false)]\r
-               public string Role {\r
-                       get { return role; }\r
-               }\r
-               \r
-               [System.Runtime.InteropServices.ComVisible(false)]\r
-               public SoapFaultSubcode Subcode {\r
-                       get { return subcode; }\r
-               }\r
-               \r
-               // Same value as actor\r
-               [System.Runtime.InteropServices.ComVisible(false)]\r
-               public string Node {\r
-                       get { return actor; }\r
-               }\r
-#endif\r
-               #endregion // Properties\r
-       }\r
-}\r
+
+using System.IO;
+using System.Runtime.Serialization;
+using System.Xml;
+
+namespace System.Web.Services.Protocols 
+{
+#if NET_2_0
+       [Serializable]
+#endif
+       public class SoapException : SystemException 
+       {
+               #region Fields
+
+               public static readonly XmlQualifiedName ClientFaultCode = new XmlQualifiedName ("Client", "http://schemas.xmlsoap.org/soap/envelope/");
+               public static readonly XmlQualifiedName DetailElementName = new XmlQualifiedName ("detail");
+               public static readonly XmlQualifiedName MustUnderstandFaultCode = new XmlQualifiedName ("MustUnderstand", "http://schemas.xmlsoap.org/soap/envelope/");
+               public static readonly XmlQualifiedName ServerFaultCode = new XmlQualifiedName ("Server", "http://schemas.xmlsoap.org/soap/envelope/");
+               public static readonly XmlQualifiedName VersionMismatchFaultCode = new XmlQualifiedName ("VersionMismatch", "http://schemas.xmlsoap.org/soap/envelope/");
+
+               string actor;
+               XmlQualifiedName code;
+               XmlNode detail;
+               
+#if NET_2_0
+               string lang;
+               string role;
+               SoapFaultSubCode subcode;
+#endif
+               #endregion
+
+               #region Constructors
+
+#if NET_2_0
+               public SoapException ()
+                       : this ("SOAP error", XmlQualifiedName.Empty)
+               {
+               }
+#endif
+
+               public SoapException (string message, XmlQualifiedName code)
+                       : base (message)
+               {
+                       this.code = code;
+               }
+
+               public SoapException (string message, XmlQualifiedName code, Exception innerException)
+                       : base (message, innerException)
+               {
+                       this.code = code;
+               }
+
+               public SoapException (string message, XmlQualifiedName code, string actor)
+                       : base (message)
+               {
+                       this.code = code;
+                       this.actor = actor;
+               }
+
+               public SoapException (string message, XmlQualifiedName code, string actor, Exception innerException)
+                       : base (message, innerException)
+               {
+                       this.code = code;
+                       this.actor = actor;
+               }
+
+               public SoapException (string message, XmlQualifiedName code, string actor, XmlNode detail)
+                       : base (message)
+               {
+                       this.code = code;
+                       this.actor = actor;
+                       this.detail = detail;
+               }
+
+               public SoapException (string message, XmlQualifiedName code, string actor, XmlNode detail, Exception innerException)
+                       : base (message, innerException)
+               {
+                       this.code = code;
+                       this.actor = actor;
+                       this.detail = detail;
+               }
+
+#if NET_2_0
+               public SoapException (string message, XmlQualifiedName code, SoapFaultSubCode subcode)
+                       : base (message)
+               {
+                       this.code = code;
+                       this.subcode = subcode;
+               }
+               
+               public SoapException (string message, XmlQualifiedName code, string actor, string role, XmlNode detail, SoapFaultSubCode subcode, Exception innerException)
+                       : base (message, innerException)
+               {
+                       this.code = code;
+                       this.subcode = subcode;
+                       this.detail = detail;
+                       this.actor = actor;
+                       this.role = role;
+               }
+               
+               public SoapException (string message, XmlQualifiedName code, string actor, string role, string lang, XmlNode detail, SoapFaultSubCode subcode, Exception innerException)
+                       : this (message, code, actor, role, detail, subcode, innerException)
+               {
+                       this.lang = lang;
+               }
+
+#if NET_2_0
+               protected SoapException (SerializationInfo info, StreamingContext context)
+                       : base (info, context)
+               {
+                       actor = info.GetString ("actor");
+                       code = (XmlQualifiedName) info.GetValue ("code", typeof (XmlQualifiedName));
+                       detail = new XmlDocument ().ReadNode (
+                               XmlReader.Create (new StringReader (info.GetString ("detailString"))));
+                       lang = info.GetString ("lang");
+                       role = info.GetString ("role");
+                       subcode = (SoapFaultSubCode) info.GetValue ("subcode", typeof (SoapFaultSubCode));
+               }
+
+               public override void GetObjectData (SerializationInfo info, StreamingContext context)
+               {
+                       base.GetObjectData (info, context);
+                       info.AddValue ("actor", actor);
+                       info.AddValue ("code", code);
+                       info.AddValue ("detailString", detail.OuterXml);
+                       info.AddValue ("lang", lang);
+                       info.AddValue ("role", role);
+                       info.AddValue ("subcode", subcode);
+               }
+#endif
+
+               public static bool IsClientFaultCode (XmlQualifiedName code)
+               {
+                       if (code == ClientFaultCode) return true;
+                       if (code == Soap12FaultCodes.SenderFaultCode) return true;
+                       return false;
+               }
+
+               public static bool IsMustUnderstandFaultCode (XmlQualifiedName code)
+               {
+                       if (code == MustUnderstandFaultCode) return true;
+                       if (code == Soap12FaultCodes.MustUnderstandFaultCode) return true;
+                       return false;
+               }
+                               
+               public static bool IsServerFaultCode (XmlQualifiedName code)
+               {
+                       if (code == ServerFaultCode) return true;
+                       if (code == Soap12FaultCodes.ReceiverFaultCode) return true;
+                       return false;
+               }
+                               
+               public static bool IsVersionMismatchFaultCode (XmlQualifiedName code)
+               {
+                       if (code == VersionMismatchFaultCode) return true;
+                       if (code == Soap12FaultCodes.VersionMismatchFaultCode) return true;
+                       return false;
+               }
+
+#endif
+
+               #endregion // Constructors
+
+               #region Properties
+
+               public string Actor {
+                       get { return actor; }
+               }
+
+               public XmlQualifiedName Code {
+                       get { return code; }
+               }
+
+               public XmlNode Detail {
+                       get { return detail; }
+               }
+
+#if NET_2_0
+               [System.Runtime.InteropServices.ComVisible(false)]
+               public string Lang {
+                       get { return lang; }
+               }
+               
+               [System.Runtime.InteropServices.ComVisible(false)]
+               public string Role {
+                       get { return role; }
+               }
+               
+               [System.Runtime.InteropServices.ComVisible(false)]
+               public SoapFaultSubCode SubCode {
+                       get { return subcode; }
+               }
+               
+               // Same value as actor
+               [System.Runtime.InteropServices.ComVisible(false)]
+               public string Node {
+                       get { return actor; }
+               }
+#endif
+               #endregion // Properties
+       }
+}