- Optional<Module_stmtContext> moduleCtx = getFirstContext(yangContext, Module_stmtContext.class);
- if (moduleCtx.isPresent()) {
- return parseModuleContext(moduleCtx.get());
- }
- Optional<Submodule_stmtContext> submoduleCtx = getFirstContext(yangContext, Submodule_stmtContext.class);
- if (submoduleCtx.isPresent()) {
- return parseSubmoduleContext(submoduleCtx.get());
+ private static YangModelDependencyInfo parseModuleContext(final StatementContext module) {
+ final String name = Utils.stringFromStringContext(module.argument());
+ final String latestRevision = getLatestRevision(module);
+ final Optional<SemVer> semVer = Optional.fromNullable(getSemanticVersion(module));
+ final ImmutableSet<ModuleImport> imports = parseImports(module);
+ final ImmutableSet<ModuleImport> includes = parseIncludes(module);
+
+ return new ModuleDependencyInfo(name, latestRevision, imports, includes, semVer);
+ }
+
+ private static ImmutableSet<ModuleImport> parseImports(final StatementContext module) {
+ final Set<ModuleImport> result = new HashSet<>();
+ final List<StatementContext> subStatements = module.statement();
+ for (final StatementContext subStatementContext : subStatements) {
+ if (subStatementContext
+ .keyword()
+ .getText()
+ .equals(Rfc6020Mapping.IMPORT.getStatementName()
+ .getLocalName())) {
+ final String revisionDateStr = getRevisionDateString(subStatementContext);
+ final String importedModuleName = Utils
+ .stringFromStringContext(subStatementContext.argument());
+ final Date revisionDate = (revisionDateStr == null) ? null : QName
+ .parseRevision(revisionDateStr);
+ final Optional<SemVer> importSemVer = Optional.fromNullable(getSemanticVersion(subStatementContext));
+ result.add(new ModuleImportImpl(importedModuleName,
+ revisionDate, importSemVer));
+ }