Remove deprecated Yin/YangStatementSourceImpl
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / stmt / TestUtils.java
index 45be98ed549430d1bdd8f495d7b5562b821ff557..0333dc25795c5f96bbf8a61dfd2e085f07a59719 100644 (file)
@@ -11,7 +11,6 @@ import static org.junit.Assert.assertEquals;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -21,8 +20,10 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 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.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
@@ -37,16 +38,19 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.repo.api.YinTextSchemaSource;
 import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangStatementStreamSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YinStatementStreamSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YinTextToDomTransformer;
 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.reactor.CrossSourceStatementReactor.BuildAction;
 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.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
 
 public final class TestUtils {
     private static final Logger LOG = LoggerFactory.getLogger(TestUtils.class);
@@ -54,8 +58,8 @@ public final class TestUtils {
     private TestUtils() {
     }
 
-    public static Set<Module> loadModules(final URI resourceDirectory)
-            throws SourceException, ReactorException, IOException, YangSyntaxErrorException {
+    public static SchemaContext loadModules(final URI resourceDirectory)
+            throws ReactorException, IOException, YangSyntaxErrorException {
         final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
                 .newBuild();
         File[] files = new File(resourceDirectory).listFiles();
@@ -68,73 +72,44 @@ public final class TestUtils {
             }
         }
 
-        SchemaContext ctx = reactor.buildEffective();
-        return ctx.getModules();
+        return reactor.buildEffective();
     }
 
-    public static Set<Module> loadModules(final List<InputStream> streams)
-        throws SourceException, ReactorException {
-        final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
-            .newBuild();
-        for (InputStream inputStream : streams) {
-            reactor.addSource(new YangStatementSourceImpl(inputStream));
+    public static SchemaContext loadModuleResources(final Class<?> refClass, final String... resourceNames)
+            throws IOException, ReactorException, YangSyntaxErrorException {
+        final BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
+
+        for (String resourceName : resourceNames) {
+            reactor.addSource(YangStatementStreamSource.create(YangTextSchemaSource.forResource(refClass, resourceName)));
         }
 
-        SchemaContext ctx = reactor.buildEffective();
-        return ctx.getModules();
+        return reactor.buildEffective();
     }
 
-    public static Set<Module> loadYinModules(final URI resourceDirectory) throws ReactorException {
-        final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
+    public static SchemaContext loadYinModules(final URI resourceDirectory) throws ReactorException, SAXException,
+            IOException {
+        final BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
 
         for (File file : new File(resourceDirectory).listFiles()) {
-            reactor.addSource(new YinStatementSourceImpl(file.getPath(), true));
-        }
-
-        SchemaContext ctx = reactor.buildEffective();
-        return ctx.getModules();
-    }
-
-    public static Set<Module> loadYinModules(final List<InputStream> streams) throws SourceException, ReactorException {
-        final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-        for (InputStream inputStream : streams) {
-            reactor.addSource(new YinStatementSourceImpl(inputStream));
+            reactor.addSource(YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(
+                YinTextSchemaSource.forFile(file))));
         }
 
-        SchemaContext ctx = reactor.buildEffective();
-        return ctx.getModules();
-    }
-
-    public static Module loadModule(final InputStream stream)
-        throws SourceException, ReactorException {
-        final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
-            .newBuild();
-        reactor.addSource(new YangStatementSourceImpl(stream));
-        SchemaContext ctx = reactor.buildEffective();
-        return ctx.getModules().iterator().next();
+        return reactor.buildEffective();
     }
 
-    public static Module loadYinModule(final InputStream stream) throws SourceException, ReactorException {
+    public static Module loadYinModule(final YinTextSchemaSource source) throws ReactorException, SAXException, IOException {
         final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-        reactor.addSources(new YinStatementSourceImpl(stream));
+        reactor.addSources(YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(source)));
         SchemaContext ctx = reactor.buildEffective();
         return ctx.getModules().iterator().next();
     }
 
-    public static Module findModule(final Set<Module> modules,
-        final String moduleName) {
-        Module result = null;
-        for (Module module : modules) {
-            if (module.getName().equals(moduleName)) {
-                result = module;
-                break;
-            }
-        }
-        return result;
+    public static Optional<Module> findModule(final SchemaContext context, final String moduleName) {
+        return context.getModules().stream().filter(module -> moduleName.equals(module.getName())).findAny();
     }
 
-    public static ModuleImport findImport(final Set<ModuleImport> imports,
-            final String prefix) {
+    public static ModuleImport findImport(final Set<ModuleImport> imports, final String prefix) {
         ModuleImport result = null;
         for (ModuleImport moduleImport : imports) {
             if (moduleImport.getPrefix().equals(prefix)) {
@@ -145,8 +120,7 @@ public final class TestUtils {
         return result;
     }
 
-    public static TypeDefinition<?> findTypedef(
-            final Set<TypeDefinition<?>> typedefs, final String name) {
+    public static TypeDefinition<?> findTypedef(final Set<TypeDefinition<?>> typedefs, final String name) {
         TypeDefinition<?> result = null;
         for (TypeDefinition<?> td : typedefs) {
             if (td.getQName().getLocalName().equals(name)) {
@@ -157,12 +131,10 @@ public final class TestUtils {
         return result;
     }
 
-    public static SchemaPath createPath(final boolean absolute,
-            final URI namespace, final Date revision, final String prefix,
-            final String... names) {
-        List<QName> path = new ArrayList<>();
+    public static SchemaPath createPath(final boolean absolute, final QNameModule module, final String... names) {
+        List<QName> path = new ArrayList<>(names.length);
         for (String name : names) {
-            path.add(QName.create(namespace, revision, name));
+            path.add(QName.create(module, name));
         }
         return SchemaPath.create(path, absolute);
     }
@@ -187,8 +159,7 @@ public final class TestUtils {
      * @param expected
      *            expected value
      */
-    public static void checkIsAugmenting(final DataSchemaNode node,
-            final 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)
@@ -211,8 +182,7 @@ public final class TestUtils {
      * @param expected
      *            expected value
      */
-    public static void checkIsAddedByUses(final DataSchemaNode node,
-            final 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)
@@ -226,8 +196,7 @@ public final class TestUtils {
         }
     }
 
-    public static void checkIsAddedByUses(final GroupingDefinition node,
-            final boolean expected) {
+    public static void checkIsAddedByUses(final GroupingDefinition node, final boolean expected) {
         assertEquals(expected, node.isAddedByUses());
         for (DataSchemaNode child : node.getChildNodes()) {
             checkIsAddedByUses(child, expected);
@@ -274,8 +243,7 @@ public final class TestUtils {
     public static SchemaContext parseYangSources(final String yangSourcesDirectoryPath)
             throws SourceException, ReactorException, URISyntaxException, IOException, YangSyntaxErrorException {
 
-        URL resourceDir = StmtTestUtils.class
-                .getResource(yangSourcesDirectoryPath);
+        URL resourceDir = StmtTestUtils.class.getResource(yangSourcesDirectoryPath);
         File testSourcesDir = new File(resourceDir.toURI());
 
         return parseYangSources(testSourcesDir.listFiles());