Remove Augmentation{Identifier,Node}
[yangtools.git] / codec / yang-data-codec-xml / src / test / java / org / opendaylight / yangtools / yang / data / codec / xml / XmlToNormalizedNodesTest.java
index 7d4c7753a8c259cbab459583c7eb498eec6c1aeb..be2de3f9649a841905c5770b4f7dc1467bb4f34f 100644 (file)
@@ -13,15 +13,12 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThrows;
 
-import com.google.common.collect.ImmutableSet;
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -29,21 +26,18 @@ import org.opendaylight.yangtools.util.xml.UntrustedXML;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 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.data.impl.schema.NormalizationResultHolder;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
@@ -99,20 +93,16 @@ public class XmlToNormalizedNodesTest {
     @Test
     public void testComplexXmlParsing() throws IOException, SAXException, URISyntaxException, XMLStreamException,
             ParserConfigurationException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/baz.xml");
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/baz.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
 
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        try (var xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema)) {
+            xmlParser.parse(reader);
+        }
 
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
-        xmlParser.parse(reader);
-
-        xmlParser.flush();
-        xmlParser.close();
-
-        final NormalizedNode transformedInput = result.getResult();
+        final NormalizedNode transformedInput = result.getResult().data();
         assertNotNull(transformedInput);
 
         final NormalizedNode expectedNormalizedNode = buildOuterContainerNode();
@@ -124,128 +114,107 @@ public class XmlToNormalizedNodesTest {
     @Test
     public void testSimpleXmlParsing() throws IOException, URISyntaxException, XMLStreamException,
             ParserConfigurationException, SAXException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/foo.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/foo.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
         xmlParser.parse(reader);
 
-        final NormalizedNode transformedInput = result.getResult();
+        final var transformedInput = result.getResult().data();
         assertNotNull(transformedInput);
     }
 
     @Test
     public void shouldFailOnDuplicateLeaf() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-        assertThat(ex.getMessage(), containsString("Duplicate element \"decimal64-leaf\" in namespace"
-            + " \"foo-namespace\" with parent \"container leaf-container\" in XML input"));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        assertThat(ex.getMessage(), containsString("""
+            Duplicate element "decimal64-leaf" in namespace "foo-namespace" with parent \
+            "EmptyContainerEffectiveStatement{argument=(foo-namespace)leaf-container}" in XML input"""));
     }
 
     @Test
     public void shouldFailOnDuplicateAnyXml() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-2.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-        assertThat(ex.getMessage(), containsString("Duplicate element \"my-anyxml\" in namespace"
-            + " \"foo-namespace\" with parent \"container anyxml-container\" in XML input"));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-2.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        assertThat(ex.getMessage(), containsString("""
+            Duplicate element "my-anyxml" in namespace "foo-namespace" with parent \
+            "EmptyContainerEffectiveStatement{argument=(foo-namespace)anyxml-container}" in XML input"""));
     }
 
     @Test
     public void shouldFailOnDuplicateContainer() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-3.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-        assertThat(ex.getMessage(), containsString("Duplicate element \"leaf-container\" in namespace"
-            + " \"foo-namespace\" with parent \"container parent-container\" in XML input"));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-3.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        assertThat(ex.getMessage(), containsString("""
+            Duplicate element "leaf-container" in namespace "foo-namespace" with parent \
+            "EmptyContainerEffectiveStatement{argument=(foo-namespace)parent-container}" in XML input"""));
     }
 
     @Test
     public void shouldFailOnUnterminatedLeafElement() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
         assertThat(ex.getMessage(), containsString(" START_ELEMENT "));
     }
 
     @Test
     public void shouldFailOnUnterminatedLeafElement2() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-2.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-2.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
         assertThat(ex.getMessage(), containsString("</my-leaf-1>"));
     }
 
     @Test
     public void shouldFailOnUnterminatedContainerElement() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-4.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-4.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
         assertThat(ex.getMessage(), containsString("</my-container-1>"));
     }
 
     @Test
     public void shouldFailOnUnknownChildNode() throws XMLStreamException, IOException,
             ParserConfigurationException, SAXException, URISyntaxException {
-        final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-3.xml");
-
-        final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
-
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
-
-        final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
-        final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-
-        assertThat(ex.getMessage(), containsString("Schema for node with name my-container-1 and namespace "
-            + "baz-namespace does not exist in parent container my-container-1"));
+        final var resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-3.xml");
+        final var reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
+        final var result = new NormalizationResultHolder();
+        final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final var xmlParser = XmlParserStream.create(streamWriter, outerContainerSchema);
+        final var ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
+        assertThat(ex.getMessage(), containsString("""
+            Schema for node with name my-container-1 and namespace baz-namespace does not exist in parent \
+            EmptyContainerEffectiveStatement{argument=(baz-namespace)my-container-1}"""));
     }
 
     private static NormalizedNode buildOuterContainerNode() {
@@ -312,23 +281,15 @@ public class XmlToNormalizedNodesTest {
                                 new NodeIdentifier(MY_LEAF_IN_LIST_3)).withValue("listleafvalue1").build()).build())
                 .build();
 
-        AugmentationNode myDoublyKeyedListAugNode = Builders.augmentationBuilder().withNodeIdentifier(
-                new AugmentationIdentifier(ImmutableSet.of(MY_DOUBLY_KEYED_LIST)))
-                .withChild(myDoublyKeyedListNode).build();
-
         ContainerNode myContainer3Node = Builders.containerBuilder().withNodeIdentifier(
                 new NodeIdentifier(MY_CONTAINER_3))
-                .withChild(myDoublyKeyedListAugNode).build();
-
-        AugmentationNode myContainer3AugNode = Builders.augmentationBuilder().withNodeIdentifier(
-                new AugmentationIdentifier(ImmutableSet.of(MY_CONTAINER_3)))
-                .withChild(myContainer3Node).build();
+                .withChild(myDoublyKeyedListNode).build();
 
         ContainerNode outerContainerNode = Builders.containerBuilder().withNodeIdentifier(
                 new NodeIdentifier(OUTER_CONTAINER))
                 .withChild(myContainer1Node)
                 .withChild(myContainer2Node)
-                .withChild(myContainer3AugNode).build();
+                .withChild(myContainer3Node).build();
 
         return outerContainerNode;
     }