Remove deprecated Yin/YangStatementSourceImpl
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / impl / util / YangModelDependencyInfo.java
index c0cc5ba9d4cb025b19d0f11811af267af710a6fc..f8c6a229d38dc04b3f01df398a4bec76cd614f23 100644 (file)
@@ -11,7 +11,7 @@ import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
-import java.io.InputStream;
+import java.io.IOException;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Objects;
@@ -24,12 +24,12 @@ import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangStatementStreamSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl;
-import org.opendaylight.yangtools.yang.parser.util.NamedInputStream;
 
 /**
  * Helper transfer object which holds basic and dependency information for YANG
@@ -204,13 +204,21 @@ public abstract class YangModelDependencyInfo {
      * Extracts {@link YangModelDependencyInfo} from input stream containing a YANG model. This parsing does not
      * validate full YANG module, only parses header up to the revisions and imports.
      *
-     * @param yangStream Opened Input stream containing text source of YANG model
+     * @param refClass Base search class
+     * @param resourceName resource name, relative to refClass
      * @return {@link YangModelDependencyInfo}
-     * @throws IllegalArgumentException If input stream is not valid YANG stream
+     * @throws YangSyntaxErrorException If the resource does not pass syntactic analysis
+     * @throws IOException When the resource cannot be read
+     * @throws IllegalArgumentException
+     *             If input stream is not valid YANG stream
      */
-    public static YangModelDependencyInfo fromInputStream(final InputStream yangStream) {
-        final StatementContext yangAST = new YangStatementSourceImpl(yangStream).getYangAST();
-        return parseAST(yangAST, yangStream instanceof NamedInputStream ? yangStream.toString() : null);
+    public static YangModelDependencyInfo forResource(final Class<?> refClass, final String resourceName)
+            throws IOException, YangSyntaxErrorException {
+        final YangStatementStreamSource source = YangStatementStreamSource.create(
+            YangTextSchemaSource.forResource(refClass, resourceName));
+        final ParserRuleContext ast = source.getYangAST();
+        Preconditions.checkArgument(ast instanceof StatementContext);
+        return parseAST((StatementContext) ast, source.getIdentifier().toYangFilename());
     }
 
     private static YangModelDependencyInfo parseModuleContext(final StatementContext module, final String sourceName) {
@@ -232,7 +240,7 @@ public abstract class YangModelDependencyInfo {
                         getReference(sourceName, subStatementContext));
                 final Date revisionDate = revisionDateStr == null ? null : QName.parseRevision(revisionDateStr);
                 final Optional<SemVer> importSemVer = Optional.fromNullable(findSemanticVersion(subStatementContext,
-                    sourceName));
+                            sourceName));
                 result.add(new ModuleImportImpl(importedModuleName, revisionDate, importSemVer));
             }
         }