import javax.xml.stream.XMLStreamReader;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
public static void init() throws IOException, URISyntaxException, ReactorException, SAXException,
XMLStreamException, ParserConfigurationException {
schemaContext = YangParserTestUtils.parseYangSources("/yang-modeled-anyxml/yang");
+ final Module bazModule = schemaContext.findModuleByName("baz", null);
+ final ContainerSchemaNode bazCont = (ContainerSchemaNode) bazModule.getDataChildByName(
+ QName.create(bazModule.getQNameModule(), "baz"));
+ assertNotNull(bazCont);
final InputStream resourceAsStream = YangModeledAnyXmlSupportTest.class.getResourceAsStream(
"/yang-modeled-anyxml/xml/baz.xml");
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, bazCont);
xmlParser.parse(reader);
assertNotNull(result.getResult());
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz">
- <baz>
- <my-container-1>
- <my-leaf-1>value1</my-leaf-1>
- </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- </my-container-2>
+<baz xmlns="baz">
+ <my-container-1>
+ <my-leaf-1>value1</my-leaf-1>
+ </my-container-1>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ </my-container-2>
- <my-anyxml-data>
- <inner-container>
- <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
- </inner-container>
- <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
- </my-anyxml-data>
- </baz>
-</root>
\ No newline at end of file
+ <my-anyxml-data>
+ <inner-container>
+ <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
+ </my-anyxml-data>
+</baz>
\ No newline at end of file
import org.opendaylight.yangtools.yang.data.util.AbstractNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.AnyXmlNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.CompositeNodeDataWithSchema;
+import org.opendaylight.yangtools.yang.data.util.ContainerNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.LeafListEntryNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.LeafListNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.LeafNodeDataWithSchema;
import org.opendaylight.yangtools.yang.data.util.ParserStreamUtils;
import org.opendaylight.yangtools.yang.data.util.RpcAsContainer;
import org.opendaylight.yangtools.yang.data.util.SimpleNodeDataWithSchema;
+import org.opendaylight.yangtools.yang.data.util.YangModeledAnyXmlNodeDataWithSchema;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
public XmlParserStream parse(final XMLStreamReader reader) throws XMLStreamException, URISyntaxException,
IOException, ParserConfigurationException, SAXException {
if (reader.hasNext()) {
- final CompositeNodeDataWithSchema compositeNodeDataWithSchema = new CompositeNodeDataWithSchema(parentNode);
reader.nextTag();
- read(reader, compositeNodeDataWithSchema, reader.getLocalName());
- compositeNodeDataWithSchema.write(writer);
+ final AbstractNodeDataWithSchema nodeDataWithSchema;
+ if (parentNode instanceof ContainerSchemaNode) {
+ nodeDataWithSchema = new ContainerNodeDataWithSchema(parentNode);
+ } else if (parentNode instanceof ListSchemaNode) {
+ nodeDataWithSchema = new ListNodeDataWithSchema(parentNode);
+ } else if (parentNode instanceof YangModeledAnyXmlSchemaNode) {
+ nodeDataWithSchema = new YangModeledAnyXmlNodeDataWithSchema((YangModeledAnyXmlSchemaNode) parentNode);
+ } else if (parentNode instanceof AnyXmlSchemaNode) {
+ nodeDataWithSchema = new AnyXmlNodeDataWithSchema(parentNode);
+ } else if (parentNode instanceof LeafSchemaNode) {
+ nodeDataWithSchema = new LeafNodeDataWithSchema(parentNode);
+ } else if (parentNode instanceof LeafListSchemaNode) {
+ nodeDataWithSchema = new LeafListNodeDataWithSchema(parentNode);
+ } else {
+ throw new IllegalStateException("Unsupported schema node type " + parentNode.getClass() + ".");
+ }
+
+ read(reader, nodeDataWithSchema, reader.getLocalName());
+ nodeDataWithSchema.write(writer);
}
return this;
if (parent instanceof LeafNodeDataWithSchema || parent instanceof LeafListEntryNodeDataWithSchema) {
setValue(parent, in.getElementText().trim(), in.getNamespaceContext());
- in.nextTag();
+ if (isNextEndDocument(in)) {
+ return;
+ }
+
+ if (!isAtElement(in)) {
+ in.nextTag();
+ }
return;
}
String xmlElementName = in.getLocalName();
while (xmlElementName.equals(parent.getSchema().getQName().getLocalName())) {
read(in, newEntryNode(parent), rootElement);
+ if (in.getEventType() == XMLStreamConstants.END_DOCUMENT) {
+ break;
+ }
xmlElementName = in.getLocalName();
}
if (parent instanceof AnyXmlNodeDataWithSchema) {
setValue(parent, readAnyXmlValue(in), in.getNamespaceContext());
- in.nextTag();
+ if (isNextEndDocument(in)) {
+ return;
+ }
+
+ if (!isAtElement(in)) {
+ in.nextTag();
+ }
+
return;
}
final Set<String> namesakes = new HashSet<>();
while (in.hasNext()) {
final String xmlElementName = in.getLocalName();
- if (rootElement.equals(xmlElementName)) {
- break;
- }
DataSchemaNode parentSchema = parent.getSchema();
final String parentSchemaName = parentSchema.getQName().getLocalName();
if (parentSchemaName.equals(xmlElementName)
&& in.getEventType() == XMLStreamConstants.END_ELEMENT) {
- in.nextTag();
+ if (isNextEndDocument(in)) {
+ break;
+ }
+
+ if (!isAtElement(in)) {
+ in.nextTag();
+ }
+ break;
+ }
+
+ if (in.isEndElement() && rootElement.equals(xmlElementName)) {
break;
}
}
break;
case XMLStreamConstants.END_ELEMENT:
- in.nextTag();
+ if (isNextEndDocument(in)) {
+ break;
+ }
+
+ if (!isAtElement(in)) {
+ in.nextTag();
+ }
break;
default:
break;
}
}
+ private static boolean isNextEndDocument(final XMLStreamReader in) throws XMLStreamException {
+ return in.next() == XMLStreamConstants.END_DOCUMENT;
+ }
+
+ private static boolean isAtElement(final XMLStreamReader in) {
+ return in.getEventType() == XMLStreamConstants.START_ELEMENT
+ || in.getEventType() == XMLStreamConstants.END_ELEMENT;
+ }
+
private void setValue(final AbstractNodeDataWithSchema parent, final String value, final NamespaceContext nsContext)
throws ParserConfigurationException, SAXException, IOException {
Preconditions.checkArgument(parent instanceof SimpleNodeDataWithSchema, "Node %s is not a simple type",
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
private void testInputXML(final String xmlPath, final String expectedValue) throws Exception {
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(xmlPath);
+ final Module fooModule = schemaContext.getModules().iterator().next();
+ final ContainerSchemaNode rootCont = (ContainerSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "root"));
+ assertNotNull(rootCont);
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, rootCont);
xmlParser.parse(reader);
assertNotNull(result.getResult());
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setNormalize(true);
- String expectedXMLString = toString(doc.getDocumentElement().getElementsByTagName("root").item(0));
+ String expectedXMLString = toString(doc.getDocumentElement());
String serializationResultXMLString = toString(serializationResult.getNode());
assertXMLEqual(expectedXMLString, serializationResultXMLString);
import javax.xml.stream.XMLStreamReader;
import org.junit.Ignore;
import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@Test
public void testInstanceIdentifierPathWithEmptyListKey() throws Exception {
final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/bug8083/yang/baz.yang");
+ final Module bazModule = schemaContext.getModules().iterator().next();
+ final ContainerSchemaNode topCont = (ContainerSchemaNode) bazModule.getDataChildByName(
+ QName.create(bazModule.getQNameModule(), "top-cont"));
+ assertNotNull(topCont);
+
final InputStream resourceAsStream = Bug8083Test.class.getResourceAsStream("/bug8083/xml/baz.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
// deserialization
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topCont);
xmlParser.parse(reader);
final NormalizedNode<?, ?> transformedInput = result.getResult();
assertNotNull(transformedInput);
@Test
public void testInstanceIdentifierPathWithIdentityrefListKey() throws Exception {
final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/bug8083/yang/zab.yang");
+ final Module zabModule = schemaContext.getModules().iterator().next();
+ final ContainerSchemaNode topCont = (ContainerSchemaNode) zabModule.getDataChildByName(
+ QName.create(zabModule.getQNameModule(), "top-cont"));
+ assertNotNull(topCont);
+
final InputStream resourceAsStream = Bug8083Test.class.getResourceAsStream("/bug8083/xml/zab.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
// deserialization
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topCont);
xmlParser.parse(reader);
final NormalizedNode<?, ?> transformedInput = result.getResult();
assertNotNull(transformedInput);
@Test
public void testInstanceIdentifierPathWithInstanceIdentifierListKey() throws Exception {
final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/bug8083/yang/foobar.yang");
+ final Module foobarModule = schemaContext.getModules().iterator().next();
+ final ContainerSchemaNode topCont = (ContainerSchemaNode) foobarModule.getDataChildByName(
+ QName.create(foobarModule.getQNameModule(), "top-cont"));
+ assertNotNull(topCont);
+
final InputStream resourceAsStream = Bug8083Test.class.getResourceAsStream("/bug8083/xml/foobar.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
// deserialization
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topCont);
xmlParser.parse(reader);
final NormalizedNode<?, ?> transformedInput = result.getResult();
assertNotNull(transformedInput);
--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.yangtools.yang.data.codec.xml;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.InputStream;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+
+public class Bug8675Test {
+
+ private static SchemaContext schemaContext;
+ private static Module fooModule;
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ schemaContext = YangParserTestUtils.parseYangSource("/bug8675/foo.yang");
+ fooModule = schemaContext.getModules().iterator().next();
+ }
+
+ @Test
+ public void testParsingEmptyElements() throws Exception {
+ final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-container"));
+ assertNotNull(topLevelContainer);
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
+ "/bug8675/foo.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+
+ @Test
+ public void testParsingEmptyRootElement() throws Exception {
+ final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-container"));
+ assertNotNull(topLevelContainer);
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
+ "/bug8675/foo-2.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+
+ @Test
+ public void testListAsRootElement() throws Exception {
+ final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-list"));
+ assertNotNull(topLevelList);
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+
+ @Test
+ public void testAnyXmlAsRootElement() throws Exception {
+ final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-anyxml"));
+ assertNotNull(topLevelAnyXml);
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+
+ @Test
+ public void testLeafAsRootElement() throws Exception {
+ final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-leaf"));
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+
+ @Test
+ public void testLeafListAsRootElement() throws Exception {
+ final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.getDataChildByName(
+ QName.create(fooModule.getQNameModule(), "top-level-leaf-list"));
+
+ final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
+
+ final XMLInputFactory factory = XMLInputFactory.newInstance();
+ final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
+
+ final NormalizedNodeResult result = new NormalizedNodeResult();
+ final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
+ xmlParser.parse(reader);
+
+ final NormalizedNode<?, ?> transformedInput = result.getResult();
+ assertNotNull(transformedInput);
+ }
+}
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schema, schema);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schema, containerNode);
xmlParser.parse(reader);
final NormalizedNode<?, ?> built = result.getResult();
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setNormalize(true);
- final String expectedXml = toString(doc.getDocumentElement().getElementsByTagName("container").item(0));
+ final String expectedXml = toString(doc.getDocumentElement());
final String serializedXml = toString(domResult.getNode());
final Diff diff = new Diff(expectedXml, serializedXml);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setNormalize(true);
- final String expectedXml = toString(doc.getDocumentElement().getElementsByTagName("outer-container").item(0));
+ final String expectedXml = toString(doc.getDocumentElement());
final String serializedXml = toString(domResult.getNode());
final Diff diff = new Diff(expectedXml, serializedXml);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setNormalize(true);
- final String expectedXml = toString(doc.getDocumentElement().getElementsByTagName("outer-container").item(0));
+ final String expectedXml = toString(doc.getDocumentElement());
final String serializedXml = toString(domResult.getNode());
final Diff diff = new Diff(expectedXml, serializedXml);
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
-import java.text.ParseException;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
import org.xml.sax.SAXException;
public class XmlToNormalizedNodesTest {
- private QNameModule bazModule;
-
- private QName outerContainer;
-
- private QName myContainer1;
- private QName myKeyedList;
- private QName myKeyLeaf;
- private QName myLeafInList1;
- private QName myLeafInList2;
- private QName myLeaf1;
- private QName myLeafList;
-
- private QName myContainer2;
- private QName innerContainer;
- private QName myLeaf2;
- private QName myLeaf3;
- private QName myChoice;
- private QName myLeafInCase2;
-
- private QName myContainer3;
- private QName myDoublyKeyedList;
- private QName myFirstKeyLeaf;
- private QName mySecondKeyLeaf;
- private QName myLeafInList3;
-
- @Before
- public void setup() throws URISyntaxException, ParseException {
+ private static SchemaContext schemaContext;
+ private static ContainerSchemaNode outerContainerSchema;
+ private static ContainerSchemaNode parentContainerSchema;
+
+ private static QNameModule fooModule;
+ private static QName parentContainer;
+
+ private static QNameModule bazModule;
+ private static QName outerContainer;
+
+ private static QName myContainer1;
+ private static QName myKeyedList;
+ private static QName myKeyLeaf;
+ private static QName myLeafInList1;
+ private static QName myLeafInList2;
+ private static QName myLeaf1;
+ private static QName myLeafList;
+
+ private static QName myContainer2;
+ private static QName innerContainer;
+ private static QName myLeaf2;
+ private static QName myLeaf3;
+ private static QName myChoice;
+ private static QName myLeafInCase2;
+
+ private static QName myContainer3;
+ private static QName myDoublyKeyedList;
+ private static QName myFirstKeyLeaf;
+ private static QName mySecondKeyLeaf;
+ private static QName myLeafInList3;
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ fooModule = QNameModule.create(new URI("foo-namespace"), SimpleDateFormatUtil.getRevisionFormat().parse(
+ "1970-01-01"));
+ parentContainer = QName.create(fooModule, "parent-container");
+
bazModule = QNameModule.create(new URI("baz-namespace"), SimpleDateFormatUtil.getRevisionFormat().parse(
"1970-01-01"));
-
outerContainer = QName.create(bazModule, "outer-container");
myContainer1 = QName.create(bazModule, "my-container-1");
myFirstKeyLeaf = QName.create(bazModule, "my-first-key-leaf");
mySecondKeyLeaf = QName.create(bazModule, "my-second-key-leaf");
myLeafInList3 = QName.create(bazModule, "my-leaf-in-list-3");
+
+ schemaContext = YangParserTestUtils.parseYangSources("/");
+ parentContainerSchema = (ContainerSchemaNode) SchemaContextUtil.findNodeInSchemaContext(schemaContext,
+ ImmutableList.of(parentContainer));
+ outerContainerSchema = (ContainerSchemaNode) SchemaContextUtil.findNodeInSchemaContext(schemaContext,
+ ImmutableList.of(outerContainer));
}
@Test
public void testComplexXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException,
ParserConfigurationException, SAXException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/baz.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/baz.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
xmlParser.parse(reader);
xmlParser.flush();
@Test
public void testSimpleXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException,
ParserConfigurationException, SAXException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/foo.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/foo.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
xmlParser.parse(reader);
final NormalizedNode<?, ?> transformedInput = result.getResult();
@Test
public void shouldFailOnDuplicateLeaf() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/foo.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
fail("IllegalStateException should have been thrown because of duplicate leaf.");
@Test
public void shouldFailOnDuplicateAnyXml() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/foo.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-2.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
fail("IllegalStateException should have been thrown because of duplicate anyxml");
@Test
public void shouldFailOnDuplicateContainer() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/foo.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-3.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
fail("IllegalStateException should have been thrown because of duplicate container");
@Test
public void shouldFailOnUnterminatedLeafElement() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/baz.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
try {
xmlParser.parse(reader);
fail("XMLStreamException should have been thrown because of unterminated leaf element.");
@Test
public void shouldFailOnUnterminatedLeafElement2() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/baz.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-2.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
try {
xmlParser.parse(reader);
fail("XMLStreamException should have been thrown because of unterminated leaf element.");
@Test
public void shouldFailOnUnterminatedContainerElement() throws ReactorException, XMLStreamException, IOException,
ParserConfigurationException, SAXException, URISyntaxException {
- SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/baz.yang");
-
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-4.xml");
final XMLInputFactory factory = XMLInputFactory.newInstance();
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
try {
xmlParser.parse(reader);
fail("XMLStreamException should have been thrown because of unterminated container element.");
final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
try {
xmlParser.parse(reader);
fail("IllegalStateException should have been thrown because of an unexisting container element.");
import org.opendaylight.yangtools.yang.data.api.schema.YangModeledAnyXmlNode;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeSchemaAwareBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
-
- final ImmutableContainerNodeBuilder result =
- (ImmutableContainerNodeBuilder) ImmutableContainerNodeSchemaAwareBuilder.create(
- yangModeledAnyXML.getSchemaOfAnyXmlData());
+ final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, yangModeledAnyXML);
xmlParser.parse(reader);
- final NormalizedNode<?, ?> output = result.build();
+ final NormalizedNode<?, ?> output = result.getResult();
+ assertTrue(output instanceof YangModeledAnyXmlNode);
+ final YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) output;
- Collection<DataContainerChild<? extends PathArgument, ?>> value = ((ContainerNode) output).getValue();
+ Collection<DataContainerChild<? extends PathArgument, ?>> value = yangModeledAnyXmlNode.getValue();
assertEquals(2, value.size());
- Optional<DataContainerChild<? extends PathArgument, ?>> child = ((ContainerNode) output)
+ Optional<DataContainerChild<? extends PathArgument, ?>> child = yangModeledAnyXmlNode
.getChild(new NodeIdentifier(myContainer1));
assertTrue(child.orNull() instanceof ContainerNode);
ContainerNode myContainerNode1 = (ContainerNode) child.get();
public void testRealSchemaContextFromFoo() throws Exception {
final InputStream resourceAsStream = YangModeledAnyXMLDeserializationTest.class.getResourceAsStream(
"/anyxml-support/xml/foo.xml");
+ final Module foo = schemaContext.findModuleByName("foo", null);
+ final YangModeledAnyXmlSchemaNode myAnyXmlData = (YangModeledAnyXmlSchemaNode) foo.getDataChildByName(
+ QName.create(foo.getQNameModule(), "my-anyxml-data"));
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
-
- final ImmutableContainerNodeBuilder result =
- (ImmutableContainerNodeBuilder) ImmutableContainerNodeSchemaAwareBuilder.create(schemaContext);
+ final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, myAnyXmlData);
xmlParser.parse(reader);
- final NormalizedNode<?, ?> output = result.build();
-
- Optional<DataContainerChild<? extends PathArgument, ?>> child = ((ContainerNode) output).getChild(
- new NodeIdentifier(myAnyXMLDataFoo));
- assertTrue(child.orNull() instanceof YangModeledAnyXmlNode);
- YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) child.get();
+ final NormalizedNode<?, ?> output = result.getResult();
+ assertTrue(output instanceof YangModeledAnyXmlNode);
+ final YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) output;
DataSchemaNode schemaOfAnyXmlData = yangModeledAnyXmlNode.getSchemaOfAnyXmlData();
DataSchemaNode expectedSchemaOfAnyXmlData = schemaContext.getDataChildByName(myContainer2);
import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
public void testSerializationOfBaz() throws Exception {
final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
"/anyxml-support/serialization/baz.xml");
+ final Module bazModule = schemaContext.findModuleByName("baz", null);
+ final ContainerSchemaNode bazCont = (ContainerSchemaNode) bazModule.getDataChildByName(
+ QName.create(bazModule.getQNameModule(), "baz"));
+ assertNotNull(bazCont);
final XMLInputFactory inputFactory = XMLInputFactory.newInstance();
final XMLStreamReader reader = inputFactory.createXMLStreamReader(resourceAsStream);
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, bazCont);
xmlParser.parse(reader);
final NormalizedNode<?, ?> transformedInput = result.getResult();
XMLUnit.setIgnoreAttributeOrder(true);
XMLUnit.setNormalize(true);
- String expectedXml = toString(doc.getDocumentElement().getElementsByTagName("baz").item(0));
+ String expectedXml = toString(doc.getDocumentElement());
String serializedXml = toString(domResult.getNode());
assertXMLEqual(expectedXml, serializedXml);
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz">
- <baz>
- <my-container-1>
- <my-leaf-1>value1</my-leaf-1>
- </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- </my-container-2>
+<baz xmlns="baz">
+ <my-container-1>
+ <my-leaf-1>value1</my-leaf-1>
+ </my-container-1>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ </my-container-2>
- <my-anyxml-data>
- <inner-container>
- <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
- </inner-container>
- <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
- </my-anyxml-data>
- </baz>
-</root>
\ No newline at end of file
+ <my-anyxml-data>
+ <inner-container>
+ <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
+ </my-anyxml-data>
+</baz>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-
-<root xmlns="bar">
+<my-anyxml-data xmlns="bar">
<my-container-1>
<my-leaf-1>value1</my-leaf-1>
</my-container-1>
<my-container-2>
<my-leaf-2>value2</my-leaf-2>
</my-container-2>
-</root>
\ No newline at end of file
+</my-anyxml-data>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <my-container-1>
- <my-leaf-1>value1</my-leaf-1>
- </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- </my-container-2>
-
- <my-anyxml-data>
- <inner-container>
- <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
- </inner-container>
- <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
- </my-anyxml-data>
-</foo>
\ No newline at end of file
+<my-anyxml-data xmlns="foo">
+ <inner-container>
+ <my-leaf-2>any-xml-leaf-2-value</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>any-xml-leaf-3-value</my-leaf-3>
+</my-anyxml-data>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
+<outer-container xmlns="baz-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-leaf-1>value1</my-leaf-1>
+ <my-leaf-1>value1</my-leaf-1>
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
- </my-container-1>
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+ </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue1</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue1</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp1o34</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp1o34</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp0s3f9</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp0s3f9</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp09P1p2s3</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp09P1p2s3</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp0p3p1</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp0p3p1</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp0s3</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp0s3</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <my-leaf>dp09P1p2s1234</my-leaf>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <my-leaf>dp09P1p2s1234</my-leaf>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<foo xmlns="foo">
- <root>
- <ip-address>fwAAAQ==</ip-address>
- </root>
-</foo>
\ No newline at end of file
+<root xmlns="foo">
+ <ip-address>fwAAAQ==</ip-address>
+</root>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-ns">
- <top-cont>
- <keyed-list>
- <empty-key-leaf/>
- <regular-leaf>150</regular-leaf>
- </keyed-list>
+<top-cont xmlns="baz-ns">
+ <keyed-list>
+ <empty-key-leaf/>
+ <regular-leaf>150</regular-leaf>
+ </keyed-list>
- <iid-leaf xmlns:baz="baz-ns">/baz:top-cont/baz:keyed-list[baz:empty-key-leaf='']/baz:regular-leaf</iid-leaf>
- </top-cont>
-</root>
\ No newline at end of file
+ <iid-leaf xmlns:baz="baz-ns">/baz:top-cont/baz:keyed-list[baz:empty-key-leaf='']/baz:regular-leaf</iid-leaf>
+</top-cont>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foobar-ns">
- <top-cont>
- <keyed-list>
- <iid-key-leaf xmlns:foobar="foobar-ns">/foobar:top-cont/foobar:leaf-b</iid-key-leaf>
- <regular-leaf>150</regular-leaf>
- </keyed-list>
+<top-cont xmlns="foobar-ns">
+ <keyed-list>
+ <iid-key-leaf xmlns:foobar="foobar-ns">/foobar:top-cont/foobar:leaf-b</iid-key-leaf>
+ <regular-leaf>150</regular-leaf>
+ </keyed-list>
- <iid-leaf xmlns:foobar="foobar-ns">
- /foobar:top-cont/foobar:keyed-list[foobar:iid-key-leaf='/foobar:top-cont/foobar:leaf-b']/foobar:regular-leaf</iid-leaf>
- <leaf-b>50</leaf-b>
- </top-cont>
-</root>
\ No newline at end of file
+ <iid-leaf xmlns:foobar="foobar-ns">
+ /foobar:top-cont/foobar:keyed-list[foobar:iid-key-leaf='/foobar:top-cont/foobar:leaf-b']/foobar:regular-leaf</iid-leaf>
+ <leaf-b>50</leaf-b>
+</top-cont>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="zab-ns">
- <top-cont>
- <keyed-list>
- <identityref-key-leaf>derived-id</identityref-key-leaf>
- <regular-leaf>150</regular-leaf>
- </keyed-list>
+<top-cont xmlns="zab-ns">
+ <keyed-list>
+ <identityref-key-leaf>derived-id</identityref-key-leaf>
+ <regular-leaf>150</regular-leaf>
+ </keyed-list>
- <iid-leaf xmlns:zab="zab-ns">
- /zab:top-cont/zab:keyed-list[zab:identityref-key-leaf='derived-id']/zab:regular-leaf</iid-leaf>
- </top-cont>
-</root>
\ No newline at end of file
+ <iid-leaf xmlns:zab="zab-ns">
+ /zab:top-cont/zab:keyed-list[zab:identityref-key-leaf='derived-id']/zab:regular-leaf</iid-leaf>
+</top-cont>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-container xmlns="foo">
+</top-level-container>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-list xmlns="foo">
+ <key-leaf>key-value</key-leaf>
+ <ordinary-leaf>leaf-value</ordinary-leaf>
+ <cont-in-list></cont-in-list>
+ <inner-list>
+ <inner-key-leaf>inner-key-value</inner-key-leaf>
+ <inner-ordinary-leaf>inner-leaf-value</inner-ordinary-leaf>
+ </inner-list>
+</top-level-list>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-anyxml xmlns="foo">
+ <data>data-value</data>
+</top-level-anyxml>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-leaf xmlns="foo">100</top-level-leaf>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-leaf-list xmlns="foo">100</top-level-leaf-list>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<top-level-container xmlns="foo">
+ <inner-container-1></inner-container-1><inner-container-2></inner-container-2>
+</top-level-container>
\ No newline at end of file
--- /dev/null
+module foo {
+ namespace foo;
+ prefix foo;
+
+ revision 2017-06-13;
+
+ list top-level-list {
+ key key-leaf;
+
+ leaf key-leaf {
+ type string;
+ }
+
+ leaf ordinary-leaf {
+ type string;
+ }
+
+ container cont-in-list {}
+
+ list inner-list {
+ key inner-key-leaf;
+
+ leaf inner-key-leaf {
+ type string;
+ }
+
+ leaf inner-ordinary-leaf {
+ type string;
+ }
+ }
+ }
+
+ container top-level-container {
+ container inner-container-1 {}
+ container inner-container-2 {}
+ }
+
+ anyxml top-level-anyxml;
+
+ leaf top-level-leaf {
+ type int32;
+ }
+
+ leaf-list top-level-leaf-list {
+ type int32;
+ }
+}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foo-namespace">
- <parent-container>
- <leaf-container>
- <union-identityref-leaf xmlns:prefix="foo-namespace">prefix:ident-one</union-identityref-leaf>
- <int32-leaf>1500</int32-leaf>
- <decimal64-leaf>150.45</decimal64-leaf>
- <string-leaf>hello world</string-leaf>
- <leafref-leaf>hello world</leafref-leaf>
- <empty-leaf/>
- <boolean-leaf>true</boolean-leaf>
- <enum-leaf>five</enum-leaf>
- </leaf-container>
- <anyxml-container>
- <my-anyxml><my-element><my-sub-element>sub-element value</my-sub-element></my-element></my-anyxml>
- </anyxml-container>
- </parent-container>
-</root>
+<parent-container xmlns="foo-namespace">
+ <leaf-container>
+ <union-identityref-leaf xmlns:prefix="foo-namespace">prefix:ident-one</union-identityref-leaf>
+ <int32-leaf>1500</int32-leaf>
+ <decimal64-leaf>150.45</decimal64-leaf>
+ <string-leaf>hello world</string-leaf>
+ <leafref-leaf>hello world</leafref-leaf>
+ <empty-leaf/>
+ <boolean-leaf>true</boolean-leaf>
+ <enum-leaf>five</enum-leaf>
+ </leaf-container>
+ <anyxml-container>
+ <my-anyxml><my-element><my-sub-element>sub-element value</my-sub-element></my-element></my-anyxml>
+ </anyxml-container>
+</parent-container>
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foobar-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
-
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
-
- <my-ordered-list>
- <my-key-leaf-in-ordered-list>olistkeyvalue1</my-key-leaf-in-ordered-list>
- <my-leaf-in-ordered-list-1>olistleafvalue1</my-leaf-in-ordered-list-1>
- <my-leaf-in-ordered-list-2>olistleafvalue2</my-leaf-in-ordered-list-2>
- </my-ordered-list>
-
- <my-ordered-list>
- <my-key-leaf-in-ordered-list>olistkeyvalue2</my-key-leaf-in-ordered-list>
- <my-leaf-in-ordered-list-1>olistleafvalue12</my-leaf-in-ordered-list-1>
- <my-leaf-in-ordered-list-2>olistleafvalue22</my-leaf-in-ordered-list-2>
- </my-ordered-list>
-
- <my-unkeyed-list>
- <my-leaf-in-unkeyed-list>foo</my-leaf-in-unkeyed-list>
- </my-unkeyed-list>
-
- <my-leaf-1>value1</my-leaf-1>
-
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
-
- <my-ordered-leaf-list>olflvalue1</my-ordered-leaf-list>
- <my-ordered-leaf-list>olflvalue2</my-ordered-leaf-list>
- </my-container-1>
-
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
-
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue1</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
\ No newline at end of file
+<outer-container xmlns="foobar-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
+
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
+
+ <my-ordered-list>
+ <my-key-leaf-in-ordered-list>olistkeyvalue1</my-key-leaf-in-ordered-list>
+ <my-leaf-in-ordered-list-1>olistleafvalue1</my-leaf-in-ordered-list-1>
+ <my-leaf-in-ordered-list-2>olistleafvalue2</my-leaf-in-ordered-list-2>
+ </my-ordered-list>
+
+ <my-ordered-list>
+ <my-key-leaf-in-ordered-list>olistkeyvalue2</my-key-leaf-in-ordered-list>
+ <my-leaf-in-ordered-list-1>olistleafvalue12</my-leaf-in-ordered-list-1>
+ <my-leaf-in-ordered-list-2>olistleafvalue22</my-leaf-in-ordered-list-2>
+ </my-ordered-list>
+
+ <my-unkeyed-list>
+ <my-leaf-in-unkeyed-list>foo</my-leaf-in-unkeyed-list>
+ </my-unkeyed-list>
+
+ <my-leaf-1>value1</my-leaf-1>
+
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+
+ <my-ordered-leaf-list>olflvalue1</my-ordered-leaf-list>
+ <my-ordered-leaf-list>olflvalue2</my-ordered-leaf-list>
+ </my-container-1>
+
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
+
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue1</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
+<outer-container xmlns="baz-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-leaf-1>value1</invalid-my-leaf-1>
+ <my-leaf-1>value1</invalid-my-leaf-1>
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
- </my-container-1>
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+ </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
\ No newline at end of file
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
+<outer-container xmlns="baz-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-leaf-1>value1</my-leaf-1>
+ <my-leaf-1>value1</my-leaf-1>
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
- <my-container-1>
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+ <my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
\ No newline at end of file
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
+<outer-container xmlns="baz-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-leaf-1>value1</my-leaf-1>
+ <my-leaf-1>value1</my-leaf-1>
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
- </invalid-my-container-1>
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+ </invalid-my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
\ No newline at end of file
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="baz-namespace">
- <outer-container>
- <my-container-1>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue1</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
- </my-keyed-list>
+<outer-container xmlns="baz-namespace">
+ <my-container-1>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue1</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue1</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue2</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-keyed-list>
- <my-key-leaf>listkeyvalue2</my-key-leaf>
- <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
- <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
- </my-keyed-list>
+ <my-keyed-list>
+ <my-key-leaf>listkeyvalue2</my-key-leaf>
+ <my-leaf-in-list-1>listleafvalue12</my-leaf-in-list-1>
+ <my-leaf-in-list-2>listleafvalue22</my-leaf-in-list-2>
+ </my-keyed-list>
- <my-leaf-1>value1<my-leaf-1>
+ <my-leaf-1>value1<my-leaf-1>
- <my-leaf-list>lflvalue1</my-leaf-list>
- <my-leaf-list>lflvalue2</my-leaf-list>
- </my-container-1>
+ <my-leaf-list>lflvalue1</my-leaf-list>
+ <my-leaf-list>lflvalue2</my-leaf-list>
+ </my-container-1>
- <my-container-2>
- <inner-container>
- <my-leaf-2>value2</my-leaf-2>
- </inner-container>
- <my-leaf-3>value3</my-leaf-3>
- <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
- </my-container-2>
+ <my-container-2>
+ <inner-container>
+ <my-leaf-2>value2</my-leaf-2>
+ </inner-container>
+ <my-leaf-3>value3</my-leaf-3>
+ <my-leaf-in-case-2>case2value</my-leaf-in-case-2>
+ </my-container-2>
- <my-container-3>
- <my-doubly-keyed-list>
- <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
- <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
- <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
- </my-doubly-keyed-list>
- </my-container-3>
- </outer-container>
-</root>
\ No newline at end of file
+ <my-container-3>
+ <my-doubly-keyed-list>
+ <my-first-key-leaf>listkeyvalue1</my-first-key-leaf>
+ <my-second-key-leaf>listkeyvalue2</my-second-key-leaf>
+ <my-leaf-in-list-3>listleafvalue3</my-leaf-in-list-3>
+ </my-doubly-keyed-list>
+ </my-container-3>
+</outer-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foo-namespace">
- <parent-container>
- <leaf-container>
- <int32-leaf>1500</int32-leaf>
- <decimal64-leaf>150.45</decimal64-leaf>
- <string-leaf>hello world</string-leaf>
- <leafref-leaf>hello world</leafref-leaf>
- <empty-leaf/>
- <boolean-leaf>true</boolean-leaf>
- <enum-leaf>five</enum-leaf>
- </leaf-container>
- <anyxml-container>
- <my-anyxml>
- <my-element>
- <my-sub-element>sub-element value</my-sub-element>
- </my-element>
- </my-anyxml>
- <my-anyxml>
- <my-element-2>
- <my-sub-element-2>sub-element value 2</my-sub-element-2>
- </my-element-2>
- </my-anyxml>
- </anyxml-container>
- </parent-container>
-</root>
\ No newline at end of file
+<parent-container xmlns="foo-namespace">
+ <leaf-container>
+ <int32-leaf>1500</int32-leaf>
+ <decimal64-leaf>150.45</decimal64-leaf>
+ <string-leaf>hello world</string-leaf>
+ <leafref-leaf>hello world</leafref-leaf>
+ <empty-leaf/>
+ <boolean-leaf>true</boolean-leaf>
+ <enum-leaf>five</enum-leaf>
+ </leaf-container>
+ <anyxml-container>
+ <my-anyxml>
+ <my-element>
+ <my-sub-element>sub-element value</my-sub-element>
+ </my-element>
+ </my-anyxml>
+ <my-anyxml>
+ <my-element-2>
+ <my-sub-element-2>sub-element value 2</my-sub-element-2>
+ </my-element-2>
+ </my-anyxml>
+ </anyxml-container>
+</parent-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foo-namespace">
- <parent-container>
- <leaf-container>
- <int32-leaf>1500</int32-leaf>
- <decimal64-leaf>150.45</decimal64-leaf>
- <string-leaf>hello world</string-leaf>
- <leafref-leaf>hello world</leafref-leaf>
- <empty-leaf/>
- <boolean-leaf>true</boolean-leaf>
- <enum-leaf>five</enum-leaf>
- </leaf-container>
- <leaf-container>
- <int32-leaf>2500</int32-leaf>
- <decimal64-leaf>250.45</decimal64-leaf>
- <string-leaf>goodbye world</string-leaf>
- </leaf-container>
- <anyxml-container>
- <my-anyxml>
- <my-element>
- <my-sub-element>sub-element value</my-sub-element>
- </my-element>
- </my-anyxml>
- </anyxml-container>
- </parent-container>
-</root>
\ No newline at end of file
+<parent-container xmlns="foo-namespace">
+ <leaf-container>
+ <int32-leaf>1500</int32-leaf>
+ <decimal64-leaf>150.45</decimal64-leaf>
+ <string-leaf>hello world</string-leaf>
+ <leafref-leaf>hello world</leafref-leaf>
+ <empty-leaf/>
+ <boolean-leaf>true</boolean-leaf>
+ <enum-leaf>five</enum-leaf>
+ </leaf-container>
+ <leaf-container>
+ <int32-leaf>2500</int32-leaf>
+ <decimal64-leaf>250.45</decimal64-leaf>
+ <string-leaf>goodbye world</string-leaf>
+ </leaf-container>
+ <anyxml-container>
+ <my-anyxml>
+ <my-element>
+ <my-sub-element>sub-element value</my-sub-element>
+ </my-element>
+ </my-anyxml>
+ </anyxml-container>
+</parent-container>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<root xmlns="foo-namespace">
- <parent-container>
- <leaf-container>
- <int32-leaf>1500</int32-leaf>
- <decimal64-leaf>150.45</decimal64-leaf>
- <decimal64-leaf>240.35</decimal64-leaf>
- <string-leaf>hello world</string-leaf>
- <leafref-leaf>hello world</leafref-leaf>
- <empty-leaf/>
- <boolean-leaf>true</boolean-leaf>
- <enum-leaf>five</enum-leaf>
- </leaf-container>
- <anyxml-container>
- <my-anyxml>
- <my-element>
- <my-sub-element>sub-element value</my-sub-element>
- </my-element>
- </my-anyxml>
- </anyxml-container>
- </parent-container>
-</root>
\ No newline at end of file
+<parent-container xmlns="foo-namespace">
+ <leaf-container>
+ <int32-leaf>1500</int32-leaf>
+ <decimal64-leaf>150.45</decimal64-leaf>
+ <decimal64-leaf>240.35</decimal64-leaf>
+ <string-leaf>hello world</string-leaf>
+ <leafref-leaf>hello world</leafref-leaf>
+ <empty-leaf/>
+ <boolean-leaf>true</boolean-leaf>
+ <enum-leaf>five</enum-leaf>
+ </leaf-container>
+ <anyxml-container>
+ <my-anyxml>
+ <my-element>
+ <my-sub-element>sub-element value</my-sub-element>
+ </my-element>
+ </my-anyxml>
+ </anyxml-container>
+</parent-container>
\ No newline at end of file
-<root xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
- <container>
- <c2Leaf>2</c2Leaf>
- <c2DeepChoiceCase1Leaf2>2</c2DeepChoiceCase1Leaf2>
- <!--<c2DeepChoiceCase1Leaf1>2</c2DeepChoiceCase1Leaf1>-->
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
+ <c2Leaf>2</c2Leaf>
+ <c2DeepChoiceCase1Leaf2>2</c2DeepChoiceCase1Leaf2>
+ <!--<c2DeepChoiceCase1Leaf1>2</c2DeepChoiceCase1Leaf1>-->
- <c3Leaf>3</c3Leaf>
+ <c3Leaf>3</c3Leaf>
- <augLeaf>augment</augLeaf>
-
- <c1Leaf>1</c1Leaf>
- <c1Leaf_AnotherAugment>1</c1Leaf_AnotherAugment>
- <deepLeafc1>1</deepLeafc1>
- <!--<deepLeafc2>1</deepLeafc2>-->
- </container>
-</root>
+ <augLeaf>augment</augLeaf>
+ <c1Leaf>1</c1Leaf>
+ <c1Leaf_AnotherAugment>1</c1Leaf_AnotherAugment>
+ <deepLeafc1>1</deepLeafc1>
+ <!--<deepLeafc2>1</deepLeafc2>-->
+</container>
-<root xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
- <container>
- <c22Leaf>2</c22Leaf>
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
+ <c22Leaf>2</c22Leaf>
- <c34LeafS>3</c34LeafS>
+ <c34LeafS>3</c34LeafS>
- <augLeaf>augment</augLeaf>
-
- <c1Leaf>1</c1Leaf>
- <c1Leaf_AnotherAugment>1</c1Leaf_AnotherAugment>
- <deepLeafc2>1</deepLeafc2>
- </container>
-</root>
+ <augLeaf>augment</augLeaf>
+ <c1Leaf>1</c1Leaf>
+ <c1Leaf_AnotherAugment>1</c1Leaf_AnotherAugment>
+ <deepLeafc2>1</deepLeafc2>
+</container>
-<root xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
- <container>
- <case11-choice-case-container>
- <case11-choice-case-leaf>leaf-value</case11-choice-case-leaf>
- </case11-choice-case-container>
- </container>
-</root>
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
+ <case11-choice-case-container>
+ <case11-choice-case-leaf>leaf-value</case11-choice-case-leaf>
+ </case11-choice-case-container>
+</container>
-<root>
- <container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
- <boolean>true</boolean>
- <innerContainer>
- <uint16>44</uint16>
- </innerContainer>
- <leafList>a</leafList>
- <leafList>b</leafList>
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
+ <boolean>true</boolean>
+ <innerContainer>
+ <uint16>44</uint16>
+ </innerContainer>
+ <leafList>a</leafList>
+ <leafList>b</leafList>
- <list>
- <uint32InList>1</uint32InList>
- <containerInList name="inContainer">
- <uint32>32</uint32>
- <uint16>16</uint16>
- <identityr xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:b</identityr>
- <anyX xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">direct Value</anyX>
- <uint16-ref>16</uint16-ref>
- <instance-id xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">/prefix:container/prefix:list[prefix:uint32InList="1"]</instance-id>
- </containerInList>
- <stringAugmentedToList>augmentInList</stringAugmentedToList>
- <stringAugmentedToListInCase1>augmentInListCase1</stringAugmentedToListInCase1>
- </list>
- <list>
- <uint32InList>2</uint32InList>
- <containerInList>
- <uint32>32</uint32>
- <uint16>16</uint16>
- <identityr>b</identityr>
- <anyX>
- <container xmlns="randomNamespace" xmlns:pref="prefixed:namespace">
- <pref:boolean>true</pref:boolean>
- <innerContainer xmlns:p="prefixed:namespace">
- <uint16 xmlns:pref2="prefixed:namespace">pref2:44</uint16>
- </innerContainer>
- </container>
- <container2 xmlns="randomNamespace2"/>
- </anyX>
- </containerInList>
- <stringAugmentedToListInCase2>augmentInListCase2</stringAugmentedToListInCase2>
- </list>
- <list>
- <uint32InList>4</uint32InList>
- <containerInList>
- <anyX>
- <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
- <schemas>
- <schema>
- <identifier>module</identifier>
- <version>2012-12-12</version>
- <format xmlns:x="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">x:yang</format>
- </schema>
- </schemas>
- </netconf-state>
- </anyX>
- </containerInList>
- </list>
- <list>
- <uint32InList>3</uint32InList>
- </list>
+ <list>
+ <uint32InList>1</uint32InList>
+ <containerInList name="inContainer">
+ <uint32>32</uint32>
+ <uint16>16</uint16>
+ <identityr xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">prefix:b</identityr>
+ <anyX xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">direct Value</anyX>
+ <uint16-ref>16</uint16-ref>
+ <instance-id xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:test">/prefix:container/prefix:list[prefix:uint32InList="1"]</instance-id>
+ </containerInList>
+ <stringAugmentedToList>augmentInList</stringAugmentedToList>
+ <stringAugmentedToListInCase1>augmentInListCase1</stringAugmentedToListInCase1>
+ </list>
+ <list>
+ <uint32InList>2</uint32InList>
+ <containerInList>
+ <uint32>32</uint32>
+ <uint16>16</uint16>
+ <identityr>b</identityr>
+ <anyX>
+ <container xmlns="randomNamespace" xmlns:pref="prefixed:namespace">
+ <pref:boolean>true</pref:boolean>
+ <innerContainer xmlns:p="prefixed:namespace">
+ <uint16 xmlns:pref2="prefixed:namespace">pref2:44</uint16>
+ </innerContainer>
+ </container>
+ <container2 xmlns="randomNamespace2"/>
+ </anyX>
+ </containerInList>
+ <stringAugmentedToListInCase2>augmentInListCase2</stringAugmentedToListInCase2>
+ </list>
+ <list>
+ <uint32InList>4</uint32InList>
+ <containerInList>
+ <anyX>
+ <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
+ <schemas>
+ <schema>
+ <identifier>module</identifier>
+ <version>2012-12-12</version>
+ <format xmlns:x="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">x:yang</format>
+ </schema>
+ </schemas>
+ </netconf-state>
+ </anyX>
+ </containerInList>
+ </list>
+ <list>
+ <uint32InList>3</uint32InList>
+ </list>
- <augmentString1>choice1Case1</augmentString1>
- <augmentInt1>41</augmentInt1>
- <stringInAugmentedCaseInAugmentedChoiceFromAugment>deep</stringInAugmentedCaseInAugmentedChoiceFromAugment>
+ <augmentString1>choice1Case1</augmentString1>
+ <augmentInt1>41</augmentInt1>
+ <stringInAugmentedCaseInAugmentedChoiceFromAugment>deep</stringInAugmentedCaseInAugmentedChoiceFromAugment>
- <augmentContainer>
- <augmentStringInaugmentContainer>choice2Case1</augmentStringInaugmentContainer>
- </augmentContainer>
+ <augmentContainer>
+ <augmentStringInaugmentContainer>choice2Case1</augmentStringInaugmentContainer>
+ </augmentContainer>
- <augmentUint32>999</augmentUint32>
+ <augmentUint32>999</augmentUint32>
- </container>
-</root>
\ No newline at end of file
+</container>
\ No newline at end of file
-<root>
- <container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
- <augmentString1>choice1Case1</augmentString1>
- <augmentInt1>41</augmentInt1>
- <stringInAugmentedCaseInAugmentedChoice2>deep</stringInAugmentedCaseInAugmentedChoice2>
-
- <augmentedList>
- <augmentStringInaugmentList>aug1</augmentStringInaugmentList>
- </augmentedList>
-
- <augmentedList>
- <augmentStringInaugmentList>aug2</augmentStringInaugmentList>
- <augmentedContainerInAugmentedListInAugmentedCase>
- <leafInAugmentedContainerInAugmentedListInAugmentedCase>
- 66
- </leafInAugmentedContainerInAugmentedListInAugmentedCase>
- </augmentedContainerInAugmentedListInAugmentedCase>
-
- <augmentedListInAugmentedListInAugmentedCase>
- <leafInAugmentedListInAugmentedListInAugmentedCase>
- 661
- </leafInAugmentedListInAugmentedListInAugmentedCase>
- <leafInAugmentedListInAugmentedListInAugmentedCase>
- 662
- </leafInAugmentedListInAugmentedListInAugmentedCase>
- </augmentedListInAugmentedListInAugmentedCase>
-
- <augmentedListInAugmentedListInAugmentedCase>
- <leafInAugmentedListInAugmentedListInAugmentedCase>
- 6621
- </leafInAugmentedListInAugmentedListInAugmentedCase>
- </augmentedListInAugmentedListInAugmentedCase>
- </augmentedList>
-
- <augmentedList>
- <augmentStringInaugmentList>aug3</augmentStringInaugmentList>
- <augmentedContainerInAugmentedListInAugmentedCase/>
-
- <augmentedListInAugmentedListInAugmentedCase/>
- </augmentedList>
-
- </container>
-</root>
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test">
+ <augmentString1>choice1Case1</augmentString1>
+ <augmentInt1>41</augmentInt1>
+ <stringInAugmentedCaseInAugmentedChoice2>deep</stringInAugmentedCaseInAugmentedChoice2>
+
+ <augmentedList>
+ <augmentStringInaugmentList>aug1</augmentStringInaugmentList>
+ </augmentedList>
+
+ <augmentedList>
+ <augmentStringInaugmentList>aug2</augmentStringInaugmentList>
+ <augmentedContainerInAugmentedListInAugmentedCase>
+ <leafInAugmentedContainerInAugmentedListInAugmentedCase>
+ 66
+ </leafInAugmentedContainerInAugmentedListInAugmentedCase>
+ </augmentedContainerInAugmentedListInAugmentedCase>
+
+ <augmentedListInAugmentedListInAugmentedCase>
+ <leafInAugmentedListInAugmentedListInAugmentedCase>
+ 661
+ </leafInAugmentedListInAugmentedListInAugmentedCase>
+ <leafInAugmentedListInAugmentedListInAugmentedCase>
+ 662
+ </leafInAugmentedListInAugmentedListInAugmentedCase>
+ </augmentedListInAugmentedListInAugmentedCase>
+
+ <augmentedListInAugmentedListInAugmentedCase>
+ <leafInAugmentedListInAugmentedListInAugmentedCase>
+ 6621
+ </leafInAugmentedListInAugmentedListInAugmentedCase>
+ </augmentedListInAugmentedListInAugmentedCase>
+ </augmentedList>
+
+ <augmentedList>
+ <augmentStringInaugmentList>aug3</augmentStringInaugmentList>
+ <augmentedContainerInAugmentedListInAugmentedCase/>
+
+ <augmentedListInAugmentedListInAugmentedCase/>
+ </augmentedList>
+
+</container>
-<root>
- <container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test" name="test" xmlns:foo="http://www.foo.com/" foo:baz="baz">
+<container xmlns="urn:opendaylight:params:xml:ns:yang:controller:test" name="test" xmlns:foo="http://www.foo.com/" foo:baz="baz">
- <list list="on list entry">
- <uint32InList name="test" foo:baz="baz">3</uint32InList>
- </list>
+ <list list="on list entry">
+ <uint32InList name="test" foo:baz="baz">3</uint32InList>
+ </list>
- <boolean xmlns:leaf="test:namespace:in:leaf" leaf:a="b">false</boolean>
+ <boolean xmlns:leaf="test:namespace:in:leaf" leaf:a="b">false</boolean>
- <leafList foo:b="b">a</leafList>
-
- </container>
-</root>
+ <leafList foo:b="b">a</leafList>
+</container>
\ No newline at end of file
/**
* Utility abstract class for tracking parser state, as needed by StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
*/
@Beta
public abstract class AbstractNodeDataWithSchema {
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG anyxml node.
+ */
public class AnyXmlNodeDataWithSchema extends SimpleNodeDataWithSchema {
public AnyXmlNodeDataWithSchema(final DataSchemaNode dataSchemaNode) {
import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode;
/**
- * A node which is composed of multiple simpler nodes.
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a node which is composed of multiple simpler nodes.
*/
public class CompositeNodeDataWithSchema extends AbstractNodeDataWithSchema {
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-class ContainerNodeDataWithSchema extends CompositeNodeDataWithSchema {
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG container node.
+ */
+public class ContainerNodeDataWithSchema extends CompositeNodeDataWithSchema {
- ContainerNodeDataWithSchema(final DataSchemaNode schema) {
+ public ContainerNodeDataWithSchema(final DataSchemaNode schema) {
super(schema);
}
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG leaf-list entry node.
+ */
public class LeafListEntryNodeDataWithSchema extends SimpleNodeDataWithSchema {
public LeafListEntryNodeDataWithSchema(final DataSchemaNode dataSchemaNode) {
super(dataSchemaNode);
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG leaf-list node.
+ */
public class LeafListNodeDataWithSchema extends CompositeNodeDataWithSchema {
public LeafListNodeDataWithSchema(final DataSchemaNode schema) {
super(schema);
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG leaf node.
+ */
public class LeafNodeDataWithSchema extends SimpleNodeDataWithSchema {
public LeafNodeDataWithSchema(final DataSchemaNode schema) {
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG list entry node.
+ */
public class ListEntryNodeDataWithSchema extends CompositeNodeDataWithSchema {
private final Map<QName, SimpleNodeDataWithSchema> qnameToKeys = new HashMap<>();
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG list node.
+ */
public class ListNodeDataWithSchema extends CompositeNodeDataWithSchema {
public ListNodeDataWithSchema(final DataSchemaNode schema) {
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a simple node with value (anyxml, leaf, leaf-list entry).
+ */
public abstract class SimpleNodeDataWithSchema extends AbstractNodeDataWithSchema {
private Object value;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode;
-final class YangModeledAnyXmlNodeDataWithSchema extends CompositeNodeDataWithSchema {
+/**
+ * Utility class used for tracking parser state as needed by a StAX-like parser.
+ * This class is to be used only by respective XML and JSON parsers in yang-data-codec-xml and yang-data-codec-gson.
+ *
+ * <p>
+ * Represents a YANG-modeled-anyxml node.
+ */
+public final class YangModeledAnyXmlNodeDataWithSchema extends CompositeNodeDataWithSchema {
- YangModeledAnyXmlNodeDataWithSchema(final YangModeledAnyXmlSchemaNode yangModeledAnyXml) {
+ public YangModeledAnyXmlNodeDataWithSchema(final YangModeledAnyXmlSchemaNode yangModeledAnyXml) {
super(yangModeledAnyXml);
}