2 // XmlSchemaException.cs
\r
5 // Dwivedi, Ajay kumar Adwiv@Yahoo.com
\r
6 // Enomoto, Atsushi atsushi@ximian.com
\r
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using System.Globalization;
\r
31 using System.Runtime.Serialization;
\r
32 using System.Security.Permissions;
\r
34 namespace System.Xml.Schema
\r
37 /// Summary description for XmlSchemaException.
\r
40 public class XmlSchemaException : System.SystemException
\r
43 private bool hasLineInfo;
\r
44 private int lineNumber;
\r
45 private int linePosition;
\r
46 private XmlSchemaObject sourceObj;
\r
47 private string sourceUri;
\r
50 public XmlSchemaException ()
\r
51 : this ("A schema error occured.", null)
\r
55 public XmlSchemaException (string message)
\r
56 : this (message, null)
\r
61 protected XmlSchemaException(SerializationInfo info, StreamingContext context)
\r
62 : base (info, context)
\r
64 this.hasLineInfo = info.GetBoolean ("hasLineInfo");
\r
65 this.lineNumber = info.GetInt32 ("lineNumber");
\r
66 this.linePosition = info.GetInt32 ("linePosition");
\r
67 this.sourceUri = info.GetString ("sourceUri");
\r
68 this.sourceObj = info.GetValue ("sourceObj", typeof (XmlSchemaObject)) as XmlSchemaObject;
\r
72 public XmlSchemaException (string message, Exception innerException, int lineNumber, int linePosition)
\r
73 : this (message, lineNumber, linePosition, null, null, innerException)
\r
78 internal XmlSchemaException (string message, int lineNumber, int linePosition,
\r
79 XmlSchemaObject sourceObject, string sourceUri, Exception innerException)
\r
81 GetMessage (message, sourceUri, lineNumber, linePosition, sourceObject),
\r
85 this.lineNumber = lineNumber;
\r
86 this.linePosition = linePosition;
\r
87 this.sourceObj = sourceObject;
\r
88 this.sourceUri = sourceUri;
\r
91 internal XmlSchemaException (string message, object sender,
\r
92 string sourceUri, XmlSchemaObject sourceObject, Exception innerException)
\r
93 : base (GetMessage (message, sourceUri, sender, sourceObject), innerException)
\r
95 IXmlLineInfo li = sender as IXmlLineInfo;
\r
96 if (li != null && li.HasLineInfo ()) {
\r
98 this.lineNumber = li.LineNumber;
\r
99 this.linePosition = li.LinePosition;
\r
101 this.sourceObj = sourceObject;
\r
104 internal XmlSchemaException(string message, XmlSchemaObject sourceObject,
\r
105 Exception innerException)
\r
107 GetMessage (message, null, 0, 0, sourceObject),
\r
110 hasLineInfo = true;
\r
111 this.lineNumber = sourceObject.LineNumber;
\r
112 this.linePosition = sourceObject.LinePosition;
\r
113 this.sourceObj = sourceObject;
\r
114 this.sourceUri = sourceObject.SourceUri;
\r
117 public XmlSchemaException(string message, Exception innerException)
\r
119 GetMessage (message, null, 0, 0, null),
\r
125 public int LineNumber
\r
127 get{ return this.lineNumber;}
\r
129 public int LinePosition
\r
131 get{ return this.linePosition;}
\r
133 public XmlSchemaObject SourceSchemaObject
\r
135 get{ return this.sourceObj; }
\r
137 public string SourceUri
\r
139 get{ return this.sourceUri; }
\r
142 private static string GetMessage (string message, string sourceUri, object sender, XmlSchemaObject sourceObj)
\r
144 IXmlLineInfo li = sender as IXmlLineInfo;
\r
146 return GetMessage (message, sourceUri, 0, 0, sourceObj);
\r
148 return GetMessage (message, sourceUri, li.LineNumber, li.LinePosition, sourceObj);
\r
151 private static string GetMessage (string message, string sourceUri, int lineNumber, int linePosition, XmlSchemaObject sourceObj)
\r
153 string msg = "XmlSchema error: " + message;
\r
154 if (lineNumber > 0)
\r
155 msg += String.Format (CultureInfo.InvariantCulture, " XML {0} Line {1}, Position {2}.",
\r
156 (sourceUri != null && sourceUri != "") ? "URI: " + sourceUri + " ." : "",
\r
159 if (sourceObj != null)
\r
160 msg += String.Format (CultureInfo.InvariantCulture, " Related schema item SourceUri: {0}, Line {1}, Position {2}.",
\r
161 sourceObj.SourceUri, sourceObj.LineNumber, sourceObj.LinePosition);
\r
165 public override string Message {
\r
166 get { return base.Message; }
\r
171 [SecurityPermission (SecurityAction.Demand, SerializationFormatter = true)]
172 public override void GetObjectData(SerializationInfo info, StreamingContext context)
\r
174 base.GetObjectData (info, context);
\r
175 info.AddValue ("hasLineInfo", hasLineInfo);
\r
176 info.AddValue ("lineNumber", lineNumber);
\r
177 info.AddValue ("linePosition", linePosition);
\r
178 info.AddValue ("sourceUri", sourceUri);
\r
179 info.AddValue ("sourceObj", sourceObj);
\r