From 95e5f4e731e4e805a65a9415e5acde45ed0b9925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Prunayre?= Date: Wed, 9 Dec 2020 19:07:40 +0100 Subject: [PATCH] Editor / Avoid NPE when saving invalid document for an element not existing in the model Eg. before this a ServiceIdentification with a topicCategory was returning NPE. --- core/src/main/java/org/fao/geonet/kernel/EditLib.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/fao/geonet/kernel/EditLib.java b/core/src/main/java/org/fao/geonet/kernel/EditLib.java index df86f8372ed..73cdea60895 100644 --- a/core/src/main/java/org/fao/geonet/kernel/EditLib.java +++ b/core/src/main/java/org/fao/geonet/kernel/EditLib.java @@ -655,8 +655,15 @@ private void doAddFragmentFromXpath(MetadataSchema metadataSchema, propEl.addContent(child); } else if (childHasSameTypeAsTarget) { Element parent = propEl.getParentElement(); - int index = parent.indexOf(propEl); - parent.addContent(index, child); + if (parent == null) { + LOGGER_ADD_ELEMENT.error(String.format( + " > adding fragment from XPath in element %s which has no parent. This usually means that the element is not allowed in the XSD. Check this element in the metadata record.", + propEl.getName() + )); + } else { + int index = parent.indexOf(propEl); + parent.addContent(index, child); + } } else { // Add an element of same type in the target node final Element newElement = addElement(metadataSchema, propEl, child.getQualifiedName());