Separate out correct QName-bearing serialization method 49/90249/3
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 4 Jun 2020 10:54:41 +0000 (12:54 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 4 Jun 2020 11:25:30 +0000 (13:25 +0200)
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 <robert.varga@pantheon.tech>
yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java
yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java

index 05b0ab3ced1e2173323b07f151b48fc7571cb185..cb9e2ec9129713e3915ca04e839831a6e1e2ba53 100644 (file)
@@ -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();
index d193f7e21f5da48576839b409d734868922b5fe8..4e4fbf8e55b25088af2f47e6ed52a6f1f406c4f5 100644 (file)
@@ -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();
         });