From: Robert Varga Date: Tue, 9 Sep 2014 13:47:11 +0000 (+0200) Subject: BUG-1770: emit proper namespaces X-Git-Tag: release/helium~34^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=47f7972a8891038ae911f5eb3ab2e40bd76572ad;p=yangtools.git BUG-1770: emit proper namespaces We add calls to setPrefix() and only use the calls with explicit namespace prefix to emit elements. Change-Id: Ib603567b3080388c6016ece5e34cac6a723ef8c0 Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XMLStreamNormalizedNodeStreamWriter.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XMLStreamNormalizedNodeStreamWriter.java index bec315491f..02b93a44f2 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XMLStreamNormalizedNodeStreamWriter.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XMLStreamNormalizedNodeStreamWriter.java @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.data.impl.codec.xml; +import static javax.xml.XMLConstants.DEFAULT_NS_PREFIX; + import com.google.common.base.Preconditions; import java.io.IOException; @@ -75,11 +77,11 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode try { if (value != null) { - writer.writeStartElement(ns, qname.getLocalName()); + writer.writeStartElement(DEFAULT_NS_PREFIX, qname.getLocalName(), ns); UTILS.writeValue(writer, type, value); writer.writeEndElement(); } else { - writer.writeEmptyElement(ns, qname.getLocalName()); + writer.writeEmptyElement(DEFAULT_NS_PREFIX, qname.getLocalName(), ns); } } catch (XMLStreamException e) { throw new IOException("Failed to emit element", e); @@ -88,7 +90,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode private void startElement(final QName qname) throws IOException { try { - writer.writeStartElement(qname.getNamespace().toString(), qname.getLocalName()); + writer.writeStartElement(DEFAULT_NS_PREFIX, qname.getLocalName(), qname.getNamespace().toString()); } catch (XMLStreamException e) { throw new IOException("Failed to start element", e); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtils.java index b60cf2bc19..aa379dc963 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtils.java @@ -3,16 +3,13 @@ package org.opendaylight.yangtools.yang.data.impl.codec.xml; import com.google.common.annotations.Beta; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; - import java.net.URI; import java.util.Map; import java.util.Map.Entry; - import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; - import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.AttributesContainer; import org.opendaylight.yangtools.yang.data.api.CompositeNode; @@ -94,7 +91,10 @@ public class XmlStreamUtils { final String str = XmlUtils.encodeIdentifier(prefixes, id); for (Entry e: prefixes.getPrefixes()) { - writer.writeNamespace(e.getValue(), e.getKey().toString()); + final String ns = e.getKey().toString(); + final String p = e.getValue(); + + writer.writeNamespace(p, ns); } writer.writeCharacters(str); } @@ -268,6 +268,7 @@ public class XmlStreamUtils { } } + @SuppressWarnings("deprecation") private static void write(final @Nonnull XMLStreamWriter writer, final @Nonnull IdentityrefTypeDefinition type, final @Nonnull Object value) throws XMLStreamException { if (value instanceof QName) { final QName qname = (QName) value; @@ -278,7 +279,8 @@ public class XmlStreamUtils { prefix = "x"; } - writer.writeNamespace(prefix, qname.getNamespace().toString()); + final String ns = qname.getNamespace().toString(); + writer.writeNamespace(prefix, ns); writer.writeCharacters(prefix + ':' + qname.getLocalName()); } else { LOG.debug("Value of {}:{} is not a QName but {}", type.getQName().getNamespace(), type.getQName().getLocalName(), value.getClass());