From d9c1c7492494b981dbe2573487e43adf12700027 Mon Sep 17 00:00:00 2001 From: Grahame Grieve Date: Tue, 21 May 2024 16:55:17 -0500 Subject: [PATCH] Fix NPEs in Liquid renderer --- .../java/org/hl7/fhir/r5/elementmodel/LanguageUtils.java | 3 ++- .../java/org/hl7/fhir/r5/renderers/LiquidRenderer.java | 9 +++++++-- .../main/java/org/hl7/fhir/r5/utils/LiquidEngine.java | 8 +++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/LanguageUtils.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/LanguageUtils.java index 928d5a726..fa957c861 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/LanguageUtils.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/LanguageUtils.java @@ -285,7 +285,8 @@ public class LanguageUtils { if (element.isPrimitive() && isTranslatable(element)) { String base = element.primitiveValue(); if (base != null) { - Set tlist = findTranslations(pathForElement(element), base, translations); + String path = pathForElement(element); + Set tlist = findTranslations(path, base, translations); for (TranslationUnit translation : tlist) { t++; if (!handleAsSpecial(parent, element, translation)) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java index 6df205328..cb5a1afa5 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/renderers/LiquidRenderer.java @@ -144,8 +144,13 @@ public class LiquidRenderer extends ResourceRenderer implements ILiquidRendering } else { x.tx(base.toString()); } - String res = new XhtmlComposer(true).compose(x).substring(5); - return res.substring(0, res.length()-6); + String res = new XhtmlComposer(true).compose(x); + res = res.substring(5); + if (res.length() < 6) { + return ""; + } else { + return res.substring(0, res.length()-6); + } } catch (FHIRFormatError e) { throw new FHIRException(e); } catch (IOException e) { diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/LiquidEngine.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/LiquidEngine.java index dcec84d4b..fb7574ec9 100644 --- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/LiquidEngine.java +++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/LiquidEngine.java @@ -231,9 +231,11 @@ public class LiquidEngine implements IEvaluationContext { StringBuilder b = new StringBuilder(); boolean first = true; for (Base i : items) { - if (first) first = false; else b.append(", "); - String s = renderingSupport != null ? renderingSupport.renderForLiquid(ctxt.externalContext, i) : null; - b.append(s != null ? s : engine.convertToString(i)); + if (i != null) { + if (first) first = false; else b.append(", "); + String s = renderingSupport != null ? renderingSupport.renderForLiquid(ctxt.externalContext, i) : null; + b.append(s != null ? s : engine.convertToString(i)); + } } return b.toString(); }