From 7176c6b8f99f4d434634ae941a34c69397f253c1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 4 Jun 2020 12:54:41 +0200 Subject: [PATCH] Separate out correct QName-bearing serialization method We want to start deprecating .toString()-based codec, hence we want to separate the happy path out. JIRA: YANGTOOLS-1108 Change-Id: Ic5fa79c0649a73583eac4c043bd4c8b4b6b60bc0 Signed-off-by: Robert Varga --- .../data/codec/xml/XMLStreamWriterUtils.java | 27 ++++++++++--------- .../data/codec/xml/XmlStreamUtilsTest.java | 6 ++--- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java index 05b0ab3ced..cb9e2ec912 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java @@ -88,20 +88,23 @@ abstract class XMLStreamWriterUtils { } @VisibleForTesting - static String encode(final @NonNull ValueWriter writer, final @NonNull IdentityrefTypeDefinition type, - final @NonNull Object value, final QNameModule parent) throws XMLStreamException { - if (value instanceof QName) { - final QName qname = (QName) value; + static String encode(final @NonNull ValueWriter writer, final @NonNull QName qname, final QNameModule parent) + throws XMLStreamException { + //in case parent is present and same as element namespace write value without namespace + if (qname.getNamespace().equals(parent.getNamespace())) { + return qname.getLocalName(); + } - //in case parent is present and same as element namespace write value without namespace - if (qname.getNamespace().equals(parent.getNamespace())) { - return qname.getLocalName(); - } + final String ns = qname.getNamespace().toString(); + final String prefix = "x"; + writer.writeNamespace(prefix, ns); + return prefix + ':' + qname.getLocalName(); + } - final String ns = qname.getNamespace().toString(); - final String prefix = "x"; - writer.writeNamespace(prefix, ns); - return prefix + ':' + qname.getLocalName(); + private static String encode(final @NonNull ValueWriter writer, final @NonNull IdentityrefTypeDefinition type, + final @NonNull Object value, final QNameModule parent) throws XMLStreamException { + if (value instanceof QName) { + return encode(writer, (QName) value, parent); } final QName qname = type.getQName(); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java index d193f7e21f..4e4fbf8e55 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java @@ -73,7 +73,7 @@ public class XmlStreamUtilsTest { String xmlAsString = createXml(writer -> { writer.writeStartElement("element"); final StreamWriterFacade facade = new StreamWriterFacade(writer); - facade.writeCharacters(XMLStreamWriterUtils.encode(facade, null, QName.create(parent, "identity"), parent)); + facade.writeCharacters(XMLStreamWriterUtils.encode(facade, QName.create(parent, "identity"), parent)); facade.flush(); writer.writeEndElement(); }); @@ -83,8 +83,8 @@ public class XmlStreamUtilsTest { xmlAsString = createXml(writer -> { writer.writeStartElement("elementDifferent"); final StreamWriterFacade facade = new StreamWriterFacade(writer); - facade.writeCharacters(XMLStreamWriterUtils.encode(facade, null, QName.create("different:namespace", - "identity"), parent)); + facade.writeCharacters(XMLStreamWriterUtils.encode(facade, QName.create("different:namespace", "identity"), + parent)); facade.flush(); writer.writeEndElement(); }); -- 2.36.6