X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fimpl%2FTestUtils.java;h=8fd6c1896dc640b324acc54dedd1f232a7e2bc34;hb=48afacdc7835353f5962a4f0e86a8a4242acabd2;hp=760d0407ed77aa55916b7c81d607e18f03c360c9;hpb=36368e8e6f9a791c355a7e61010a04e6a4f347d4;p=yangtools.git diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java index 760d0407ed..8fd6c1896d 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/TestUtils.java @@ -9,56 +9,90 @@ package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.assertEquals; -import java.io.*; +import com.google.common.io.ByteSource; +import com.google.common.io.ByteStreams; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.net.URI; -import java.text.*; -import java.util.*; - +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.*; -import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser; +import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.ChoiceNode; +import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; +import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser; +import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; +import org.opendaylight.yangtools.yang.parser.builder.impl.BuilderUtils; +import org.opendaylight.yangtools.yang.parser.util.NamedByteArrayInputStream; final class TestUtils { private TestUtils() { } - public static Set loadModules(String resourceDirectory) throws FileNotFoundException { - YangModelParser parser = new YangParserImpl(); + + public static Set loadModules(final URI resourceDirectory) throws IOException { + final YangContextParser parser = new YangParserImpl(); final File testDir = new File(resourceDirectory); final String[] fileList = testDir.list(); final List testFiles = new ArrayList<>(); if (fileList == null) { - throw new FileNotFoundException(resourceDirectory); + throw new FileNotFoundException(resourceDirectory.toString()); } for (String fileName : fileList) { testFiles.add(new File(testDir, fileName)); } - return parser.parseYangModels(testFiles); + SchemaContext ctx = parser.parseFiles(testFiles); + return ctx.getModules(); } - public static Set loadModules(List input) throws IOException { - final YangModelParser parser = new YangParserImpl(); - final Set modules = new HashSet<>(parser.parseYangModelsFromStreams(input)); - for (InputStream stream : input) { - stream.close(); - } - return modules; + public static Set loadModules(final List input) throws IOException, YangSyntaxErrorException { + Collection sources = BuilderUtils.streamsToByteSources(input); + final YangContextParser parser = new YangParserImpl(); + SchemaContext ctx = parser.parseSources(sources); + return ctx.getModules(); } - public static Module loadModule(final InputStream stream) throws IOException { - final YangModelParser parser = new YangParserImpl(); - final List input = Collections.singletonList(stream); - final Set modules = new HashSet<>(parser.parseYangModelsFromStreams(input)); - stream.close(); - return modules.iterator().next(); + public static Module loadModule(final InputStream stream) throws IOException, YangSyntaxErrorException { + final YangContextParser parser = new YangParserImpl(); + ByteSource source = new ByteSource() { + @Override + public InputStream openStream() throws IOException { + return NamedByteArrayInputStream.create(stream); + } + }; + final Collection sources = Collections.singletonList(source); + SchemaContext ctx = parser.parseSources(sources); + return ctx.getModules().iterator().next(); } public static Module loadModuleWithContext(final String name, final InputStream stream, final SchemaContext context) - throws IOException { - final YangModelParser parser = new YangParserImpl(); - final List input = Collections.singletonList(stream); - final Set modules = new HashSet<>(parser.parseYangModelsFromStreams(input, context)); + throws IOException, YangSyntaxErrorException { + final YangContextParser parser = new YangParserImpl(); + + final byte[] streamContent = ByteStreams.toByteArray(stream); + + ByteSource source = ByteStreams.asByteSource(streamContent); + + final Collection sources = Collections.singletonList(source); + SchemaContext ctx = parser.parseSources(sources, context); + final Set modules = ctx.getModules(); stream.close(); Module result = null; for (Module module : modules) { @@ -70,19 +104,16 @@ final class TestUtils { return result; } - public static Set loadModulesWithContext(final List input, final SchemaContext context) - throws IOException { - final YangModelParser parser = new YangParserImpl(); - final Set modules = new HashSet<>(parser.parseYangModelsFromStreams(input, context)); - for (InputStream is : input) { - if (is != null) { - is.close(); - } - } + public static Set loadModulesWithContext(final Collection input, final SchemaContext context) + throws IOException, YangSyntaxErrorException { + Collection sources = BuilderUtils.streamsToByteSources(input); + final YangContextParser parser = new YangParserImpl(); + SchemaContext ctx = parser.parseSources(sources, context); + final Set modules = ctx.getModules(); return modules; } - public static Module findModule(Set modules, String moduleName) { + public static Module findModule(final Set modules, final String moduleName) { Module result = null; for (Module module : modules) { if (module.getName().equals(moduleName)) { @@ -93,7 +124,7 @@ final class TestUtils { return result; } - public static ModuleImport findImport(Set imports, String prefix) { + public static ModuleImport findImport(final Set imports, final String prefix) { ModuleImport result = null; for (ModuleImport moduleImport : imports) { if (moduleImport.getPrefix().equals(prefix)) { @@ -104,7 +135,7 @@ final class TestUtils { return result; } - public static TypeDefinition findTypedef(Set> typedefs, String name) { + public static TypeDefinition findTypedef(final Set> typedefs, final String name) { TypeDefinition result = null; for (TypeDefinition td : typedefs) { if (td.getQName().getLocalName().equals(name)) { @@ -115,15 +146,15 @@ final class TestUtils { return result; } - public static SchemaPath createPath(boolean absolute, URI namespace, Date revision, String prefix, String... names) { + public static SchemaPath createPath(final boolean absolute, final URI namespace, final Date revision, final String prefix, final String... names) { List path = new ArrayList<>(); for (String name : names) { path.add(new QName(namespace, revision, prefix, name)); } - return new SchemaPath(path, absolute); + return SchemaPath.create(path, absolute); } - public static Date createDate(String date) { + public static Date createDate(final String date) { Date result; final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { @@ -143,7 +174,7 @@ final class TestUtils { * @param expected * expected value */ - public static void checkIsAugmenting(DataSchemaNode node, boolean expected) { + public static void checkIsAugmenting(final DataSchemaNode node, final boolean expected) { assertEquals(expected, node.isAugmenting()); if (node instanceof DataNodeContainer) { for (DataSchemaNode child : ((DataNodeContainer) node).getChildNodes()) { @@ -165,7 +196,7 @@ final class TestUtils { * @param expected * expected value */ - public static void checkIsAddedByUses(DataSchemaNode node, boolean expected) { + public static void checkIsAddedByUses(final DataSchemaNode node, final boolean expected) { assertEquals(expected, node.isAddedByUses()); if (node instanceof DataNodeContainer) { for (DataSchemaNode child : ((DataNodeContainer) node).getChildNodes()) { @@ -178,17 +209,21 @@ final class TestUtils { } } - public static void checkIsAddedByUses(GroupingDefinition node, boolean expected) { + public static void checkIsAddedByUses(final GroupingDefinition node, final boolean expected) { assertEquals(expected, node.isAddedByUses()); - if (node instanceof DataNodeContainer) { - for (DataSchemaNode child : ((DataNodeContainer) node).getChildNodes()) { - checkIsAddedByUses(child, expected); - } - } else if (node instanceof ChoiceNode) { - for (ChoiceCaseNode caseNode : ((ChoiceNode) node).getCases()) { - checkIsAddedByUses(caseNode, expected); + for (DataSchemaNode child : ((DataNodeContainer) node).getChildNodes()) { + checkIsAddedByUses(child, expected); + } + } + + public static List findModules(final Set modules, final String moduleName) { + List result = new ArrayList<>(); + for (Module module : modules) { + if (module.getName().equals(moduleName)) { + result.add(module); } } + return result; } }