Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

93 lines
2.2 KiB
C#

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);
}
}
}