From e4508b9358ffa1bf7d0a4e839f50c127a7eb3327 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 15 May 2023 16:27:24 +0200 Subject: [PATCH] [jOOQ/jOOQ#15070] MiniJAXB should support reading simple elements as attributes --- .../main/java/org/jooq/util/jaxb/tools/MiniJAXB.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java index c9f6191c8c..ee1671ba3a 100644 --- a/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java +++ b/jOOQ/src/main/java/org/jooq/util/jaxb/tools/MiniJAXB.java @@ -253,20 +253,20 @@ public final class MiniJAXB { if (item.getNodeType() == Node.ELEMENT_NODE) { childElement = (Element) item; - child = fieldsByName.get(childElement.getTagName()); + child = fieldsByName.remove(childElement.getTagName()); if (child == null) - child = fieldsByName.get(childElement.getLocalName()); + child = fieldsByName.remove(childElement.getLocalName()); if (child != null) textContent = childElement.getTextContent(); } else if (item.getNodeType() == Node.ATTRIBUTE_NODE) { Attr childAttr = (Attr) item; - child = fieldsByName.get(childAttr.getName()); + child = fieldsByName.remove(childAttr.getName()); if (child == null) - child = fieldsByName.get(childAttr.getLocalName()); + child = fieldsByName.remove(childAttr.getLocalName()); if (child != null) textContent = childAttr.getValue(); @@ -344,6 +344,7 @@ public final class MiniJAXB { private static Map fieldsByElementName(Map, Map> fieldsByClass, Class type) { Map result = fieldsByClass.get(type); + if (result == null) { result = new HashMap(); fieldsByClass.put(type, result); @@ -369,7 +370,8 @@ public final class MiniJAXB { result.put(childElementName, child); } } - return result; + + return new HashMap<>(result); } private static DocumentBuilder builder(Class type) {