From 21b3fb1ea12d1e28115f6c216bbbfd9c80b2216f Mon Sep 17 00:00:00 2001 From: Igor Foltin Date: Thu, 8 Dec 2016 08:46:22 +0100 Subject: [PATCH] Bug 7159: Add yang-test-util artifact This patch introduces a new artifact called yang-test-util which provides a utility class with convenience methods for producing effective schema context based on the supplied yang/yin sources or paths to these sources. Converted all places to use these helper methods Change-Id: I49cb3f0df8bdbcf562f68bf600e8e4dd49cfe4f2 Signed-off-by: Igor Foltin --- common/artifacts/pom.xml | 6 + yang-validation-tool/pom.xml | 3 +- .../yangtools/yang/validation/tool/Main.java | 3 +- .../yang/validation/tool/TestUtils.java | 55 -- yang/pom.xml | 1 + yang/yang-data-codec-gson/pom.xml | 5 + .../data/codec/gson/AnyXmlSupportTest.java | 4 +- .../yang/data/codec/gson/Bug4501Test.java | 4 +- .../yang/data/codec/gson/Bug4969Test.java | 5 +- .../yang/data/codec/gson/Bug5446Test.java | 5 +- .../yang/data/codec/gson/Bug6112Test.java | 4 +- .../gson/JsonStreamToNormalizedNodeTest.java | 4 +- .../gson/NormalizedNodeToJsonStreamTest.java | 4 +- .../gson/StreamToNormalizedNodeTest.java | 4 +- .../yang/data/codec/gson/TestUtils.java | 66 +- .../gson/YangModeledAnyXmlSupportTest.java | 4 +- yang/yang-data-codec-xml/pom.xml | 5 + .../yang/data/codec/xml/Bug5396Test.java | 8 +- .../yang/data/codec/xml/Bug5446Test.java | 8 +- .../xml/NormalizedNodeXmlTranslationTest.java | 7 +- .../codec/xml/NormalizedNodesToXmlTest.java | 8 +- .../data/codec/xml/XmlStreamUtilsTest.java | 8 +- .../codec/xml/XmlToNormalizedNodesTest.java | 48 +- .../YangModeledAnyXMLDeserializationTest.java | 11 +- .../YangModeledAnyXMLSerializationTest.java | 9 +- yang/yang-data-impl/pom.xml | 5 + .../yangtools/yang/data/impl/TestUtils.java | 64 -- .../yang/data/impl/codec/xml/Bug2964Test.java | 4 +- .../InstanceIdentifierForXmlCodecTest.java | 4 +- .../impl/codec/xml/XmlDocumentUtilsTest.java | 4 +- .../impl/codec/xml/XmlStreamUtilsTest.java | 4 +- .../StringPatternCheckingCodecTest.java | 4 +- .../DataTreeCandidateValidatorTest.java | 4 +- .../DataTreeCandidateValidatorTest2.java | 4 +- .../DataTreeCandidateValidatorTest3.java | 4 +- .../leafref/context/LeafRefContextTest.java | 4 +- .../LeafRefContextTreeBuilderTest.java | 6 +- .../yang/data/impl/schema/BuilderTest.java | 4 +- .../impl/schema/InstanceIdToNodesTest.java | 4 +- .../schema/NormalizedDataBuilderTest.java | 4 +- ...SchemaOrderedNormalizedNodeWriterTest.java | 12 +- .../DomToNormalizedNodeParserFactoryTest.java | 4 +- .../transform/dom/serializer/Bug5396.java | 4 +- .../transform/dom/serializer/Bug5446Test.java | 4 +- .../serializer/DomSerializerTestUtils.java | 7 +- .../NormalizedNodeXmlTranslationTest.java | 4 +- .../YangModeledAnyXMLDeserializationTest.java | 6 +- .../YangModeledAnyXMLSerializationTest.java | 7 +- .../data/impl/schema/tree/Bug2690Test.java | 4 +- .../data/impl/schema/tree/Bug4295Test.java | 4 +- .../data/impl/schema/tree/Bug4454Test.java | 8 +- .../tree/ListConstraintsValidation.java | 4 +- .../impl/schema/tree/OrderedListTest.java | 4 +- .../yang/data/impl/schema/tree/TestModel.java | 6 +- yang/yang-data-jaxen/pom.xml | 5 + .../yangtools/yang/data/jaxen/JaxenTest.java | 3 +- .../yangtools/yang/data/jaxen/TestUtils.java | 58 -- yang/yang-maven-plugin/pom.xml | 5 + .../plugin/YangToSourcesProcessor.java | 6 +- .../yang2sources/plugin/UtilTest.java | 25 +- yang/yang-model-export/pom.xml | 5 + .../yang/model/export/test/Bug4504Test.java | 3 +- .../yang/model/export/test/Bug5531Test.java | 3 +- .../export/test/SchemaContextEmitterTest.java | 3 +- .../yang/model/export/test/StmtTestUtils.java | 62 -- yang/yang-system-test/pom.xml | 2 +- .../yang/parser/system/test/Main.java | 10 +- .../parser/system/test/YangParserUtils.java | 168 ----- yang/yang-test-util/pom.xml | 62 ++ .../yang/test/util/YangParserTestUtils.java | 682 ++++++++++++++++++ 70 files changed, 903 insertions(+), 689 deletions(-) delete mode 100644 yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/TestUtils.java delete mode 100644 yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/TestUtils.java delete mode 100644 yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/StmtTestUtils.java delete mode 100644 yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/YangParserUtils.java create mode 100644 yang/yang-test-util/pom.xml create mode 100644 yang/yang-test-util/src/main/java/org/opendaylight/yangtools/yang/test/util/YangParserTestUtils.java diff --git a/common/artifacts/pom.xml b/common/artifacts/pom.xml index d9d64f7d9d..fdfa06544e 100644 --- a/common/artifacts/pom.xml +++ b/common/artifacts/pom.xml @@ -109,6 +109,12 @@ yang-parser-impl ${project.version} + + org.opendaylight.yangtools + yang-test-util + ${project.version} + test + org.opendaylight.yangtools yang-maven-plugin diff --git a/yang-validation-tool/pom.xml b/yang-validation-tool/pom.xml index c651f65482..9c263c9f22 100644 --- a/yang-validation-tool/pom.xml +++ b/yang-validation-tool/pom.xml @@ -36,7 +36,8 @@ org.opendaylight.yangtools - yang-parser-impl + yang-test-util + compile net.sourceforge.argparse4j diff --git a/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/Main.java b/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/Main.java index c3a48843bc..5eab866e83 100644 --- a/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/Main.java +++ b/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/Main.java @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.validation.tool; import java.io.File; import java.net.URISyntaxException; import java.util.Arrays; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +28,7 @@ public final class Main { final File[] yangModels = params.getYangSourceDir().listFiles(); try { - TestUtils.parseYangSources(Arrays.asList(yangModels)); + YangParserTestUtils.parseYangSources(Arrays.asList(yangModels)); } catch (Exception e) { LOG.error("Yang files could not be parsed.", e); } diff --git a/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/TestUtils.java b/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/TestUtils.java deleted file mode 100644 index 50931e1302..0000000000 --- a/yang-validation-tool/src/main/java/org/opendaylight/yangtools/yang/validation/tool/TestUtils.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2015 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, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.yangtools.yang.validation.tool; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.Collection; - -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; - -public class TestUtils { - - private TestUtils() { - throw new UnsupportedOperationException("Utility class"); - } - - public static SchemaContext parseYangSources(StatementStreamSource... sources) throws SourceException, - ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(File... files) throws SourceException, ReactorException, - FileNotFoundException { - - StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YangStatementSourceImpl(new FileInputStream(files[i])); - } - - return parseYangSources(sources); - } - - public static SchemaContext parseYangSources(Collection files) throws SourceException, ReactorException, - FileNotFoundException { - return parseYangSources(files.toArray(new File[files.size()])); - } -} diff --git a/yang/pom.xml b/yang/pom.xml index 6e28450651..e52383c526 100644 --- a/yang/pom.xml +++ b/yang/pom.xml @@ -40,6 +40,7 @@ yang-model-export yang-data-jaxen yang-system-test + yang-test-util diff --git a/yang/yang-data-codec-gson/pom.xml b/yang/yang-data-codec-gson/pom.xml index 9f2b78241e..7763d390e0 100644 --- a/yang/yang-data-codec-gson/pom.xml +++ b/yang/yang-data-codec-gson/pom.xml @@ -62,6 +62,11 @@ yang-parser-impl test + + org.opendaylight.yangtools + yang-test-util + test + junit junit 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..1cc22e3ca7 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 @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.codec.gson; 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 com.google.gson.JsonElement; @@ -39,6 +38,7 @@ 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; @@ -54,7 +54,7 @@ public class AnyXmlSupportTest { @BeforeClass public static void setup() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/complexjson/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/complexjson/yang"); } @Test diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java index b95f5cc736..273238c2cf 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java @@ -10,7 +10,6 @@ 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.fail; -import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; import com.google.common.base.Optional; @@ -32,6 +31,7 @@ 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.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4501Test { @@ -39,7 +39,7 @@ public class Bug4501Test { @BeforeClass public static void initialization() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/bug-4501/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/bug-4501/yang"); } @Test diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java index 2a3a1d5a22..32ac33c248 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java @@ -30,13 +30,14 @@ import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4969Test { @Test public void newParserLeafRefTest() throws SourceException, ReactorException, URISyntaxException, IOException { File sourceDir = new File(Bug4969Test.class.getResource("/bug-4969/yang").toURI()); - SchemaContext context = TestUtils.parseYangSources(sourceDir.listFiles()); + SchemaContext context = YangParserTestUtils.parseYangSources(sourceDir.listFiles()); assertNotNull(context); verifyNormalizedNodeResult(context); @@ -95,7 +96,7 @@ public class Bug4969Test { @Test public void newParserLeafRefTest2() throws SourceException, ReactorException, URISyntaxException, IOException { File sourceDir = new File(Bug4969Test.class.getResource("/leafref/yang").toURI()); - SchemaContext context = TestUtils.parseYangSources(sourceDir.listFiles()); + SchemaContext context = YangParserTestUtils.parseYangSources(sourceDir.listFiles()); assertNotNull(context); parseJsonToNormalizedNodes(context); diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java index a765cdef2f..116080fab1 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java @@ -38,6 +38,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug5446Test { @@ -53,8 +54,8 @@ public class Bug5446Test { rootQName = QName.create(fooModuleQName, "root"); ipAddressQName = QName.create(fooModuleQName, "ip-address"); - schemaContext = TestUtils.parseYangSources(new File(Bug5446Test.class.getResource("/bug5446/yang/foo.yang") - .toURI())); + schemaContext = YangParserTestUtils.parseYangSources( + new File(Bug5446Test.class.getResource("/bug5446/yang/foo.yang").toURI())); } @Test diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java index 342e89911a..bbc0a07b6f 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import static org.junit.Assert.assertEquals; 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 com.google.common.base.Optional; @@ -30,13 +29,14 @@ 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.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug6112Test { private static SchemaContext schemaContext; @BeforeClass public static void initialization() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/bug-6112/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/bug-6112/yang"); } private NormalizedNode readJson(final String jsonPath) throws IOException, URISyntaxException { diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java index 96bb518cbd..5ab681dc29 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java @@ -11,7 +11,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -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.impl.schema.Builders.augmentationBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.choiceBuilder; @@ -35,6 +34,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; /** * @@ -48,7 +48,7 @@ public class JsonStreamToNormalizedNodeTest { @BeforeClass public static void initialization() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/complexjson/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/complexjson/yang"); } @Test diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/NormalizedNodeToJsonStreamTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/NormalizedNodeToJsonStreamTest.java index dd866c4b2f..6777a4b05e 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/NormalizedNodeToJsonStreamTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/NormalizedNodeToJsonStreamTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childArray; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childPrimitive; -import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.resolveCont1; import com.google.common.collect.Sets; import com.google.gson.JsonArray; @@ -40,6 +39,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; 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; /** * Each test tests whether json output obtained after transformation contains is corect. The transformation takes @@ -59,7 +59,7 @@ public class NormalizedNodeToJsonStreamTest { @BeforeClass public static void initialization() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/complexjson/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/complexjson/yang"); } @Test 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 28db132ffe..7af0cb752a 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 @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.codec.gson; -import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -31,6 +30,7 @@ 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.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +41,7 @@ public class StreamToNormalizedNodeTest { @BeforeClass public static void initialization() throws IOException, URISyntaxException, ReactorException { - schemaContext = loadModules("/complexjson/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/complexjson/yang"); streamAsString = loadTextFile(new File(StreamToNormalizedNodeTest.class.getResource( "/complexjson/complex-json.json").toURI())); } diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java index e9105db7b9..b98566e140 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import static org.junit.Assert.assertTrue; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -15,80 +16,15 @@ import com.google.gson.JsonParser; import com.google.gson.JsonPrimitive; import java.io.BufferedReader; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; -import java.io.InputStream; -import java.net.URI; import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; public class TestUtils { private TestUtils() { } - static SchemaContext loadModules(final String resourceDirectory) throws IOException, URISyntaxException, - ReactorException { - URI path = StreamToNormalizedNodeTest.class.getResource(resourceDirectory).toURI(); - 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()) { - testFiles.add(new File(testDir, fileName)); - } - } - return parseYangSources(testFiles); - } - - public static SchemaContext parseYangSources(StatementStreamSource... sources) - throws SourceException, ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(File... files) throws SourceException, ReactorException, FileNotFoundException { - - StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i files) throws SourceException, ReactorException, FileNotFoundException { - return parseYangSources(files.toArray(new File[files.size()])); - } - - - public static SchemaContext parseYangStreams(List streams) - throws SourceException, ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(); - return reactor.buildEffective(streams); - } - static String loadTextFile(final File file) throws IOException { FileReader fileReader = new FileReader(file); BufferedReader bufReader = new BufferedReader(fileReader); diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YangModeledAnyXmlSupportTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YangModeledAnyXmlSupportTest.java index fc93965366..889a9bfe6c 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YangModeledAnyXmlSupportTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YangModeledAnyXmlSupportTest.java @@ -10,7 +10,6 @@ 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 com.google.gson.JsonElement; @@ -42,6 +41,7 @@ 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.xml.sax.SAXException; public class YangModeledAnyXmlSupportTest { @@ -52,7 +52,7 @@ public class YangModeledAnyXmlSupportTest { @BeforeClass public static void init() throws IOException, URISyntaxException, ReactorException, SAXException, XMLStreamException, ParserConfigurationException { - schemaContext = loadModules("/yang-modeled-anyxml/yang"); + schemaContext = YangParserTestUtils.parseYangSources("/yang-modeled-anyxml/yang"); final InputStream resourceAsStream = YangModeledAnyXmlSupportTest.class.getResourceAsStream( "/yang-modeled-anyxml/xml/baz.xml"); diff --git a/yang/yang-data-codec-xml/pom.xml b/yang/yang-data-codec-xml/pom.xml index ec4ba7431f..a497624eb3 100644 --- a/yang/yang-data-codec-xml/pom.xml +++ b/yang/yang-data-codec-xml/pom.xml @@ -53,6 +53,11 @@ yang-parser-impl test + + org.opendaylight.yangtools + yang-test-util + test + junit junit diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5396Test.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5396Test.java index b6ffc06dfb..3db72a8cbc 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5396Test.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5396Test.java @@ -32,9 +32,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre 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.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug5396Test { @@ -45,10 +44,7 @@ public class Bug5396Test { public void Init() throws Exception { fooModuleQName = QNameModule.create(new URI("foo"), SimpleDateFormatUtil.getRevisionFormat().parse("2016-03-22")); - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/bug5396/yang/foo.yang", false)); - - schemaContext = reactor.buildEffective(); + schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/bug5396/yang/foo.yang", false)); } @Test diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5446Test.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5446Test.java index 5838a44eba..e51888885b 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5446Test.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug5446Test.java @@ -46,9 +46,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -79,10 +78,7 @@ public class Bug5446Test extends XMLTestCase { rootQName = QName.create(fooModuleQName, "root"); ipAddressQName = QName.create(fooModuleQName, "ip-address"); - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/bug5446/yang/foo.yang", false)); - - schemaContext = reactor.buildEffective(); + schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/bug5446/yang/foo.yang", false)); } @Test diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java index 07ca9443e6..dff1e6dff0 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java @@ -77,9 +77,8 @@ 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.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -271,9 +270,7 @@ public class NormalizedNodeXmlTranslationTest { private final String xmlPath; private SchemaContext parseTestSchema(final String yangPath) throws ReactorException { - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl(yangPath, false)); - return reactor.buildEffective(); + return YangParserTestUtils.parseYangSources(new YangStatementSourceImpl(yangPath, false)); } @Test diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java index 1e0e68dfbe..6b2ecc4874 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java @@ -58,9 +58,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -124,10 +123,7 @@ public class NormalizedNodesToXmlTest { @Test public void testNormalizedNodeToXmlSerialization() throws ReactorException, XMLStreamException, IOException, SAXException { - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - final SchemaContext schemaContext = reactor.buildEffective(); + final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final Document doc = loadDocument("/baz.xml"); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java index 3f04e985f8..da670a9bff 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java @@ -45,9 +45,8 @@ import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; public class XmlStreamUtilsTest { @@ -59,10 +58,7 @@ public class XmlStreamUtilsTest { @BeforeClass public static void initialize() throws URISyntaxException, FileNotFoundException, ReactorException { - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/leafref-test.yang", false)); - - schemaContext = reactor.buildEffective(); + schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/leafref-test.yang", false)); assertNotNull(schemaContext); assertEquals(1, schemaContext.getModules().size()); leafRefModule = schemaContext.getModules().iterator().next(); 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 e6be618dd3..9776bc49e5 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 @@ -47,9 +47,8 @@ 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.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.xml.sax.SAXException; public class XmlToNormalizedNodesTest { @@ -111,10 +110,7 @@ public class XmlToNormalizedNodesTest { @Test public void testComplexXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException, ParserConfigurationException, SAXException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/baz.xml"); @@ -142,10 +138,7 @@ public class XmlToNormalizedNodesTest { @Test public void testSimpleXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException, ParserConfigurationException, SAXException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/foo.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/foo.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/foo.xml"); @@ -165,10 +158,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnDuplicateLeaf() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/foo.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/foo.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo.xml"); @@ -191,10 +181,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnDuplicateAnyXml() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/foo.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/foo.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-2.xml"); @@ -216,10 +203,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnDuplicateContainer() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/foo.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/foo.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-3.xml"); @@ -241,10 +225,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnUnterminatedLeafElement() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz.xml"); @@ -267,10 +248,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnUnterminatedLeafElement2() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-2.xml"); @@ -293,10 +271,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnUnterminatedContainerElement() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-4.xml"); @@ -319,10 +294,7 @@ public class XmlToNormalizedNodesTest { @Test public void shouldFailOnUnexistingContainerElement() throws ReactorException, XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSource(new YangStatementSourceImpl("/baz.yang", false)); - - SchemaContext schemaContext = reactor.buildEffective(); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(new YangStatementSourceImpl("/baz.yang", false)); final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-3.xml"); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLDeserializationTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLDeserializationTest.java index aae76bf455..1aa608eefe 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLDeserializationTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLDeserializationTest.java @@ -43,9 +43,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class YangModeledAnyXMLDeserializationTest { @@ -77,12 +75,7 @@ public class YangModeledAnyXMLDeserializationTest { myLeaf2 = QName.create(fooModuleQName, "my-leaf-2"); myAnyXMLDataFoo = QName.create(fooModuleQName, "my-anyxml-data"); - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(new YangStatementSourceImpl("/anyxml-support/yang/foo.yang", false), - new YangStatementSourceImpl("/anyxml-support/yang/bar.yang", false), - new YangStatementSourceImpl("/anyxml-support/yang/yang-ext.yang", false)); - - schemaContext = reactor.buildEffective(); + schemaContext = YangParserTestUtils.parseYangSources("/anyxml-support/yang"); } @Test diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLSerializationTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLSerializationTest.java index 32a43aa8a6..49a9c72f08 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLSerializationTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/YangModeledAnyXMLSerializationTest.java @@ -51,9 +51,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; 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.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -82,10 +80,7 @@ public class YangModeledAnyXMLSerializationTest extends XMLTestCase { myContainer2QName = QName.create(bazModuleQName, "my-container-2"); myAnyXMLDataBaz = QName.create(bazModuleQName, "my-anyxml-data"); - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(new YangStatementSourceImpl("/anyxml-support/serialization/baz.yang", false), - new YangStatementSourceImpl("/anyxml-support/serialization/yang-ext.yang", false)); - schemaContext = reactor.buildEffective(); + schemaContext = YangParserTestUtils.parseYangSources("/anyxml-support/serialization"); } @Test diff --git a/yang/yang-data-impl/pom.xml b/yang/yang-data-impl/pom.xml index f20d8504c9..58f8b520f9 100644 --- a/yang/yang-data-impl/pom.xml +++ b/yang/yang-data-impl/pom.xml @@ -159,6 +159,11 @@ yang-parser-impl test + + ${project.groupId} + yang-test-util + test + commons-lang commons-lang diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/TestUtils.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/TestUtils.java deleted file mode 100644 index a09f17d4a2..0000000000 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/TestUtils.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2015 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, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.yangtools.yang.data.impl; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.Collection; -import java.util.List; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; - -public class TestUtils { - - private TestUtils() { - throw new UnsupportedOperationException("Utility class"); - } - - public static SchemaContext parseYangSources(StatementStreamSource... sources) throws SourceException, - ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(File... files) throws SourceException, ReactorException, - FileNotFoundException { - - StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YangStatementSourceImpl(new FileInputStream(files[i])); - } - - return parseYangSources(sources); - } - - public static SchemaContext parseYangSources(Collection files) throws SourceException, ReactorException, - FileNotFoundException { - return parseYangSources(files.toArray(new File[files.size()])); - } - - public static SchemaContext parseYangStreams(List streams) - throws SourceException, ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(); - return reactor.buildEffective(streams); - } -} diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/Bug2964Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/Bug2964Test.java index b432d96f4f..8cfc79f292 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/Bug2964Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/Bug2964Test.java @@ -24,13 +24,13 @@ import javax.xml.parsers.ParserConfigurationException; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; @@ -61,7 +61,7 @@ public class Bug2964Test { @Before public void setUp() throws Exception { final File leafRefTestYang = new File(getClass().getResource("/leafref-test.yang").toURI()); - schema = TestUtils.parseYangSources(leafRefTestYang); + schema = YangParserTestUtils.parseYangSources(leafRefTestYang); } public static Document readXmlToDocument(final String xmlContent) throws SAXException, IOException { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/InstanceIdentifierForXmlCodecTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/InstanceIdentifierForXmlCodecTest.java index 935947f9f6..4bf8e35875 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/InstanceIdentifierForXmlCodecTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/InstanceIdentifierForXmlCodecTest.java @@ -19,9 +19,9 @@ import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -40,7 +40,7 @@ public class InstanceIdentifierForXmlCodecTest { @Before public void setup() throws Exception { final File rpcTestYang = new File(getClass().getResource("iid-test.yang").toURI()); - this.schemaContext = TestUtils.parseYangSources(rpcTestYang); + this.schemaContext = YangParserTestUtils.parseYangSources(rpcTestYang); final YangInstanceIdentifier.NodeIdentifier container = new YangInstanceIdentifier.NodeIdentifier( QName.create(InstanceIdentifierForXmlCodecTest.NS, InstanceIdentifierForXmlCodecTest.REVISION, "cont")); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlDocumentUtilsTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlDocumentUtilsTest.java index 0324bb45ae..72c6246f0a 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlDocumentUtilsTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlDocumentUtilsTest.java @@ -33,7 +33,6 @@ import org.opendaylight.yangtools.yang.data.api.ModifyAction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; @@ -43,6 +42,7 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; @@ -80,7 +80,7 @@ public class XmlDocumentUtilsTest { final File rpcTestYang1 = new File(getClass().getResource("xml-doc-test.yang").toURI()); final File rpcTestYang2 = new File(getClass().getResource("xml-doc-test2.yang").toURI()); - this.schema = TestUtils.parseYangSources(rpcTestYang1, rpcTestYang2); + this.schema = YangParserTestUtils.parseYangSources(rpcTestYang1, rpcTestYang2); } public static Document readXmlToDocument(final String xmlContent) throws SAXException, IOException { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtilsTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtilsTest.java index 06e5764f13..32965e2dcc 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtilsTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codec/xml/XmlStreamUtilsTest.java @@ -35,7 +35,6 @@ import org.junit.Ignore; 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.TestUtils; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -47,6 +46,7 @@ import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; 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.w3c.dom.Document; public class XmlStreamUtilsTest { @@ -59,7 +59,7 @@ public class XmlStreamUtilsTest { @BeforeClass public static void initialize() throws URISyntaxException, FileNotFoundException, ReactorException { final File file = new File(XmlStreamUtils.class.getResource("/leafref-test.yang").toURI()); - schemaContext = TestUtils.parseYangSources(file); + schemaContext = YangParserTestUtils.parseYangSources(file); assertNotNull(schemaContext); assertEquals(1, schemaContext.getModules().size()); leafRefModule = schemaContext.getModules().iterator().next(); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java index cfbd0fd35d..3528902bea 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java @@ -21,7 +21,6 @@ import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; @@ -29,6 +28,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; import org.opendaylight.yangtools.yang.data.api.codec.StringCodec; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +40,7 @@ public class StringPatternCheckingCodecTest { @Test public void testStringPatternCheckingCodec() throws ReactorException, ParseException, URISyntaxException { - SchemaContext schemaContext = TestUtils.parseYangSources(TEST_MODULE); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(TEST_MODULE); assertNotNull(schemaContext); QNameModule testModuleQName = QNameModule.create(new URI("string-pattern-checking-codec-test"), diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java index e9e08bf398..ac6a35f389 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java @@ -36,7 +36,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefDataValidationFailedException; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidatation; @@ -53,6 +52,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -122,7 +122,7 @@ public class DataTreeCandidateValidatorTest { .toURI()); final File resourceDir = resourceFile.getParentFile(); - context = TestUtils.parseYangSources(Arrays.asList(resourceDir + context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir .listFiles())); final Set modules = context.getModules(); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java index 60d47246df..9f0f0b3136 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java @@ -30,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefDataValidationFailedException; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidatation; @@ -44,6 +43,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -159,7 +159,7 @@ public class DataTreeCandidateValidatorTest2 { "/leafref-validation/leafref-validation2.yang").toURI()); final File resourceDir = resourceFile.getParentFile(); - context = TestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); + context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); final Set modules = context.getModules(); for (final Module module : modules) { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java index 82906f2568..7aca4447d2 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java @@ -30,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefDataValidationFailedException; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidatation; @@ -44,6 +43,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -206,7 +206,7 @@ public class DataTreeCandidateValidatorTest3 { "/leafref-validation/leafref-validation3.yang").toURI()); final File resourceDir = resourceFile.getParentFile(); - context = TestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); + context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); final Set modules = context.getModules(); for (final Module module : modules) { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTest.java index 097fa671f5..35c3bc4493 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTest.java @@ -20,7 +20,6 @@ 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.TestUtils; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContextUtils; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -28,6 +27,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class LeafRefContextTest { @@ -44,7 +44,7 @@ public class LeafRefContextTest { final File resourceDir = resourceFile.getParentFile(); - context = TestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); + context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); final Set modules = context.getModules(); for (final Module module : modules) { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTreeBuilderTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTreeBuilderTest.java index c377a68e91..9fb1add6bc 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTreeBuilderTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/LeafRefContextTreeBuilderTest.java @@ -23,7 +23,6 @@ import org.junit.Ignore; 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.TestUtils; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext; import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContextUtils; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -31,6 +30,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class LeafRefContextTreeBuilderTest { @@ -47,7 +47,7 @@ public class LeafRefContextTreeBuilderTest { "/leafref-context-test/correct-modules/leafref-test.yang").toURI()); final File resourceDir = resourceFile.getParentFile(); - context = TestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); + context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); final Set modules = context.getModules(); for (final Module module : modules) { @@ -244,7 +244,7 @@ public class LeafRefContextTreeBuilderTest { "/leafref-context-test/incorrect-modules/leafref-test.yang").toURI()); final File resourceDir = resourceFile.getParentFile(); - final SchemaContext context = TestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); + final SchemaContext context = YangParserTestUtils.parseYangSources(Arrays.asList(resourceDir.listFiles())); LeafRefContext.create(context); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java index 3fe28f7932..0c2c6e8c50 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java @@ -34,7 +34,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.OrderedLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; @@ -64,6 +63,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEffectiveStatementImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BuilderTest { private static final QName ROOT_CONTAINER = QName.create("test.namespace.builder.test", "2016-01-01", "root-container"); @@ -92,7 +92,7 @@ public class BuilderTest { public void setup() throws FileNotFoundException, ReactorException, URISyntaxException { final File leafRefTestYang = new File(getClass().getResource("/builder-test/immutable-ordered-map-node.yang") .toURI()); - final SchemaContext schema = TestUtils.parseYangSources(leafRefTestYang); + final SchemaContext schema = YangParserTestUtils.parseYangSources(leafRefTestYang); final Module module = schema.getModules().iterator().next(); final DataSchemaNode root = module.getDataChildByName(ROOT_CONTAINER); list = (ListSchemaNode)((ContainerEffectiveStatementImpl) root).getDataChildByName(LIST_MAIN); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToNodesTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToNodesTest.java index d25c7d0f1d..c362d44d3b 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToNodesTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToNodesTest.java @@ -25,9 +25,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class InstanceIdToNodesTest { @@ -55,7 +55,7 @@ public class InstanceIdToNodesTest { static SchemaContext createTestContext() throws URISyntaxException, FileNotFoundException, ReactorException { final File resourceFile = new File(InstanceIdToNodesTest.class.getResource("/filter-test.yang").toURI()); - return TestUtils.parseYangSources(resourceFile); + return YangParserTestUtils.parseYangSources(resourceFile); } @BeforeClass diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java index f11763ac8c..5f373d1f6c 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java @@ -30,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeSchemaAwareBuilder; @@ -45,6 +44,7 @@ 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.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class NormalizedDataBuilderTest { @@ -55,7 +55,7 @@ public class NormalizedDataBuilderTest { public void setUp() throws URISyntaxException, FileNotFoundException, ReactorException { final File resourceFile = new File(getClass().getResource( "test.yang").toURI()); - schema = TestUtils.parseYangSources(resourceFile); + schema = YangParserTestUtils.parseYangSources(resourceFile); containerNode = (ContainerSchemaNode) getSchemaNode(schema, "test", "container"); } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriterTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriterTest.java index 1922cfa02b..88407f0d7f 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriterTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriterTest.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.data.impl.schema; import java.io.FileNotFoundException; -import java.io.InputStream; import java.io.StringWriter; import java.net.URISyntaxException; import java.util.ArrayList; @@ -31,9 +30,7 @@ import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNo 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.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class SchemaOrderedNormalizedNodeWriterTest { @@ -157,12 +154,7 @@ public class SchemaOrderedNormalizedNodeWriterTest { } private SchemaContext getSchemaContext(final String filePath) throws URISyntaxException, ReactorException, FileNotFoundException { - final InputStream resourceStream = getClass().getResourceAsStream(filePath); - final YangStatementSourceImpl source = new YangStatementSourceImpl(resourceStream); - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(); - reactor.addSources(source); - return reactor.buildEffective(); + return YangParserTestUtils.parseYangSource(filePath); } private static YangInstanceIdentifier.NodeIdentifier getNodeIdentifier(final String ns, final String name) { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactoryTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactoryTest.java index ef63edcc85..c52f8e8c7a 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactoryTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactoryTest.java @@ -15,7 +15,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; @@ -23,6 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Element; public class DomToNormalizedNodeParserFactoryTest { @@ -31,7 +31,7 @@ public class DomToNormalizedNodeParserFactoryTest { public void testFactoryInstantiation() throws ReactorException { YangStatementSourceImpl foo = new YangStatementSourceImpl("/foo.yang", false); - SchemaContext schemaContext = TestUtils.parseYangSources(foo); + SchemaContext schemaContext = YangParserTestUtils.parseYangSources(foo); DomToNormalizedNodeParserFactory factory = DomToNormalizedNodeParserFactory.getInstance( DomUtils.defaultValueCodecProvider(), schemaContext, diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5396.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5396.java index 103adb2aa5..ce7cb06bef 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5396.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5396.java @@ -33,10 +33,10 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum 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.LeafNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -64,7 +64,7 @@ public class Bug5396 { fooModuleQName = QNameModule.create(new URI("foo"), SimpleDateFormatUtil.getRevisionFormat() .parse("2016-03-22")); root = QName.create(fooModuleQName, "root"); - schemaContext = TestUtils + schemaContext = YangParserTestUtils .parseYangSources(new File(getClass().getResource("/bug5396/yang/foo.yang").toURI())); } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5446Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5446Test.java index 79dbab9245..0fb0511cb9 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5446Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/Bug5446Test.java @@ -43,12 +43,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; 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.TestUtils; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -79,7 +79,7 @@ public class Bug5446Test extends XMLTestCase { rootQName = QName.create(fooModuleQName, "root"); ipAddressQName = QName.create(fooModuleQName, "ip-address"); - schemaContext = TestUtils.parseYangSources(new File(getClass().getResource("/bug5446/yang/foo.yang").toURI())); + schemaContext = YangParserTestUtils.parseYangSources(new File(getClass().getResource("/bug5446/yang/foo.yang").toURI())); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomSerializerTestUtils.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomSerializerTestUtils.java index 0950a1ab12..a3a29fbce3 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomSerializerTestUtils.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomSerializerTestUtils.java @@ -24,7 +24,6 @@ import javax.xml.transform.stream.StreamResult; import org.mockito.Mockito; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; @@ -32,8 +31,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serialize import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -49,8 +48,8 @@ public class DomSerializerTestUtils { } public static SchemaContext getSchemaContext() throws ReactorException, IOException, YangSyntaxErrorException { - final StatementStreamSource source = new YangStatementSourceImpl("/dom-serializer-test/serializer-test.yang", false); - final SchemaContext schemaContext = TestUtils.parseYangSources(source); + final YangStatementSourceImpl source = new YangStatementSourceImpl("/dom-serializer-test/serializer-test.yang", false); + final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(source); assertNotNull("Schema context must not be null.", schemaContext); return schemaContext; diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java index 7d3be418b0..b90d4bbb92 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java @@ -58,7 +58,6 @@ 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.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; @@ -73,6 +72,7 @@ import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; 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.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -266,7 +266,7 @@ public class NormalizedNodeXmlTranslationTest { private final String xmlPath; SchemaContext parseTestSchema(final String... yangPath) throws ReactorException { - return TestUtils.parseYangStreams(getTestYangs(yangPath)); + return YangParserTestUtils.parseYangStreams(getTestYangs(yangPath)); } List getTestYangs(final String... yangPaths) { diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLDeserializationTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLDeserializationTest.java index e4eb6237f7..63452250c1 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLDeserializationTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLDeserializationTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertTrue; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -36,7 +35,6 @@ 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.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.YangModeledAnyXmlNode; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory; import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; @@ -47,6 +45,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -92,8 +91,7 @@ public class YangModeledAnyXMLDeserializationTest { myLeaf3 = QName.create(fooModuleQName, "my-leaf-3"); myLeaf2 = QName.create(fooModuleQName, "my-leaf-2"); myAnyXMLDataFoo = QName.create(fooModuleQName, "my-anyxml-data"); - schemaContext = TestUtils.parseYangSources(new File(getClass().getResource("/anyxml-support/yang/foo.yang") - .toURI()), new File(getClass().getResource("/anyxml-support/yang/bar.yang").toURI()), new File(getClass().getResource("/anyxml-support/yang/yang-ext.yang").toURI())); + schemaContext = YangParserTestUtils.parseYangSources("/anyxml-support/yang"); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLSerializationTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLSerializationTest.java index c51c845de9..308f32c0be 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLSerializationTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/YangModeledAnyXMLSerializationTest.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.serialize import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; @@ -43,7 +42,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; 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.api.schema.stream.NormalizedNodeWriter; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; @@ -54,6 +52,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; 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; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; @@ -86,9 +85,7 @@ public class YangModeledAnyXMLSerializationTest extends XMLTestCase { myContainer2QName = QName.create(bazModuleQName, "my-container-2"); myAnyXMLDataBaz = QName.create(bazModuleQName, "my-anyxml-data"); - schemaContext = TestUtils.parseYangSources( - new File(getClass().getResource("/anyxml-support/serialization/baz.yang").toURI()), new File(getClass() - .getResource("/anyxml-support/serialization/yang-ext.yang").toURI())); + schemaContext = YangParserTestUtils.parseYangSources("/anyxml-support/serialization"); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug2690Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug2690Test.java index f0dc617e28..1177d49897 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug2690Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug2690Test.java @@ -25,11 +25,11 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug2690Test { private static final String ODL_DATASTORE_TEST_YANG = "/odl-datastore-test.yang"; @@ -53,7 +53,7 @@ public class Bug2690Test { } public static SchemaContext createTestContext() throws ReactorException { - return TestUtils.parseYangStreams(Collections.singletonList(getDatastoreTestInputStream())); + return YangParserTestUtils.parseYangStreams(Collections.singletonList(getDatastoreTestInputStream())); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4295Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4295Test.java index 8d36915d11..4801cb79de 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4295Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4295Test.java @@ -26,12 +26,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4295Test { @@ -51,7 +51,7 @@ public class Bug4295Test { public void init() throws Exception { final File resourceFile = new File(Bug4295Test.class.getResource("/bug-4295/foo.yang") .toURI()); - context = TestUtils.parseYangSources(resourceFile); + context = YangParserTestUtils.parseYangSources(resourceFile); foo = QNameModule.create(new URI("foo"), SimpleDateFormatUtil.getRevisionFormat().parse("1970-01-01")); root = QName.create(foo, "root"); subRoot = QName.create(foo, "sub-root"); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4454Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4454Test.java index 9c999da6d2..84173e4473 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4454Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug4454Test.java @@ -40,9 +40,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMa import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4454Test { private static final YangStatementSourceImpl source = new YangStatementSourceImpl("/bug-4454-test.yang", false); @@ -122,10 +121,7 @@ public class Bug4454Test { } public static SchemaContext createTestContext() throws IOException, YangSyntaxErrorException, ReactorException { - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(source); - - return reactor.buildEffective(); + return YangParserTestUtils.parseYangSources(source); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java index 404be92bfe..244fda31c5 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java @@ -32,7 +32,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; @@ -40,6 +39,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUn import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,7 +99,7 @@ public class ListConstraintsValidation { } public static SchemaContext createTestContext() throws ReactorException { - return TestUtils.parseYangStreams(Collections.singletonList(getDatastoreTestInputStream())); + return YangParserTestUtils.parseYangStreams(Collections.singletonList(getDatastoreTestInputStream())); } @Test diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OrderedListTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OrderedListTest.java index b12c054788..b6bf61b7b2 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OrderedListTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/OrderedListTest.java @@ -34,9 +34,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -60,7 +60,7 @@ public class OrderedListTest { public void setup() throws Exception { final File resourceFile = new File(Bug4295Test.class.getResource("/ordered-list-modification-test.yang") .toURI()); - context = TestUtils.parseYangSources(resourceFile); + context = YangParserTestUtils.parseYangSources(resourceFile); testModule = QNameModule.create(new URI("ordered-list-modification-test"), SimpleDateFormatUtil.getRevisionFormat().parse("1970-01-01")); parentContainer = QName.create(testModule, "parent-container"); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TestModel.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TestModel.java index 790ac93225..669f46cbcc 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TestModel.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TestModel.java @@ -13,9 +13,9 @@ import java.util.Collections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.impl.TestUtils; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class TestModel { @@ -44,11 +44,11 @@ public class TestModel { } public static SchemaContext createTestContext() throws ReactorException { - return TestUtils.parseYangStreams(Arrays.asList(getDatastoreTestInputStream())); + return YangParserTestUtils.parseYangStreams(Arrays.asList(getDatastoreTestInputStream())); } public static SchemaContext createTestContext(String resourcePath) throws ReactorException { InputStream yangStream = TestModel.class.getResourceAsStream(resourcePath); - return TestUtils.parseYangStreams(Collections.singletonList(yangStream)); + return YangParserTestUtils.parseYangStreams(Collections.singletonList(yangStream)); } } diff --git a/yang/yang-data-jaxen/pom.xml b/yang/yang-data-jaxen/pom.xml index c7805a794e..232ce65f0c 100644 --- a/yang/yang-data-jaxen/pom.xml +++ b/yang/yang-data-jaxen/pom.xml @@ -55,6 +55,11 @@ yang-parser-impl test + + ${project.groupId} + yang-test-util + test + com.google.guava guava diff --git a/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenTest.java b/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenTest.java index be8ba083f6..b2c5284e11 100644 --- a/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenTest.java +++ b/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenTest.java @@ -48,6 +48,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.xpath.XPathSchemaContext; 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; public class JaxenTest { private ConverterNamespaceContext convertNctx; @@ -216,7 +217,7 @@ public class JaxenTest { } private SchemaContext createSchemaContext() throws IOException, URISyntaxException, ReactorException { - return TestUtils.loadModules("/test/documentTest"); + return YangParserTestUtils.parseYangSources("/test/documentTest"); } private static NormalizedNode createNormalizedNodes() { diff --git a/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/TestUtils.java b/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/TestUtils.java index 0f675cea62..798dbeab42 100644 --- a/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/TestUtils.java +++ b/yang/yang-data-jaxen/src/test/java/org/opendaylight/yangtools/yang/data/jaxen/TestUtils.java @@ -12,27 +12,11 @@ import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.ma import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; final class TestUtils { @@ -55,48 +39,6 @@ final class TestUtils { private TestUtils() { } - static SchemaContext loadModules(final String resourceDirectory) throws IOException, URISyntaxException, - ReactorException { - URI path = TestUtils.class.getResource(resourceDirectory).toURI(); - 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()) { - testFiles.add(new File(testDir, fileName)); - } - } - return parseYangSources(testFiles); - } - - public static SchemaContext parseYangSources(StatementStreamSource... sources) - throws SourceException, ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(File... files) throws SourceException, ReactorException, FileNotFoundException { - - StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i files) throws SourceException, ReactorException, FileNotFoundException { - return parseYangSources(files.toArray(new File[files.size()])); - } - /** * Returns a test document * diff --git a/yang/yang-maven-plugin/pom.xml b/yang/yang-maven-plugin/pom.xml index 56c798b73b..9fb5440da3 100644 --- a/yang/yang-maven-plugin/pom.xml +++ b/yang/yang-maven-plugin/pom.xml @@ -68,6 +68,11 @@ ${project.groupId} yang-parser-impl + + ${project.groupId} + yang-test-util + compile + ${project.groupId} yang-maven-plugin-spi diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java index 8ad0e46335..604fab0d13 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java @@ -30,9 +30,8 @@ import org.apache.maven.project.MavenProject; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.repo.YangTextSchemaContextResolver; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg; import org.opendaylight.yangtools.yang2sources.plugin.Util.ContextHolder; import org.opendaylight.yangtools.yang2sources.plugin.Util.YangsInZipsResult; @@ -119,7 +118,6 @@ class YangToSourcesProcessor { } private ContextHolder processYang() throws MojoExecutionException { - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); SchemaContext resolveSchemaContext; List closeables = new ArrayList<>(); LOG.info("{} Inspecting {}", LOG_PREFIX, yangFilesRootDir); @@ -187,7 +185,7 @@ class YangToSourcesProcessor { closeables.addAll(yangStreams); } - resolveSchemaContext = reactor.buildEffective(all); + resolveSchemaContext = YangParserTestUtils.parseYangStreams(all); Set parsedAllYangModules = resolveSchemaContext.getModules(); projectYangModules = new HashSet<>(); diff --git a/yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/UtilTest.java b/yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/UtilTest.java index 846f7a7500..db443dcbd2 100644 --- a/yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/UtilTest.java +++ b/yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/UtilTest.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang2sources.plugin; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; @@ -41,12 +40,7 @@ import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.opendaylight.yangtools.yang2sources.plugin.Util.ContextHolder; import org.opendaylight.yangtools.yang2sources.plugin.Util.YangsInZipsResult; @@ -145,7 +139,7 @@ public class UtilTest { public void contextHolderTest() throws Exception { final File testYang1 = new File(getClass().getResource("/test.yang").toURI()); final File testYang2 = new File(getClass().getResource("/test2.yang").toURI()); - final SchemaContext context = parseYangSources(testYang1, testYang2); + final SchemaContext context = YangParserTestUtils.parseYangSources(testYang1, testYang2); final Set yangModules = new HashSet<>(); final Util.ContextHolder cxH = new ContextHolder(context, yangModules); Assert.assertEquals(context, cxH.getContext()); @@ -232,19 +226,4 @@ public class UtilTest { } } } - - private SchemaContext parseYangSources(final File... files) - throws SourceException, ReactorException, FileNotFoundException { - - final StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YangStatementSourceImpl(new FileInputStream(files[i])); - } - - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } } diff --git a/yang/yang-model-export/pom.xml b/yang/yang-model-export/pom.xml index edb0c627ab..f680f9a319 100644 --- a/yang/yang-model-export/pom.xml +++ b/yang/yang-model-export/pom.xml @@ -55,6 +55,11 @@ yang-parser-impl test + + ${project.groupId} + yang-test-util + test + org.mockito mockito-core diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug4504Test.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug4504Test.java index a3d5a6c34b..72514b4e5a 100644 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug4504Test.java +++ b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug4504Test.java @@ -15,11 +15,12 @@ import org.junit.Test; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.export.YinExportUtils; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4504Test { @Test public void test() throws Exception { - SchemaContext schema = StmtTestUtils.parseYangSources("/bugs/bug4504"); + SchemaContext schema = YangParserTestUtils.parseYangSources("/bugs/bug4504"); assertNotNull(schema); final File outDir = new File("target/bug4504-export"); outDir.mkdirs(); diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug5531Test.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug5531Test.java index 0d0d9d1bb4..39e4eeba86 100644 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug5531Test.java +++ b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/Bug5531Test.java @@ -18,11 +18,12 @@ import org.junit.Test; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.export.YinExportUtils; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug5531Test { @Test public void test() throws Exception { - SchemaContext schema = StmtTestUtils.parseYangSources("/bugs/bug5531"); + SchemaContext schema = YangParserTestUtils.parseYangSources("/bugs/bug5531"); assertNotNull(schema); assertNotNull(schema.getModules()); diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/SchemaContextEmitterTest.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/SchemaContextEmitterTest.java index 1216b706b4..f94f8dea4f 100644 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/SchemaContextEmitterTest.java +++ b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/SchemaContextEmitterTest.java @@ -40,6 +40,7 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.export.YinExportUtils; 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.Node; import org.xml.sax.SAXException; @@ -49,7 +50,7 @@ public class SchemaContextEmitterTest { @Test public void testSchemaContextEmitter() throws ReactorException, IOException, URISyntaxException, XMLStreamException, SAXException { - final SchemaContext schemaContext = StmtTestUtils.parseYangSources("/schema-context-emitter-test"); + final SchemaContext schemaContext = YangParserTestUtils.parseYangSources("/schema-context-emitter-test"); assertNotNull(schemaContext); assertEquals(1, schemaContext.getModules().size()); diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/StmtTestUtils.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/StmtTestUtils.java deleted file mode 100644 index 1231e7832d..0000000000 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/StmtTestUtils.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2015 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, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.yangtools.yang.model.export.test; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; -import java.net.URL; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; -import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; - -final class StmtTestUtils { - - final static FileFilter YANG_FILE_FILTER = file -> { - String name = file.getName().toLowerCase(); - return name.endsWith(".yang") && file.isFile(); - }; - - private StmtTestUtils() { - throw new UnsupportedOperationException("Utility class"); - } - - static SchemaContext parseYangSources(StatementStreamSource... sources) throws SourceException, ReactorException { - - CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - static SchemaContext parseYangSources(File... files) throws SourceException, ReactorException, - FileNotFoundException { - StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YangStatementSourceImpl(new NamedFileInputStream(files[i], files[i].getPath())); - } - - return parseYangSources(sources); - } - - static SchemaContext parseYangSources(String yangSourcesDirectoryPath) throws SourceException, ReactorException, - FileNotFoundException, URISyntaxException { - URL resourceDir = StmtTestUtils.class.getResource(yangSourcesDirectoryPath); - File testSourcesDir = new File(resourceDir.toURI()); - - return parseYangSources(testSourcesDir.listFiles(YANG_FILE_FILTER)); - } -} diff --git a/yang/yang-system-test/pom.xml b/yang/yang-system-test/pom.xml index 31ffd28c46..fa8ea6bd8f 100644 --- a/yang/yang-system-test/pom.xml +++ b/yang/yang-system-test/pom.xml @@ -21,7 +21,7 @@ ${project.groupId} - yang-parser-impl + yang-test-util ${project.version} diff --git a/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/Main.java b/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/Main.java index cab46b9cf3..537a1f8d1a 100644 --- a/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/Main.java +++ b/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/Main.java @@ -8,8 +8,6 @@ package org.opendaylight.yangtools.yang.parser.system.test; import com.google.common.base.Stopwatch; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -28,8 +26,7 @@ import org.apache.commons.cli.ParseException; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.repo.api.IfFeaturePredicates; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; /** * Main class of Yang parser system test. @@ -78,8 +75,7 @@ public class Main { return options; } - public static void main(final String[] args) throws SourceException, FileNotFoundException, ReactorException, - URISyntaxException { + public static void main(final String[] args) { final HelpFormatter formatter = new HelpFormatter(); final Options options = createOptions(); @@ -117,7 +113,7 @@ public class Main { final Stopwatch stopWatch = Stopwatch.createStarted(); try { - context = YangParserUtils.parseYangSources(yangDirs, yangFiles, isFeatureSupported); + context = YangParserTestUtils.parseYangSources(yangDirs, yangFiles, isFeatureSupported); } catch (final Exception e) { LOG.log(Level.SEVERE, "Failed to create SchemaContext.", e); System.exit(1); diff --git a/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/YangParserUtils.java b/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/YangParserUtils.java deleted file mode 100644 index 4deac827fc..0000000000 --- a/yang/yang-system-test/src/main/java/org/opendaylight/yangtools/yang/parser/system/test/YangParserUtils.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * 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, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.yangtools.yang.parser.system.test; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.function.Predicate; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.repo.api.IfFeaturePredicates; -import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; -import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YinStatementSourceImpl; -import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; - -public class YangParserUtils { - - final public static FileFilter YANG_FILE_FILTER = new FileFilter() { - @Override - public boolean accept(final File file) { - final String name = file.getName().toLowerCase(); - return name.endsWith(".yang") && file.isFile(); - } - }; - - final public static FileFilter YIN_FILE_FILTER = new FileFilter() { - @Override - public boolean accept(final File file) { - final String name = file.getName().toLowerCase(); - return name.endsWith(".xml") && file.isFile(); - } - }; - - private YangParserUtils() { - new UnsupportedOperationException("Utility class"); - } - - public static void addSources(final CrossSourceStatementReactor.BuildAction reactor, - final YangStatementSourceImpl... sources) { - for (final YangStatementSourceImpl source : sources) { - reactor.addSource(source); - } - } - - public static SchemaContext parseYangSources(final StatementStreamSource... sources) throws SourceException, - ReactorException { - return parseYangSources(IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE, sources); - } - - public static SchemaContext parseYangSources(final Predicate isFeatureSupported, - final StatementParserMode statementParserMode, final StatementStreamSource... sources) - throws SourceException, ReactorException { - - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild( - statementParserMode, isFeatureSupported); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(final File... files) throws SourceException, ReactorException, - FileNotFoundException { - return parseYangSources(IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE, files); - } - - public static SchemaContext parseYangSources(final Predicate isFeatureSupported, - final StatementParserMode statementParserMode, final File... files) throws SourceException, - ReactorException, FileNotFoundException { - - final StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YangStatementSourceImpl(new NamedFileInputStream(files[i], files[i].getPath())); - } - - return parseYangSources(isFeatureSupported, statementParserMode, sources); - } - - public static SchemaContext parseYangSources(final Collection files, final Predicate isFeatureSupported) - throws SourceException, ReactorException, FileNotFoundException { - return parseYangSources(files, StatementParserMode.DEFAULT_MODE, isFeatureSupported); - } - - public static SchemaContext parseYangSources(final Collection files, - final StatementParserMode statementParserMode, final Predicate isFeatureSupported) - throws SourceException, ReactorException, FileNotFoundException { - return parseYangSources(isFeatureSupported, statementParserMode, files.toArray(new File[files.size()])); - } - - public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath) throws SourceException, - ReactorException, FileNotFoundException, URISyntaxException { - return parseYangSources(yangSourcesDirectoryPath, StatementParserMode.DEFAULT_MODE); - } - - public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath, - final StatementParserMode statementParserMode) throws SourceException, ReactorException, - FileNotFoundException, URISyntaxException { - final File testSourcesDir = new File(yangSourcesDirectoryPath); - return parseYangSources(IfFeaturePredicates.ALL_FEATURES, statementParserMode, - testSourcesDir.listFiles(YANG_FILE_FILTER)); - } - - public static SchemaContext parseYinSources(final String yinSourcesDirectoryPath, - final StatementParserMode statementParserMode) throws SourceException, ReactorException, - FileNotFoundException, URISyntaxException { - - final File testSourcesDir = new File(yinSourcesDirectoryPath); - return parseYinSources(statementParserMode, testSourcesDir.listFiles(YIN_FILE_FILTER)); - } - - public static SchemaContext parseYinSources(final StatementParserMode statementParserMode, final File... files) - throws SourceException, ReactorException, FileNotFoundException { - - final StatementStreamSource[] sources = new StatementStreamSource[files.length]; - - for (int i = 0; i < files.length; i++) { - sources[i] = new YinStatementSourceImpl(new NamedFileInputStream(files[i], files[i].getPath())); - } - - return parseYinSources(statementParserMode, sources); - } - - public static SchemaContext parseYinSources(final StatementParserMode statementParserMode, - final StatementStreamSource... sources) throws SourceException, ReactorException { - - final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR - .newBuild(statementParserMode); - reactor.addSources(sources); - - return reactor.buildEffective(); - } - - public static SchemaContext parseYangSources(final List yangDirs, final List yangFiles, - final Predicate isFeatureSupported) throws SourceException, FileNotFoundException, ReactorException { - final List allYangFiles = new ArrayList<>(); - for (final String yangDir : yangDirs) { - allYangFiles.addAll(getYangFiles(yangDir)); - } - - for (final String yangFile : yangFiles) { - allYangFiles.add(new File(yangFile)); - } - - return parseYangSources(allYangFiles, isFeatureSupported); - } - - public static Collection getYangFiles(final String yangSourcesDirectoryPath) { - final File testSourcesDir = new File(yangSourcesDirectoryPath); - return Arrays.asList(testSourcesDir.listFiles(YANG_FILE_FILTER)); - } -} diff --git a/yang/yang-test-util/pom.xml b/yang/yang-test-util/pom.xml new file mode 100644 index 0000000000..5abcb92815 --- /dev/null +++ b/yang/yang-test-util/pom.xml @@ -0,0 +1,62 @@ + + + + + + + org.opendaylight.odlparent + bundle-parent + 1.8.0-SNAPSHOT + + + + 4.0.0 + org.opendaylight.yangtools + yang-test-util + 1.1.0-SNAPSHOT + bundle + ${project.artifactId} + ${project.artifactId} + + + + + org.opendaylight.yangtools + yangtools-artifacts + 1.1.0-SNAPSHOT + import + pom + + + + + + + org.opendaylight.yangtools + yang-parser-impl + + + + + ${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/ + + + + opendaylight-site + ${nexus.site.url}/${project.artifactId}/ + + + + \ No newline at end of file diff --git a/yang/yang-test-util/src/main/java/org/opendaylight/yangtools/yang/test/util/YangParserTestUtils.java b/yang/yang-test-util/src/main/java/org/opendaylight/yangtools/yang/test/util/YangParserTestUtils.java new file mode 100644 index 0000000000..04c73799d1 --- /dev/null +++ b/yang/yang-test-util/src/main/java/org/opendaylight/yangtools/yang/test/util/YangParserTestUtils.java @@ -0,0 +1,682 @@ +/* + * 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, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.yangtools.yang.test.util; + +import com.google.common.annotations.Beta; +import java.io.File; +import java.io.FileFilter; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.function.Predicate; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.repo.api.IfFeaturePredicates; +import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; +import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YinStatementStreamSource; +import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; +import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream; + +/** + * Utility class which provides convenience methods for producing effective schema context based on the supplied + * yang/yin sources or paths to these sources + */ +@Beta +public final class YangParserTestUtils { + + private static final FileFilter YANG_FILE_FILTER = file -> { + final String name = file.getName().toLowerCase(); + return name.endsWith(".yang") && file.isFile(); + }; + + private YangParserTestUtils() { + throw new UnsupportedOperationException("Utility class should not be instantiated."); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param sources YANG sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final YangStatementSourceImpl... sources) throws ReactorException { + return parseYangSources(IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE, sources); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param sources YANG sources to be parsed + * + * @return effective schema context + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final Predicate isFeatureSupported, + final YangStatementSourceImpl... sources) throws ReactorException { + return parseYangSources(isFeatureSupported, StatementParserMode.DEFAULT_MODE, sources); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param statementParserMode mode of statement parser + * @param sources YANG sources to be parsed + * + * @return effective schema context + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final StatementParserMode statementParserMode, + final YangStatementSourceImpl... sources) throws ReactorException { + return parseYangSources(IfFeaturePredicates.ALL_FEATURES, statementParserMode, sources); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * @param sources YANG sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final Predicate isFeatureSupported, + final StatementParserMode statementParserMode, final YangStatementSourceImpl... sources) throws ReactorException { + final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild( + statementParserMode, isFeatureSupported); + reactor.addSources(sources); + + return reactor.buildEffective(); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param files YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final File... files) throws ReactorException, FileNotFoundException { + return parseYangSources(IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE, files); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param files YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Predicate isFeatureSupported, final File... files) + throws ReactorException, FileNotFoundException { + return parseYangSources(isFeatureSupported, StatementParserMode.DEFAULT_MODE, files); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param statementParserMode mode of statement parser + * @param files YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final StatementParserMode statementParserMode, final File... files) + throws ReactorException, FileNotFoundException { + return parseYangSources(IfFeaturePredicates.ALL_FEATURES, statementParserMode, files); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * @param files YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Predicate isFeatureSupported, + final StatementParserMode statementParserMode, final File... files) throws ReactorException, + FileNotFoundException { + final YangStatementSourceImpl[] sources = new YangStatementSourceImpl[files.length]; + for (int i = 0; i < files.length; i++) { + sources[i] = new YangStatementSourceImpl(new NamedFileInputStream(files[i], files[i].getPath())); + } + + return parseYangSources(isFeatureSupported, statementParserMode, sources); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param files collection of YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Collection files) throws ReactorException, + FileNotFoundException { + return parseYangSources(files, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param files collection of YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Collection files, final Predicate isFeatureSupported) + throws ReactorException, FileNotFoundException { + return parseYangSources(files, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param statementParserMode mode of statement parser + * @param files collection of YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Collection files, final StatementParserMode statementParserMode) + throws ReactorException, FileNotFoundException { + return parseYangSources(files, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * @param files collection of YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified files does not exist + */ + public static SchemaContext parseYangSources(final Collection files, final Predicate isFeatureSupported, + final StatementParserMode statementParserMode) throws ReactorException, FileNotFoundException { + return parseYangSources(isFeatureSupported, statementParserMode, files.toArray(new File[files.size()])); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param yangSourcesDirectoryPath relative path to the directory with YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if the specified directory does not exist + * @throws URISyntaxException if the specified directory does not exist + */ + public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath) throws ReactorException, + FileNotFoundException, URISyntaxException { + return parseYangSources(yangSourcesDirectoryPath, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param yangSourcesDirectoryPath relative path to the directory with YANG files to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if the specified directory does not exist + * @throws URISyntaxException if the specified directory does not exist + */ + public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath, + final Predicate isFeatureSupported) throws ReactorException, FileNotFoundException, URISyntaxException { + return parseYangSources(yangSourcesDirectoryPath, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param yangSourcesDirectoryPath relative path to the directory with YANG files to be parsed + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if the specified directory does not exist + * @throws URISyntaxException if the specified directory does not exist + */ + public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath, + final StatementParserMode statementParserMode) throws ReactorException, FileNotFoundException, URISyntaxException { + return parseYangSources(yangSourcesDirectoryPath, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param yangSourcesDirectoryPath relative path to the directory with YANG files to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if the specified directory does not exist + * @throws URISyntaxException if the specified directory does not exist + */ + public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath, + final Predicate isFeatureSupported, final StatementParserMode statementParserMode) throws ReactorException, + FileNotFoundException, URISyntaxException { + final URI directoryPath = YangParserTestUtils.class.getResource(yangSourcesDirectoryPath).toURI(); + final File dir = new File(directoryPath); + + return parseYangSources(isFeatureSupported, statementParserMode, dir.listFiles(YANG_FILE_FILTER)); + } + + /** + * Creates a new effective schema context containing the specified YANG source. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param yangSourcePath relative path to the YANG file to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in the parsed YANG source + * @throws FileNotFoundException if the specified file does not exist + * @throws URISyntaxException if the specified file does not exist + */ + public static SchemaContext parseYangSource(final String yangSourcePath) throws ReactorException, + FileNotFoundException, URISyntaxException { + return parseYangSource(yangSourcePath, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG source. Statement parser mode is set to + * default mode. + * + * @param yangSourcePath relative path to the YANG file to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG model are resolved + * + * @return effective schema context + * + * @throws ReactorException if there is an error in the parsed YANG source + * @throws FileNotFoundException if the specified file does not exist + * @throws URISyntaxException if the specified file does not exist + */ + public static SchemaContext parseYangSource(final String yangSourcePath, final Predicate isFeatureSupported) + throws ReactorException, FileNotFoundException, URISyntaxException { + return parseYangSource(yangSourcePath, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG source. All YANG features are supported. + * + * @param yangSourcePath relative path to the YANG file to be parsed + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in the parsed YANG source + * @throws FileNotFoundException if the specified file does not exist + * @throws URISyntaxException if the specified file does not exist + */ + public static SchemaContext parseYangSource(final String yangSourcePath, final StatementParserMode statementParserMode) + throws ReactorException, FileNotFoundException, URISyntaxException { + return parseYangSource(yangSourcePath, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG source. + * + * @param yangSourcePath relative path to the YANG file to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG model are resolved + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in the parsed YANG source + * @throws FileNotFoundException if the specified file does not exist + * @throws URISyntaxException if the specified file does not exist + */ + public static SchemaContext parseYangSource(final String yangSourcePath, final Predicate isFeatureSupported, + final StatementParserMode statementParserMode) throws ReactorException, FileNotFoundException, URISyntaxException { + final URI sourcePath = YangParserTestUtils.class.getResource(yangSourcePath).toURI(); + final File sourceFile = new File(sourcePath); + return parseYangSources(isFeatureSupported, statementParserMode, sourceFile); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param yangDirs relative paths to the directories containing YANG files to be parsed + * @param yangFiles relative paths to the YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified directories or files does not exist + * @throws URISyntaxException if one of the specified directories or files does not exist + */ + public static SchemaContext parseYangSources(final List yangDirs, final List yangFiles) + throws FileNotFoundException, ReactorException, URISyntaxException { + return parseYangSources(yangDirs, yangFiles, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param yangDirs relative paths to the directories containing YANG files to be parsed + * @param yangFiles relative paths to the YANG files to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified directories or files does not exist + * @throws URISyntaxException if one of the specified directories or files does not exist + */ + public static SchemaContext parseYangSources(final List yangDirs, final List yangFiles, + final Predicate isFeatureSupported) throws FileNotFoundException, ReactorException, URISyntaxException { + return parseYangSources(yangDirs, yangFiles, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param yangDirs relative paths to the directories containing YANG files to be parsed + * @param yangFiles relative paths to the YANG files to be parsed + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified directories or files does not exist + * @throws URISyntaxException if one of the specified directories or files does not exist + */ + public static SchemaContext parseYangSources(final List yangDirs, final List yangFiles, + final StatementParserMode statementParserMode) throws FileNotFoundException, ReactorException, + URISyntaxException { + return parseYangSources(yangDirs, yangFiles, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param yangDirs relative paths to the directories containing YANG files to be parsed + * @param yangFiles relative paths to the YANG files to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + * @throws FileNotFoundException if one of the specified directories or files does not exist + * @throws URISyntaxException if one of the specified directories or files does not exist + */ + public static SchemaContext parseYangSources(final List yangDirs, final List yangFiles, + final Predicate isFeatureSupported, final StatementParserMode statementParserMode) + throws FileNotFoundException, ReactorException, URISyntaxException { + final List allYangFiles = new ArrayList<>(); + for (final String yangDir : yangDirs) { + allYangFiles.addAll(getYangFiles(yangDir)); + } + + for (final String yangFile : yangFiles) { + final URI filePath = YangParserTestUtils.class.getResource(yangFile).toURI(); + allYangFiles.add(new File(filePath)); + } + + return parseYangSources(allYangFiles, isFeatureSupported, statementParserMode); + } + + private static Collection getYangFiles(final String yangSourcesDirectoryPath) throws URISyntaxException { + final URI directoryPath = YangParserTestUtils.class.getResource(yangSourcesDirectoryPath).toURI(); + final File dir = new File(directoryPath); + + return Arrays.asList(dir.listFiles(YANG_FILE_FILTER)); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param filePaths relative paths to the YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final List filePaths) throws ReactorException { + return parseYangSources(filePaths, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param filePaths relative paths to the YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final List filePaths, final Predicate isFeatureSupported) + throws ReactorException { + return parseYangSources(filePaths, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param statementParserMode mode of statement parser + * @param filePaths relative paths to the YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final List filePaths,final StatementParserMode statementParserMode) + throws ReactorException { + return parseYangSources(filePaths, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * @param filePaths relative paths to the YANG files to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangSources(final List filePaths, final Predicate isFeatureSupported, + final StatementParserMode statementParserMode) throws ReactorException { + final YangStatementSourceImpl[] sources = new YangStatementSourceImpl[filePaths.size()]; + + for (int i = 0; i < filePaths.size(); i++) { + sources[i] = new YangStatementSourceImpl(YangParserTestUtils.class.getResourceAsStream(filePaths.get(i))); + } + + return parseYangSources(isFeatureSupported, statementParserMode, sources); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param streams input streams containing YANG sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangStreams(final List streams) throws ReactorException { + return parseYangStreams(streams, IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. Statement parser mode is set to + * default mode. + * + * @param streams input streams containing YANG sources to be parsed + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangStreams(final List streams, final Predicate isFeatureSupported) + throws ReactorException { + return parseYangStreams(streams, isFeatureSupported, StatementParserMode.DEFAULT_MODE); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. All YANG features are supported. + * + * @param streams input streams containing YANG sources to be parsed + * @param statementParserMode mode of statement parser + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangStreams(final List streams, final StatementParserMode statementParserMode) + throws ReactorException { + return parseYangStreams(streams, IfFeaturePredicates.ALL_FEATURES, statementParserMode); + } + + /** + * Creates a new effective schema context containing the specified YANG sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YANG models are resolved + * @param statementParserMode mode of statement parser + * @param streams input streams containing YANG sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YANG sources + */ + public static SchemaContext parseYangStreams(final List streams, final Predicate isFeatureSupported, + final StatementParserMode statementParserMode) throws ReactorException { + final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild( + statementParserMode, isFeatureSupported); + return reactor.buildEffective(streams); + } + + /** + * Creates a new effective schema context containing the specified YIN sources. Statement parser mode is set to + * default mode and all YANG features are supported. + * + * @param sources YIN sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YIN sources + */ + public static SchemaContext parseYinSources(final YinStatementStreamSource... sources) throws ReactorException { + return parseYinSources(IfFeaturePredicates.ALL_FEATURES, StatementParserMode.DEFAULT_MODE, sources); + } + + /** + * Creates a new effective schema context containing the specified YIN sources. Statement parser mode is set to + * default mode. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YIN models are resolved + * @param sources YIN sources to be parsed + * + * @return effective schema context + * @throws ReactorException if there is an error in one of the parsed YIN sources + */ + public static SchemaContext parseYinSources(final Predicate isFeatureSupported, + final YinStatementStreamSource... sources) throws ReactorException { + return parseYinSources(isFeatureSupported, StatementParserMode.DEFAULT_MODE, sources); + } + + /** + * Creates a new effective schema context containing the specified YIN sources. All YANG features are supported. + * + * @param statementParserMode mode of statement parser + * @param sources YIN sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YIN sources + */ + public static SchemaContext parseYinSources(final StatementParserMode statementParserMode, + final YinStatementStreamSource... sources) throws ReactorException { + return parseYinSources(IfFeaturePredicates.ALL_FEATURES, statementParserMode, sources); + } + + /** + * Creates a new effective schema context containing the specified YIN sources. + * + * @param isFeatureSupported predicate based on which all if-feature statements in the parsed YIN models are resolved + * @param statementParserMode mode of statement parser + * @param sources YIN sources to be parsed + * + * @return effective schema context + * + * @throws ReactorException if there is an error in one of the parsed YIN sources + */ + public static SchemaContext parseYinSources(final Predicate isFeatureSupported, + final StatementParserMode statementParserMode, final YinStatementStreamSource... sources) throws ReactorException { + final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild( + statementParserMode, isFeatureSupported); + reactor.addSources(sources); + + return reactor.buildEffective(); + } +} -- 2.36.6