fix for empty markdown + rendering improvements for Bundles

This commit is contained in:
Grahame Grieve 2020-09-07 13:08:21 +10:00
parent f2f53c7872
commit 227bccbb35
4 changed files with 25 additions and 3 deletions

View File

@ -295,8 +295,7 @@ public class BundleRenderer extends ResourceRenderer {
try {
xn = rr.build(be.getResource());
} catch (Exception e) {
xn = new XhtmlNode();
xn.para().b().tx("Exception generating narrative: "+e.getMessage());
xn = makeExceptionXhtml(e, "generating narrative");
}
}
root.blockquote().getChildNodes().addAll(checkInternalLinks(b, xn.getChildNodes()));

View File

@ -58,6 +58,7 @@ import org.hl7.fhir.utilities.MarkDownProcessor;
import org.hl7.fhir.utilities.MarkDownProcessor.Dialect;
import org.hl7.fhir.utilities.Utilities;
import org.hl7.fhir.utilities.validation.ValidationOptions;
import org.hl7.fhir.utilities.xhtml.NodeType;
import org.hl7.fhir.utilities.xhtml.XhtmlNode;
import org.hl7.fhir.utilities.xhtml.XhtmlParser;
@ -1021,6 +1022,21 @@ public class DataRenderer extends Renderer {
}
public XhtmlNode makeExceptionXhtml(Exception e, String function) {
XhtmlNode xn;
xn = new XhtmlNode(NodeType.Element, "div");
xn.para().b().tx("Exception "+function+": "+e.getMessage()).addComment(getStackTrace(e));
return xn;
}
private String getStackTrace(Exception e) {
StringBuilder b = new StringBuilder();
b.append("\r\n");
for (StackTraceElement t : e.getStackTrace()) {
b.append(t.getClassName()+"."+t.getMethodName()+" ("+t.getFileName()+":"+t.getLineNumber());
b.append("\r\n");
}
return b.toString();
}
}

View File

@ -56,6 +56,12 @@ public class MarkDownProcessor {
public String process(String source, String context) {
if (source == null) {
return null;
}
if ("".equals(source)) {
return "";
}
switch (dialect) {
case DARING_FIREBALL : return Processor.process(source);
case COMMON_MARK : return processCommonMark(source);

View File

@ -161,7 +161,7 @@ public class I18nConstants {
public static final String FHIRPATH_UNKNOWN_CONSTANT = "FHIRPATH_UNKNOWN_CONSTANT";
public static final String FHIRPATH_UNKNOWN_CONTEXT = "FHIRPATH_UNKNOWN_CONTEXT";
public static final String FHIRPATH_UNKNOWN_CONTEXT_ELEMENT = "FHIRPATH_UNKNOWN_CONTEXT_ELEMENT";
public static final String FHIRPATH_UNKNOWN_NAME = "FHIRPATH_UNWKNOWN_NAME";
public static final String FHIRPATH_UNKNOWN_NAME = "FHIRPATH_UNKNOWN_NAME";
public static final String FHIRPATH_WRONG_PARAM_TYPE = "FHIRPATH_WRONG_PARAM_TYPE";
public static final String FIXED_TYPE_CHECKS_DT_ADDRESS_LINE = "Fixed_Type_Checks_DT_Address_Line";
public static final String FIXED_TYPE_CHECKS_DT_NAME_FAMILY = "Fixed_Type_Checks_DT_Name_Family";
@ -466,6 +466,7 @@ public class I18nConstants {
public static final String TYPE_SPECIFIC_CHECKS_DT_PRIMITIVE_REGEX = "Type_Specific_Checks_DT_Primitive_Regex";
public static final String TYPE_SPECIFIC_CHECKS_DT_PRIMITIVE_VALUEEXT = "Type_Specific_Checks_DT_Primitive_ValueExt";
public static final String TYPE_SPECIFIC_CHECKS_DT_PRIMITIVE_WS = "Type_Specific_Checks_DT_Primitive_WS";
public static final String TYPE_SPECIFIC_CHECKS_DT_QTY_NO_ANNOTATIONS = "TYPE_SPECIFIC_CHECKS_DT_QTY_NO_ANNOTATIONS";
public static final String TYPE_SPECIFIC_CHECKS_DT_STRING_LENGTH = "Type_Specific_Checks_DT_String_Length";
public static final String TYPE_SPECIFIC_CHECKS_DT_STRING_WS = "Type_Specific_Checks_DT_String_WS";
public static final String TYPE_SPECIFIC_CHECKS_DT_TIME_VALID = "Type_Specific_Checks_DT_Time_Valid";