X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-codec-gson%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fcodec%2Fgson%2FAnyXmlSupportTest.java;h=19a47fe79417ad525760f6f980a3e79bd45afccc;hb=cc3f63f7d403f66a9761e27ae6afcfd30ec48df0;hp=7fc8f04fb4395e83528b90f09322f78bc40a15bb;hpb=5babaa4fc00be0a587748c17b11f523ba8d61498;p=yangtools.git diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AnyXmlSupportTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AnyXmlSupportTest.java index 7fc8f04fb4..19a47fe794 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AnyXmlSupportTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AnyXmlSupportTest.java @@ -8,19 +8,23 @@ package org.opendaylight.yangtools.yang.data.codec.gson; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; +import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadXmlToNormalizedNodes; +import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.normalizedNodesToJsonString; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import com.google.gson.stream.JsonReader; +import java.io.File; +import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; import java.io.StringReader; -import java.io.StringWriter; -import java.io.Writer; import java.net.URISyntaxException; +import java.util.Optional; import javax.xml.transform.dom.DOMSource; import org.junit.BeforeClass; import org.junit.Test; @@ -33,12 +37,11 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; 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.api.schema.stream.NormalizedNodeWriter; 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.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Text; @@ -53,8 +56,8 @@ public class AnyXmlSupportTest { private static SchemaContext schemaContext; @BeforeClass - public static void setup() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/complexjson/yang"); + public static void setup() { + schemaContext = YangParserTestUtils.parseYangResourceDirectory("/complexjson/yang"); } @Test @@ -64,7 +67,8 @@ public class AnyXmlSupportTest { // deserialization final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); - final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, schemaContext); + final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, + JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext)); jsonParser.parse(new JsonReader(new StringReader(inputJson))); final NormalizedNode transformedInput = result.getResult(); assertNotNull(transformedInput); @@ -84,15 +88,8 @@ public class AnyXmlSupportTest { final DOMSource Lf14AnyExpectedValue = createAnyXmlSimpleValue("ns:complex:json", "lf14-any", "null"); verifyTransformedAnyXmlNodeValue(Lf14AnyExpectedValue, Lf14AnyActualValue); - // serialization - final Writer writer = new StringWriter(); - final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter. - createExclusiveWriter(JSONCodecFactory.create(schemaContext), SchemaPath.ROOT, null, - JsonWriterFactory.createJsonWriter(writer, 2)); - final NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(jsonStream); - nodeWriter.write(transformedInput); - nodeWriter.close(); - final String serializationResult = writer.toString(); + final String serializationResult = normalizedNodesToJsonString(transformedInput, schemaContext, + SchemaPath.ROOT); final JsonParser parser = new JsonParser(); final JsonElement expected = parser.parse(inputJson); @@ -106,7 +103,8 @@ public class AnyXmlSupportTest { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); - final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, schemaContext); + final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, + JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext)); jsonParser.parse(new JsonReader(new StringReader(inputJson))); final NormalizedNode transformedInput = result.getResult(); assertNotNull(transformedInput); @@ -127,14 +125,8 @@ public class AnyXmlSupportTest { verifyTransformedAnyXmlNodeValue(Lf14AnyExpectedValue, Lf14AnyActualValue); // serialization - final Writer writer = new StringWriter(); - final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter. - createExclusiveWriter(JSONCodecFactory.create(schemaContext), SchemaPath.ROOT, null, - JsonWriterFactory.createJsonWriter(writer, 2)); - final NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(jsonStream); - nodeWriter.write(transformedInput); - nodeWriter.close(); - final String serializationResult = writer.toString(); + final String serializationResult = normalizedNodesToJsonString(transformedInput, schemaContext, + SchemaPath.ROOT); final JsonParser parser = new JsonParser(); final JsonElement expected = parser.parse(inputJson); @@ -142,11 +134,34 @@ public class AnyXmlSupportTest { assertTrue(expected.equals(actual)); } + @Test + public void bug8927Test() throws Exception { + final InputStream resourceAsStream = YangModeledAnyXmlSupportTest.class + .getResourceAsStream("/bug8927/xml/input.xml"); + final NormalizedNodeResult result = new NormalizedNodeResult(); + loadXmlToNormalizedNodes(resourceAsStream, result, schemaContext); + + assertNotNull(result.getResult()); + assertTrue(result.getResult() instanceof ContainerNode); + + final Optional> data = ((ContainerNode) result.getResult()) + .getChild(new NodeIdentifier(QName.create("bug8927.test", "2017-01-01", "foo"))); + assertTrue(data.isPresent()); + final String jsonOutput = normalizedNodesToJsonString(data.get(), schemaContext, SchemaPath.ROOT); + + final JsonParser parser = new JsonParser(); + final JsonElement expextedJson = parser + .parse(new FileReader(new File(getClass().getResource("/bug8927/json/expected.json").toURI()))); + final JsonElement serializedJson = parser.parse(jsonOutput); + + assertEquals(expextedJson, serializedJson); + } + private static DOMSource getParsedAnyXmlValue(final NormalizedNode transformedInput, final QName anyxmlName) { assertTrue(transformedInput instanceof ContainerNode); final ContainerNode cont1 = (ContainerNode) transformedInput; - final DataContainerChild child = cont1.getChild(new NodeIdentifier(anyxmlName)).get(); - assertNotNull(child); + final DataContainerChild child = cont1.getChild(new NodeIdentifier(anyxmlName)) + .get(); assertTrue(child instanceof AnyXmlNode); final AnyXmlNode anyXmlNode = (AnyXmlNode) child; return anyXmlNode.getValue();