From 73a8d787b2924cf4e5e3285d7406a8e5f6099521 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 10 Feb 2021 17:27:26 +0100 Subject: [PATCH] Use SchemaContextUtils replacements in yang-data-codec-xml We are performing rather simple searches, use the functionality built into DataNodeContainer. Also modernize assertions while we are in the area. JIRA: YANGTOOLS-1052 Change-Id: Id3a9a49b80946db4d03f13ecf6fe19e46660e479 Signed-off-by: Robert Varga --- .../xml/AnydataNormalizeToContainerTest.java | 27 ++++++------------- .../data/codec/xml/AnydataSerializeTest.java | 26 ++++++++---------- .../yang/data/codec/xml/Bug8745Test.java | 7 ++--- .../yang/data/codec/xml/Bug8803Test.java | 11 ++++---- .../codec/xml/XmlToNormalizedNodesTest.java | 8 ++---- .../yang/data/codec/xml/YT1107Test.java | 10 ++----- 6 files changed, 30 insertions(+), 59 deletions(-) diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataNormalizeToContainerTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataNormalizeToContainerTest.java index 6bd2298bed..50a6cfd785 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataNormalizeToContainerTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataNormalizeToContainerTest.java @@ -7,17 +7,14 @@ */ package org.opendaylight.yangtools.yang.data.codec.xml; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import java.io.IOException; -import java.net.URISyntaxException; -import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.junit.Test; import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; -import org.opendaylight.yangtools.yang.data.api.schema.AnydataNormalizationException; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -26,24 +23,17 @@ import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; -import org.xml.sax.SAXException; public class AnydataNormalizeToContainerTest extends AbstractAnydataTest { - @Test - public void testAnydataNormalizeToContainer() - throws XMLStreamException, SAXException, IOException, URISyntaxException, AnydataNormalizationException { + public void testAnydataNormalizeToContainer() throws Exception { //Create Data Scheme from yang file - SchemaPath anydataPath = SchemaPath.create(true, FOO_QNAME); - final SchemaNode fooSchemaNode = SchemaContextUtil.findDataSchemaNode(SCHEMA_CONTEXT, anydataPath); - assertTrue(fooSchemaNode instanceof AnydataSchemaNode); + final SchemaNode fooSchemaNode = SCHEMA_CONTEXT.findDataTreeChild(FOO_QNAME).orElse(null); + assertThat(fooSchemaNode, instanceOf(AnydataSchemaNode.class)); final AnydataSchemaNode anyDataSchemaNode = (AnydataSchemaNode) fooSchemaNode; - SchemaPath containerPath = SchemaPath.create(true, CONT_QNAME); - final SchemaNode barSchemaNode = SchemaContextUtil.findDataSchemaNode(SCHEMA_CONTEXT, containerPath); - assertTrue(barSchemaNode instanceof ContainerSchemaNode); + final SchemaNode barSchemaNode = SCHEMA_CONTEXT.findDataTreeChild(CONT_QNAME).orElse(null); + assertThat(barSchemaNode, instanceOf(ContainerSchemaNode.class)); final ContainerSchemaNode containerSchemaNode = (ContainerSchemaNode) barSchemaNode; // deserialization @@ -60,8 +50,7 @@ public class AnydataNormalizeToContainerTest extends AbstractAnydataTest { xmlParser.parse(reader); final NormalizedNode transformedInput = result.getResult(); - assertNotNull(transformedInput); - assertTrue(transformedInput instanceof AnydataNode); + assertThat(transformedInput, instanceOf(AnydataNode.class)); AnydataNode anydataNode = (AnydataNode) transformedInput; //Normalize anydata content to specific container element diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java index fea162dbea..49adb55a0a 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnydataSerializeTest.java @@ -7,10 +7,10 @@ */ package org.opendaylight.yangtools.yang.data.codec.xml; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.io.IOException; import java.io.StringWriter; @@ -44,8 +44,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo import org.opendaylight.yangtools.yang.data.util.ImmutableNormalizedAnydata; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -85,9 +83,8 @@ public class AnydataSerializeTest extends AbstractAnydataTest { throws IOException, SAXException, XMLStreamException, URISyntaxException, TransformerException { //Create Data Scheme from yang file - SchemaPath anydataPath = SchemaPath.create(true, FOO_QNAME); - final SchemaNode dataSchemaNode = SchemaContextUtil.findDataSchemaNode(SCHEMA_CONTEXT, anydataPath); - assertTrue(dataSchemaNode instanceof AnydataSchemaNode); + final SchemaNode dataSchemaNode = SCHEMA_CONTEXT.findDataTreeChild(FOO_QNAME).orElse(null); + assertThat(dataSchemaNode, instanceOf(AnydataSchemaNode.class)); final AnydataSchemaNode anyDataSchemaNode = (AnydataSchemaNode) dataSchemaNode; // deserialization @@ -100,8 +97,7 @@ public class AnydataSerializeTest extends AbstractAnydataTest { xmlParser.parse(reader); final NormalizedNode transformedInput = result.getResult(); - assertNotNull(transformedInput); - assertTrue(transformedInput instanceof AnydataNode); + assertThat(transformedInput, instanceOf(AnydataNode.class)); AnydataNode anydataNode = (AnydataNode) transformedInput; // serialization @@ -137,8 +133,8 @@ public class AnydataSerializeTest extends AbstractAnydataTest { //Load XML from file and write it with xmlParseStream final DOMResult domResult = new DOMResult(UntrustedXML.newDocumentBuilder().newDocument()); final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(domResult); - final AnydataSchemaNode anyDataSchemaNode = (AnydataSchemaNode) SchemaContextUtil.findDataSchemaNode( - SCHEMA_CONTEXT, SchemaPath.create(true, FOO_QNAME)); + final AnydataSchemaNode anyDataSchemaNode = (AnydataSchemaNode) SCHEMA_CONTEXT.findDataTreeChild(FOO_QNAME) + .orElseThrow(); final NormalizedNodeStreamWriter streamWriter = XMLStreamNormalizedNodeStreamWriter.create( xmlStreamWriter, SCHEMA_CONTEXT); final XMLStreamReader reader = new DOMSourceXMLStreamReader(domSource); @@ -169,8 +165,8 @@ public class AnydataSerializeTest extends AbstractAnydataTest { final DOMSource domSource = new DOMSource(doc.getDocumentElement()); //Get specific attribute from Yang file. - final AnydataSchemaNode contWithAttr = (AnydataSchemaNode) SchemaContextUtil.findDataSchemaNode( - SCHEMA_CONTEXT, SchemaPath.create(true, FOO_QNAME)); + final AnydataSchemaNode contWithAttr = (AnydataSchemaNode) SCHEMA_CONTEXT.findDataTreeChild(FOO_QNAME) + .orElseThrow(); //Create NormalizedNodeResult NormalizedNodeResult normalizedResult = new NormalizedNodeResult(); @@ -184,11 +180,11 @@ public class AnydataSerializeTest extends AbstractAnydataTest { //Get Result final NormalizedNode node = normalizedResult.getResult(); - assertTrue(node instanceof AnydataNode); + assertThat(node, instanceOf(AnydataNode.class)); final AnydataNode anydataResult = (AnydataNode) node; //Get Result in formatted String - assertTrue(anydataResult.body() instanceof DOMSourceAnydata); + assertThat(anydataResult.body(), instanceOf(DOMSourceAnydata.class)); final String serializedXml = getXmlFromDOMSource(((DOMSourceAnydata)anydataResult.body()).getSource()); final String expectedXml = toString(doc.getDocumentElement()); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8745Test.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8745Test.java index 322532e387..1980e24d84 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8745Test.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8745Test.java @@ -37,8 +37,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -71,9 +69,8 @@ public class Bug8745Test { @Test public void testParsingAttributes() throws Exception { - final QName contWithAttributes = QName.create("foo", "cont-with-attributes"); - final ContainerSchemaNode contWithAttr = (ContainerSchemaNode) SchemaContextUtil.findDataSchemaNode( - SCHEMA_CONTEXT, SchemaPath.create(true, contWithAttributes)); + final ContainerSchemaNode contWithAttr = (ContainerSchemaNode) SCHEMA_CONTEXT.findDataTreeChild( + QName.create("foo", "cont-with-attributes")).orElseThrow(); final Document doc = loadDocument("/bug8745/foo.xml"); final DOMSource domSource = new DOMSource(doc.getDocumentElement()); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8803Test.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8803Test.java index 079caacd3a..ee05f7a8ec 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8803Test.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug8803Test.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.data.codec.xml; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import java.io.InputStream; import java.io.StringWriter; @@ -32,8 +33,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @RunWith(Parameterized.class) @@ -63,9 +62,9 @@ public class Bug8803Test { @Test public void test() throws Exception { - final SchemaPath topContPath = SchemaPath.create(true, QName.create("foo-ns", "top-cont")); - final SchemaNode dataSchemaNode = SchemaContextUtil.findDataSchemaNode(SCHEMA_CONTEXT, topContPath); - assertTrue(dataSchemaNode instanceof ContainerSchemaNode); + final SchemaNode dataSchemaNode = SCHEMA_CONTEXT.findDataTreeChild(QName.create("foo-ns", "top-cont")) + .orElse(null); + assertThat(dataSchemaNode, instanceOf(ContainerSchemaNode.class)); final ContainerSchemaNode topContSchema = (ContainerSchemaNode) dataSchemaNode; final InputStream resourceAsStream = Bug8803Test.class.getResourceAsStream("/bug8803/foo.xml"); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java index 748cb4f8f6..400959af62 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.io.InputStream; @@ -47,7 +46,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeS import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.xml.sax.SAXException; @@ -87,10 +85,8 @@ public class XmlToNormalizedNodesTest { @BeforeClass public static void setup() { schemaContext = YangParserTestUtils.parseYangResourceDirectory("/"); - parentContainerSchema = (ContainerSchemaNode) SchemaContextUtil.findNodeInSchemaContext(schemaContext, - ImmutableList.of(PARENT_CONTAINER)); - outerContainerSchema = (ContainerSchemaNode) SchemaContextUtil.findNodeInSchemaContext(schemaContext, - ImmutableList.of(OUTER_CONTAINER)); + parentContainerSchema = (ContainerSchemaNode) schemaContext.findDataTreeChild(PARENT_CONTAINER).orElseThrow(); + outerContainerSchema = (ContainerSchemaNode) schemaContext.findDataTreeChild(OUTER_CONTAINER).orElseThrow(); } @AfterClass diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YT1107Test.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YT1107Test.java index a0bf8eee1f..5b71323a5e 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YT1107Test.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YT1107Test.java @@ -9,11 +9,7 @@ package org.opendaylight.yangtools.yang.data.codec.xml; import static org.junit.Assert.assertEquals; -import java.io.IOException; import java.io.InputStream; -import java.net.URISyntaxException; -import java.util.Arrays; -import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.junit.Test; import org.opendaylight.yangtools.util.xml.UntrustedXML; @@ -26,9 +22,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; 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.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; -import org.xml.sax.SAXException; public class YT1107Test { private static final QName PARENT = QName.create("yt1107", "parent"); @@ -37,7 +31,7 @@ public class YT1107Test { private static final QName USER = QName.create(PARENT, "user"); @Test - public void testInterleavingLists() throws XMLStreamException, URISyntaxException, IOException, SAXException { + public void testInterleavingLists() throws Exception { final EffectiveModelContext schemaContext = YangParserTestUtils.parseYangResource("/yt1107/yt1107.yang"); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/yt1107/yt1107.xml"); final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream); @@ -45,7 +39,7 @@ public class YT1107Test { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, - SchemaContextUtil.findNodeInSchemaContext(schemaContext, Arrays.asList(PARENT))); + schemaContext.findDataTreeChild(PARENT).orElseThrow()); xmlParser.parse(reader); assertEquals(Builders.containerBuilder() -- 2.36.6