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%2FStreamToNormalizedNodeTest.java;h=73f11dc4773eac7d12314e572ef1b6a5d86196ad;hb=2645b72cbef49a22f7520cb19b49c2d4b337ce7d;hp=1010989bc890300f56ea7ad540d80c384688351e;hpb=d0d16d8daa03bb9d1651af08c3751c49d856ac17;p=yangtools.git diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/StreamToNormalizedNodeTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/StreamToNormalizedNodeTest.java index 1010989bc8..73f11dc477 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/StreamToNormalizedNodeTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/StreamToNormalizedNodeTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2016 Cisco Systems, Inc. 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, @@ -7,35 +7,28 @@ */ package org.opendaylight.yangtools.yang.data.codec.gson; -import com.google.gson.stream.JsonReader; +import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; -import java.io.BufferedReader; +import com.google.gson.stream.JsonReader; import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; -import java.util.ArrayList; -import java.util.List; - +import java.net.URISyntaxException; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; 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.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.LoggingNormalizedNodeStreamWriter; 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.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser; -import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,16 +38,20 @@ public class StreamToNormalizedNodeTest { private static String streamAsString; @BeforeClass - public static void initialization() throws IOException { - schemaContext = loadModules("/complexjson/yang"); - streamAsString = loadTextFile(StreamToNormalizedNodeTest.class.getResource("/complexjson/complex-json.json") - .getPath()); + public static void initialization() throws IOException, URISyntaxException { + schemaContext = YangParserTestUtils.parseYangResourceDirectory("/complexjson/yang"); + streamAsString = loadTextFile(new File(StreamToNormalizedNodeTest.class.getResource( + "/complexjson/complex-json.json").toURI())); + } + + @AfterClass + public static void cleanup() { + schemaContext = null; + streamAsString = null; } /** * Demonstrates how to log events produced by a {@link JsonReader}. - * - * @throws IOException */ @Test public void ownStreamWriterImplementationDemonstration() throws IOException { @@ -65,7 +62,8 @@ public class StreamToNormalizedNodeTest { final LoggingNormalizedNodeStreamWriter logWriter = new LoggingNormalizedNodeStreamWriter(); // JSON -> StreamWriter parser - try (final JsonParserStream jsonHandler = JsonParserStream.create(logWriter, schemaContext)) { + try (JsonParserStream jsonHandler = JsonParserStream.create(logWriter, + JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext))) { // Process multiple readers, flush()/close() as needed jsonHandler.parse(reader); } @@ -74,8 +72,6 @@ public class StreamToNormalizedNodeTest { /** * Demonstrates how to create an immutable NormalizedNode tree from a {@link JsonReader} and * then writes the data back into string representation. - * - * @throws IOException */ @Test public void immutableNormalizedNodeStreamWriterDemonstration() throws IOException { @@ -83,33 +79,37 @@ public class StreamToNormalizedNodeTest { * This is the parsing part */ // This is where we will output the nodes - final NormalizedNodeContainerBuilder> parent = - Builders.containerBuilder().withNodeIdentifier(new NodeIdentifier(QName.create("dummy", "2014-12-31", "dummy"))); + NormalizedNodeResult result = new NormalizedNodeResult(); // StreamWriter which attaches NormalizedNode under parent - final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(parent); + final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); // JSON -> StreamWriter parser - try (JsonParserStream handler = JsonParserStream.create(streamWriter, schemaContext)) { + try (JsonParserStream handler = JsonParserStream.create(streamWriter, + JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext))) { handler.parse(new JsonReader(new StringReader(streamAsString))); } // Finally build the node - final NormalizedNode parsedData = parent.build(); + final NormalizedNode parsedData = result.getResult(); LOG.debug("Parsed NormalizedNodes: {}", parsedData); /* * This is the serialization part. */ // We want to write the first child out - final DataContainerChild firstChild = ((ContainerNode) parsedData).getValue().iterator().next(); + final DataContainerChild firstChild = + (DataContainerChild) parsedData; LOG.debug("Serializing first child: {}", firstChild); // String holder final StringWriter writer = new StringWriter(); // StreamWriter which outputs JSON strings - final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter.create(schemaContext, writer, 2); + // StreamWriter which outputs JSON strings + final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter.createExclusiveWriter( + JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext), SchemaPath.ROOT, null, + JsonWriterFactory.createJsonWriter(writer, 2)); // NormalizedNode -> StreamWriter final NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(jsonStream); @@ -120,34 +120,4 @@ public class StreamToNormalizedNodeTest { // Just to put it somewhere LOG.debug("Serialized JSON: {}", writer.toString()); } - - private static SchemaContext loadModules(final String resourceDirectory) throws IOException { - YangContextParser parser = new YangParserImpl(); - String path = StreamToNormalizedNodeTest.class.getResource(resourceDirectory).getPath(); - final File testDir = new File(path); - final String[] fileList = testDir.list(); - final List testFiles = new ArrayList(); - if (fileList == null) { - throw new FileNotFoundException(resourceDirectory); - } - for (String fileName : fileList) { - if (new File(testDir, fileName).isDirectory() == false) { - testFiles.add(new File(testDir, fileName)); - } - } - return parser.parseFiles(testFiles); - } - - private static String loadTextFile(final String filePath) throws IOException { - FileReader fileReader = new FileReader(filePath); - BufferedReader bufReader = new BufferedReader(fileReader); - - String line = null; - StringBuilder result = new StringBuilder(); - while ((line = bufReader.readLine()) != null) { - result.append(line); - } - bufReader.close(); - return result.toString(); - } }