1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
using System;
using System.Xml;
namespace Commons.Xml.Nvdl
{
public class NvdlException : Exception
{
public NvdlException (string message)
: base (message)
{
}
public NvdlException (string message, Exception inner)
: base (message ,inner)
{
}
internal static string FormatMessage (string message,
IXmlLineInfo lineInfo)
{
NvdlElementBase source = lineInfo as NvdlElementBase;
XmlReader reader = lineInfo as XmlReader;
if (source != null && source.HasLineInfo ())
return String.Format ("{0}. {1} ({2},{3})",
message, source.SourceUri,
source.LineNumber, source.LinePosition);
else if (lineInfo != null && lineInfo.HasLineInfo ())
return String.Format ("{0}. {3}({1},{2})",
message,
lineInfo.LineNumber,
lineInfo.LinePosition,
reader != null ? reader.BaseURI + ' ' : String.Empty);
else
return message;
}
}
public class NvdlCompileException : NvdlException
{
public NvdlCompileException (string message,
IXmlLineInfo source)
: this (message, null, source)
{
}
public NvdlCompileException (string message, Exception inner,
IXmlLineInfo source)
: base (FormatMessage (message, source), inner)
{
}
}
public class NvdlValidationException : NvdlException
{
public NvdlValidationException (string message,
IXmlLineInfo source)
: this (message, null, source)
{
}
public NvdlValidationException (string message, Exception inner,
IXmlLineInfo source)
: base (FormatMessage (message, source), inner)
{
}
}
public class NvdlInstanceValidationException : NvdlException
{
public NvdlInstanceValidationException (string message,
NvdlValidatorGenerator generator,
string nvdlLocation)
: this (message, null, generator, nvdlLocation)
{
}
public NvdlInstanceValidationException (string message, Exception inner,
NvdlValidatorGenerator generator,
string nvdlLocation)
: base (FormatMessageWithDefinition (message, nvdlLocation), inner)
{
}
// assuming that wrapped exception message usually
// contains the actual instance location info.
static string FormatMessageWithDefinition (string message, string nvdlLocation)
{
return String.Format ("{0}. Related NVDL script: {1}", message, nvdlLocation);
}
}
}
|