void FillHtmlizedErrorValues (ExceptionPageTemplateValues values, HtmlizedException exc, ref ExceptionPageTemplateType pageType)
{
#if TARGET_J2EE
bool isParseException = false;
bool isCompileException = false;
#else
bool isParseException = exc is ParseException;
bool isCompileException = (!isParseException && exc is CompilationException);
#endif
values.Add (ExceptionPageTemplate.Template_PageTitleName, HtmlEncode (exc.Title));
values.Add (ExceptionPageTemplate.Template_DescriptionName, HtmlEncode (exc.Description));
values.Add (ExceptionPageTemplate.Template_StackTraceName, HtmlEncode (exc.StackTrace));
values.Add (ExceptionPageTemplate.Template_ExceptionTypeName, exc.GetType ().ToString ());
values.Add (ExceptionPageTemplate.Template_ExceptionMessageName, HtmlEncode (exc.Message));
values.Add (ExceptionPageTemplate.Template_DetailsName, HtmlEncode (exc.ErrorMessage));
string origin;
if (isParseException)
origin = "Parser";
else if (isCompileException)
origin = "Compiler";
else
origin = "Other";
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionOriginName, origin);
if (exc.FileText != null) {
pageType |= ExceptionPageTemplateType.SourceError;
StringBuilder shortSource = new StringBuilder ();
StringBuilder longSource;
if (isCompileException)
longSource = new StringBuilder ();
else
longSource = null;
FormatSource (shortSource, longSource, exc);
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionShortSourceName, shortSource.ToString ());
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionLongSourceName, longSource != null ? longSource.ToString () : null);
if (exc.SourceFile != exc.FileName)
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionSourceFileName, FormatSourceFile (exc.SourceFile));
else
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionSourceFileName, FormatSourceFile (exc.FileName));
if (isParseException || isCompileException) {
int[] errorLines = exc.ErrorLines;
int numErrors = errorLines != null ? errorLines.Length : 0;
var lines = new StringBuilder ();
for (int i = 0; i < numErrors; i++) {
if (i > 0)
lines.Append (", ");
lines.Append (errorLines [i]);
}
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionErrorLinesName, lines.ToString ());
}
} else
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionSourceFileName, FormatSourceFile (exc.FileName));
#if !TARGET_J2EE
if (isCompileException) {
CompilationException cex = exc as CompilationException;
StringCollection output = cex.CompilerOutput;
if (output != null && output.Count > 0) {
pageType |= ExceptionPageTemplateType.CompilerOutput;
var sb = new StringBuilder ();
bool first = true;
foreach (string s in output) {
sb.Append (HtmlEncode (s));
if (first) {
sb.Append ("<br/>");
first = false;
}
sb.Append ("<br/>");
}
values.Add (ExceptionPageTemplate.Template_HtmlizedExceptionCompilerOutputName, sb.ToString ());
}
}
#endif
}