import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
-import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
-import org.opendaylight.yangtools.yang.parser.api.ImportResolutionMode;
import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.NamespaceToModule;
import org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionModuleNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
.addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
.build();
- private final boolean semanticVersioning;
-
private ModuleStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
super(YangStmtMapping.MODULE, StatementPolicy.reject(), config, validator);
- semanticVersioning = config.importResolutionMode() == ImportResolutionMode.OPENCONFIG_SEMVER;
}
public static @NonNull ModuleStatementSupport rfc6020Instance(final YangParserConfiguration config) {
stmt.addToNs(ModuleCtxToSourceIdentifier.class, stmt, moduleIdentifier);
stmt.addToNs(ModuleQNameToModuleName.class, qNameModule, moduleName);
stmt.addToNs(ImportPrefixToModuleCtx.class, modulePrefix, stmt);
-
- if (semanticVersioning) {
- addToSemVerModuleNamespace(stmt, moduleIdentifier);
- }
}
@Override
}
@Override
- protected ModuleStatement createDeclared(final StmtContext<Unqualified, ModuleStatement, ?> ctx,
- final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ protected ModuleStatement createDeclared(final BoundStmtCtx<Unqualified> ctx,
+ final ImmutableList<DeclaredStatement<?>> substatements) {
if (substatements.isEmpty()) {
throw noNamespace(ctx);
}
private static SourceException noNamespace(final @NonNull CommonStmtCtx stmt) {
return new SourceException("No namespace declared in module", stmt);
}
-
- private static void addToSemVerModuleNamespace(
- final Mutable<Unqualified, ModuleStatement, ModuleEffectiveStatement> stmt,
- final SourceIdentifier moduleIdentifier) {
- final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(stmt.getRawArgument(),
- stmt.getFromNamespace(SemanticVersionNamespace.class, stmt));
- stmt.addToNs(SemanticVersionModuleNamespace.class, id, stmt);
- }
}