- final Optional<@NonNull PrefixEffectiveStatement> prefixStmt = parentOfPrefix.findFirstEffectiveSubstatement(
- PrefixEffectiveStatement.class);
- SourceException.throwIf(!prefixStmt.isPresent(), ctx.getStatementSourceReference(),
- "Unable to resolve prefix for module or submodule %s.", ctx.getStatementArgument());
- this.prefix = prefixStmt.get().argument();
- this.yangVersion = findFirstEffectiveSubstatementArgument(YangVersionEffectiveStatement.class)
- .orElse(YangVersion.VERSION_1);
- this.semanticVersion = findFirstEffectiveSubstatementArgument(OpenConfigVersionEffectiveStatement.class)
- .orElse(null);
- this.organization = findFirstEffectiveSubstatementArgument(OrganizationEffectiveStatement.class)
- .orElse(null);
- this.contact = findFirstEffectiveSubstatementArgument(ContactEffectiveStatement.class)
- .orElse(null);
-
- // init submodules and substatements of submodules
- final List<EffectiveStatement<?, ?>> substatementsOfSubmodules;
- final Map<String, StmtContext<?, ?, ?>> includedSubmodulesMap = ctx
- .getAllFromCurrentStmtCtxNamespace(IncludedSubmoduleNameToModuleCtx.class);
-
- if (includedSubmodulesMap == null || includedSubmodulesMap.isEmpty()) {
- this.submodules = ImmutableSet.of();
- this.submoduleContextsToBuild = ImmutableSet.of();
- substatementsOfSubmodules = ImmutableList.of();
- } else if (YangStmtMapping.MODULE.equals(ctx.getPublicDefinition())) {
- /*
- * Aggregation of substatements from submodules should be done only
- * for modules. In case of submodules it does not make sense because
- * of possible circular chains of includes between submodules.
- */
- final Set<Module> submodulesInit = new HashSet<>();
- final List<EffectiveStatement<?, ?>> substatementsOfSubmodulesInit = new ArrayList<>();
- for (final StmtContext<?, ?, ?> submoduleCtx : includedSubmodulesMap.values()) {
- final EffectiveStatement<?, ?> submodule = submoduleCtx.buildEffective();
- Verify.verify(submodule instanceof SubmoduleEffectiveStatement);
- Verify.verify(submodule instanceof Module, "Submodule statement %s is not a Module", submodule);
- submodulesInit.add((Module) submodule);
- substatementsOfSubmodulesInit.addAll(submodule.effectiveSubstatements().stream()
- .filter(sub -> sub instanceof SchemaNode || sub instanceof DataNodeContainer)
- .collect(Collectors.toList()));
- }
+ protected AbstractEffectiveModule(final D declared,
+ final StmtContext<UnqualifiedQName, D, ? extends EffectiveStatement<UnqualifiedQName, ?>> ctx,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final String prefix) {
+ super(declared, ctx, substatements);