BUG-7052: introduce YangStatementStreamSource
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / ImportStatementDefinition.java
index 74fb2afd1bbaca846a058aae005f7d1a2dec2607..77337197b990d5cadb6c70206c24999265531a61 100644 (file)
@@ -83,6 +83,13 @@ public class ImportStatementDefinition extends
 
     @Override
     public void onPreLinkageDeclared(final Mutable<String, ImportStatement, EffectiveStatement<String, ImportStatement>> stmt) {
+        /*
+         * Add ModuleIdentifier of a module which is required by this module.
+         * Based on this information, required modules are searched from library
+         * sources.
+         */
+        stmt.addRequiredModule(RevisionImport.getImportedModuleIdentifier(stmt));
+
         final String moduleName = stmt.getStatementArgument();
         final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_PRE_LINKAGE);
         final Prerequisite<StmtContext<?, ?, ?>> imported = importAction.requiresCtx(stmt,
@@ -93,7 +100,7 @@ public class ImportStatementDefinition extends
         importAction.apply(new InferenceAction() {
             @Override
             public void apply() {
-                StmtContext<?, ?, ?> importedModuleContext = imported.get();
+                final StmtContext<?, ?, ?> importedModuleContext = imported.get();
                 Verify.verify(moduleName.equals(importedModuleContext.getStatementArgument()));
                 final URI importedModuleNamespace = importedModuleContext.getFromNamespace(ModuleNameToNamespace.class,
                         moduleName);
@@ -149,7 +156,7 @@ public class ImportStatementDefinition extends
                     StmtContext<?, ?, ?> importedModule = null;
                     ModuleIdentifier importedModuleIdentifier = null;
                     if (impIdentifier.getRevision() == SimpleDateFormatUtil.DEFAULT_DATE_IMP) {
-                        Entry<ModuleIdentifier, StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>>> recentModuleEntry = findRecentModule(
+                        final Entry<ModuleIdentifier, StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>>> recentModuleEntry = findRecentModule(
                                 impIdentifier, stmt.getAllFromNamespace(ModuleNamespace.class));
                         if (recentModuleEntry != null) {
                             importedModuleIdentifier = recentModuleEntry.getKey();
@@ -163,7 +170,7 @@ public class ImportStatementDefinition extends
                     }
 
                     linkageTarget.get().addToNs(ImportedModuleContext.class, importedModuleIdentifier, importedModule);
-                    String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
+                    final String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
                     stmt.addToNs(ImpPrefixToModuleIdentifier.class, impPrefix, importedModuleIdentifier);
 
                     final URI modNs = firstAttributeOf(importedModule.declaredSubstatements(), NamespaceStatement.class);
@@ -188,7 +195,7 @@ public class ImportStatementDefinition extends
             ModuleIdentifier recentModuleIdentifier = impIdentifier;
             Entry<ModuleIdentifier, StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>>> recentModuleEntry = null;
 
-            for (Entry<ModuleIdentifier, StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>>> moduleEntry : allModules
+            for (final Entry<ModuleIdentifier, StmtContext<?, ModuleStatement, EffectiveStatement<String, ModuleStatement>>> moduleEntry : allModules
                     .entrySet()) {
                 final ModuleIdentifier id = moduleEntry.getKey();
 
@@ -229,7 +236,7 @@ public class ImportStatementDefinition extends
             importAction.apply(new InferenceAction() {
                 @Override
                 public void apply() {
-                    Entry<SemVer, StmtContext<?, ?, ?>> importedModuleEntry= findRecentCompatibleModuleEntry(
+                    final Entry<SemVer, StmtContext<?, ?, ?>> importedModuleEntry= findRecentCompatibleModuleEntry(
                             impIdentifier.getName(), stmt);
 
                     StmtContext<?, ?, ?> importedModule = null;
@@ -246,7 +253,7 @@ public class ImportStatementDefinition extends
                     }
 
                     linkageTarget.get().addToNs(ImportedModuleContext.class, importedModuleIdentifier, importedModule);
-                    String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
+                    final String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
                     stmt.addToNs(ImpPrefixToModuleIdentifier.class, impPrefix, importedModuleIdentifier);
                     stmt.addToNs(ImpPrefixToSemVerModuleIdentifier.class, impPrefix, semVerModuleIdentifier);