X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fcodec%2Fxml%2FXMLStreamNormalizedNodeStreamWriter.java;h=4cfe0c3c39ade04f3611c7306ce929953e03c829;hb=refs%2Fchanges%2F11%2F33611%2F2;hp=66b36fc71f988e8b6bb379881b4a2b2cb7b1aeda;hpb=37af625ff667533daeee98aec9240ed85c3fb7f5;p=yangtools.git 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 66b36fc71f..4cfe0c3c39 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 @@ -13,7 +13,6 @@ import java.io.IOException; import java.io.StringWriter; import java.util.Map; import javax.xml.XMLConstants; -import java.io.StringWriter; import javax.xml.namespace.NamespaceContext; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; @@ -41,7 +40,6 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.w3c.dom.Element; /** @@ -55,7 +53,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode private final XMLStreamWriter writer; private final SchemaTracker tracker; private final XmlStreamUtils streamUtils; - private RandomPrefix randomPrefix; + private final RandomPrefix randomPrefix; private XMLStreamNormalizedNodeStreamWriter(final XMLStreamWriter writer, final SchemaContext context, final SchemaPath path) { this.writer = Preconditions.checkNotNull(writer); @@ -80,6 +78,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode * * @param writer Output {@link XMLStreamWriter} * @param context Associated {@link SchemaContext}. + * @param path path * * @return A new {@link NormalizedNodeStreamWriter} */ @@ -87,7 +86,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode return new XMLStreamNormalizedNodeStreamWriter(writer, context, path); } - private void writeStartElement( QName qname) throws XMLStreamException { + private void writeStartElement(final QName qname) throws XMLStreamException { String ns = qname.getNamespace().toString(); writer.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, qname.getLocalName(), ns); if(writer.getNamespaceContext() != null) { @@ -98,23 +97,11 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode } } - private void writeElement(final QName qname, final TypeDefinition type, final Object value) throws IOException { - try { - writeStartElement(qname); - if (value != null) { - streamUtils.writeValue(writer, type, value); - } - writer.writeEndElement(); - } catch (XMLStreamException e) { - throw new IOException("Failed to emit element", e); - } - } - private void writeElement(final QName qname, final SchemaNode schemaNode, final Object value) throws IOException { try { writeStartElement(qname); if (value != null) { - streamUtils.writeValue(writer, schemaNode, value); + streamUtils.writeValue(writer, schemaNode, value, qname.getModule()); } writer.writeEndElement(); } catch (XMLStreamException e) { @@ -125,9 +112,10 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode private void writeElement(final QName qname, final SchemaNode schemaNode, final Object value, final Map attributes) throws IOException { try { writeStartElement(qname); + writeAttributes(attributes); if (value != null) { - streamUtils.writeValue(writer, schemaNode, value); + streamUtils.writeValue(writer, schemaNode, value, qname.getModule()); } writer.writeEndElement(); } catch (XMLStreamException e) { @@ -165,25 +153,31 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode } @Override - public void leafSetEntryNode(final Object value, final Map attributes) throws IOException, IllegalArgumentException { + public void leafSetEntryNode(final QName name, final Object value, final Map attributes) throws IOException { final LeafListSchemaNode schema = tracker.leafSetEntryNode(); writeElement(schema.getQName(), schema, value, attributes); } @Override - public void startContainerNode(final NodeIdentifier name, final int childSizeHint, final Map attributes) throws IOException, IllegalArgumentException { + public void startContainerNode(final NodeIdentifier name, final int childSizeHint, final Map attributes) throws IOException { startContainerNode(name, childSizeHint); writeAttributes(attributes); } @Override - public void startUnkeyedListItem(final NodeIdentifier name, final int childSizeHint, final Map attributes) throws IOException, IllegalStateException { + public void startYangModeledAnyXmlNode(final NodeIdentifier name, final int childSizeHint, final Map attributes) throws IOException { + startYangModeledAnyXmlNode(name, childSizeHint); + writeAttributes(attributes); + } + + @Override + public void startUnkeyedListItem(final NodeIdentifier name, final int childSizeHint, final Map attributes) throws IOException { startUnkeyedListItem(name, childSizeHint); writeAttributes(attributes); } @Override - public void startMapEntryNode(final NodeIdentifierWithPredicates identifier, final int childSizeHint, final Map attributes) throws IOException, IllegalArgumentException { + public void startMapEntryNode(final NodeIdentifierWithPredicates identifier, final int childSizeHint, final Map attributes) throws IOException { startMapEntryNode(identifier, childSizeHint); writeAttributes(attributes); } @@ -192,6 +186,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode for (final Map.Entry qNameStringEntry : attributes.entrySet()) { try { final String namespace = qNameStringEntry.getKey().getNamespace().toString(); + if(Strings.isNullOrEmpty(namespace)) { writer.writeAttribute(qNameStringEntry.getKey().getLocalName(), qNameStringEntry.getValue()); } else { @@ -210,11 +205,16 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode } @Override - public void leafSetEntryNode(final Object value) throws IOException { + public void leafSetEntryNode(final QName name, final Object value) throws IOException { final LeafListSchemaNode schema = tracker.leafSetEntryNode(); writeElement(schema.getQName(), schema, value); } + @Override + public void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint) { + tracker.startLeafSet(name); + } + @Override public void startContainerNode(final NodeIdentifier name, final int childSizeHint) throws IOException { final SchemaNode schema = tracker.startContainerNode(name); @@ -278,6 +278,12 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode } } + @Override + public void startYangModeledAnyXmlNode(final NodeIdentifier name, final int childSizeHint) throws IOException { + final SchemaNode schema = tracker.startYangModeledAnyXmlNode(name); + startElement(schema.getQName()); + } + public static String toString(final Element xml) { try { final Transformer transformer = TransformerFactory.newInstance().newTransformer(); @@ -503,7 +509,7 @@ public final class XMLStreamNormalizedNodeStreamWriter implements NormalizedNode } @Override - public Object getProperty(final String name) throws IllegalArgumentException { + public Object getProperty(final String name) { return writer.getProperty(name); } }