2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.XML / System.Xml.Xsl / XsltException.cs
index 7adfd5d3580cbd3f29fbe46d6e81072ce8d79566..7af106a470b4339123a37d5b67359a6302a367b4 100644 (file)
 using System;\r
 using System.Runtime.Serialization;\r
 using System.Xml.XPath;\r
+using System.Security.Permissions;\r
 \r
 namespace System.Xml.Xsl\r
 {\r
        [Serializable]\r
        public class XsltException : SystemException\r
        {\r
+               static string CreateMessage (string message, XPathNavigator nav)\r
+               {\r
+                       IXmlLineInfo li = nav as IXmlLineInfo;\r
+                       int lineNumber = li != null ? li.LineNumber : 0;\r
+                       int linePosition = li != null ? li.LinePosition : 0;\r
+                       string sourceUri = nav != null ? nav.BaseURI : String.Empty;\r
+                       return CreateMessage (lineNumber, linePosition, sourceUri, message);\r
+               }\r
+\r
+               static string CreateMessage (int lineNumber, int linePosition, string sourceUri, string msg)\r
+               {\r
+                       if (sourceUri != null)\r
+                               msg += " " + sourceUri;\r
+                       if (lineNumber != 0)\r
+                               msg += " line " + lineNumber;\r
+                       if (linePosition != 0)\r
+                               msg += ", position " + linePosition;\r
+                       return msg;\r
+               }\r
+\r
                #region Fields\r
 \r
                int lineNumber;\r
@@ -49,6 +70,18 @@ namespace System.Xml.Xsl
 \r
                #region Constructors\r
 \r
+#if NET_2_0\r
+               public XsltException ()\r
+                       : base (String.Empty, null)\r
+               {\r
+               }\r
+\r
+               public XsltException (string message)\r
+                       : base (message, null)\r
+               {\r
+               }\r
+#endif\r
+\r
                public XsltException (string message, Exception innerException)\r
                        : base (message, innerException)\r
                {\r
@@ -63,7 +96,7 @@ namespace System.Xml.Xsl
                }
 
                internal XsltException (string message, Exception innerException, int lineNumber, int linePosition, string sourceUri)
-                       : base (message, innerException)\r
+                       : base (CreateMessage (lineNumber, linePosition, sourceUri, message), innerException)\r
                {\r
                        this.lineNumber = lineNumber;\r
                        this.linePosition = linePosition;\r
@@ -71,7 +104,7 @@ namespace System.Xml.Xsl
                }\r
 \r
                internal XsltException (string message, Exception innerException, XPathNavigator nav)
-                       : base (message, innerException)\r
+                       : base (CreateMessage (message, nav), innerException)\r
                {\r
                        IXmlLineInfo li = nav as IXmlLineInfo;\r
                        this.lineNumber = li != null ? li.LineNumber : 0;\r
@@ -91,6 +124,8 @@ namespace System.Xml.Xsl
                        get { return linePosition; }\r
                }\r
 \r
+#if NET_2_0\r
+#else\r
                public override string Message {\r
                        get {\r
                                string msg = base.Message;\r
@@ -103,6 +138,7 @@ namespace System.Xml.Xsl
                                return msg;\r
                        }\r
                }\r
+#endif\r
 \r
                public string SourceUri {\r
                        get { return sourceUri; }\r
@@ -112,6 +148,10 @@ namespace System.Xml.Xsl
 \r
                #region Methods\r
 \r
+#if NET_2_0\r
+               [SecurityPermission (SecurityAction.LinkDemand,\r
+                       Flags=SecurityPermissionFlag.SerializationFormatter)]\r
+#endif\r
                public override void GetObjectData (SerializationInfo info, StreamingContext context)\r
                {\r
                        base.GetObjectData (info, context);\r