import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceKeyCriterion;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
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.stmt.reactor.StatementContextBase.ContextMutation;
}
private <K, C extends StmtContext<?, ?, ?>> @NonNull AbstractPrerequisite<C> requiresCtxImpl(
- final StmtContext<?, ?, ?> context, final StatementNamespace<K, ?, ?> namespace, final K key,
+ final StmtContext<?, ?, ?> context, final ParserNamespace<K, C> namespace, final K key,
final ModelProcessingPhase phase) {
checkNotRegistered();
}
private <K, C extends StmtContext<?, ?, ?>> @NonNull AbstractPrerequisite<C> requiresCtxImpl(
- final StmtContext<?, ?, ?> context, final StatementNamespace<K, ?, ?> namespace,
+ final StmtContext<?, ?, ?> context, final ParserNamespace<K, C> namespace,
final NamespaceKeyCriterion<K> criterion, final ModelProcessingPhase phase) {
checkNotRegistered();
}
@Override
- public <K> Prerequisite<StmtContext<?, ?, ?>> requiresCtx(final StmtContext<?, ?, ?> context,
- final StatementNamespace<K, ?, ?> namespace, final K key, final ModelProcessingPhase phase) {
+ public <K, C extends StmtContext<?, ?, ?>> Prerequisite<C> requiresCtx(final StmtContext<?, ?, ?> context,
+ final ParserNamespace<K, C> namespace, final K key, final ModelProcessingPhase phase) {
return requiresCtxImpl(context, namespace, key, phase);
}
@Override
- public <K> Prerequisite<StmtContext<?, ?, ?>> requiresCtx(final StmtContext<?, ?, ?> context,
- final StatementNamespace<K, ?, ?> namespace, final NamespaceKeyCriterion<K> criterion,
+ public <K, C extends StmtContext<?, ?, ?>> Prerequisite<C> requiresCtx(final StmtContext<?, ?, ?> context,
+ final ParserNamespace<K, C> namespace, final NamespaceKeyCriterion<K> criterion,
final ModelProcessingPhase phase) {
return requiresCtxImpl(context, namespace, criterion, phase);
}
@Override
@Deprecated
public <K, D extends DeclaredStatement<?>> Prerequisite<D> requiresDeclared(final StmtContext<?, ?, ?> context,
- final StatementNamespace<K, ? extends D, ?> namespace, final K key) {
- final AbstractPrerequisite<StmtContext<?, D, ?>> rawContext = requiresCtxImpl(context, namespace, key,
- FULL_DECLARATION);
- return rawContext.transform(StmtContext::declared);
+ final ParserNamespace<K, StmtContext<?, ? extends D, ?>> namespace, final K key) {
+ return requiresCtxImpl(context, namespace, key, FULL_DECLARATION).transform(StmtContext::declared);
}
@Override
@Deprecated
- public <K, D extends DeclaredStatement<?>> AbstractPrerequisite<StmtContext<?, D, ?>> requiresDeclaredCtx(
- final StmtContext<?, ?, ?> context, final StatementNamespace<K, ? extends D, ?> namespace, final K key) {
+ public <K, C extends StmtContext<?, ?, ?>> AbstractPrerequisite<C> requiresDeclaredCtx(
+ final StmtContext<?, ?, ?> context, final ParserNamespace<K, C> namespace, final K key) {
return requiresCtxImpl(context, namespace, key, FULL_DECLARATION);
}
@Override
@Deprecated
public <K, E extends EffectiveStatement<?, ?>> Prerequisite<E> requiresEffective(final StmtContext<?, ?, ?> context,
- final StatementNamespace<K, ?, ? extends E> namespace, final K key) {
- final AbstractPrerequisite<StmtContext<?, ?, E>> rawContext = requiresCtxImpl(context, namespace, key,
- EFFECTIVE_MODEL);
- return rawContext.transform(StmtContext::buildEffective);
+ final ParserNamespace<K, StmtContext<?, ?, ? extends E>> namespace, final K key) {
+ return requiresCtxImpl(context, namespace, key, EFFECTIVE_MODEL).transform(StmtContext::buildEffective);
}
@Override
@Deprecated
- public <K, E extends EffectiveStatement<?, ?>> AbstractPrerequisite<StmtContext<?, ?, E>> requiresEffectiveCtx(
- final StmtContext<?, ?, ?> context, final StatementNamespace<K, ?, ? extends E> namespace, final K key) {
+ public <K, C extends StmtContext<?, ?, ?>> AbstractPrerequisite<C> requiresEffectiveCtx(
+ final StmtContext<?, ?, ?> context, final ParserNamespace<K, C> namespace, final K key) {
return requiresCtxImpl(contextImpl(context), namespace, key, EFFECTIVE_MODEL);
}
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceKeyCriterion;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.slf4j.Logger;
* @throws NamespaceNotAvailableException when the namespace is not available.
*/
public final <K, D extends DeclaredStatement<?>, E extends EffectiveStatement<?, D>> void addContextToNamespace(
- final StatementNamespace<K, D, E> type, final K key, final StmtContext<?, D, E> value) {
+ final ParserNamespace<K, StmtContext<?, D, E>> type, final K key, final StmtContext<?, D, E> value) {
getBehaviourRegistry().getNamespaceBehaviour(type).addTo(this, key, value);
}
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.StorageNodeType;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
@Override
@Deprecated
public <K, KT extends K, Y extends DeclaredStatement<?>, Z extends EffectiveStatement<?, Y>> void addContext(
- final StatementNamespace<K, Y, Z> namespace, final KT key, final StmtContext<?, Y, Z> stmt) {
+ final ParserNamespace<K, StmtContext<?, Y, Z>> namespace, final KT key, final StmtContext<?, Y, Z> stmt) {
throw new UnsupportedOperationException();
}
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceKeyCriterion;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport.CopyPolicy;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@Override
public final <K, KT extends K, Y extends DeclaredStatement<?>, Z extends EffectiveStatement<?, Y>> void addContext(
- final StatementNamespace<K, Y, Z> namespace, final KT key, final StmtContext<?, Y, Z> stmt) {
+ final ParserNamespace<K, StmtContext<?, Y, Z>> namespace, final KT key, final StmtContext<?, Y, Z> stmt) {
addContextToNamespace(namespace, key, stmt);
}
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
final Unqualified moduleName = stmt.getArgument();
final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_PRE_LINKAGE);
- final Prerequisite<StmtContext<?, ?, ?>> imported = importAction.requiresCtx(stmt,
- ParserNamespaces.PRELINKAGE_MODULE, moduleName, SOURCE_PRE_LINKAGE);
+ final Prerequisite<StmtContext<?, ModuleStatement, ModuleEffectiveStatement>> imported =
+ importAction.requiresCtx(stmt, ParserNamespaces.PRELINKAGE_MODULE, moduleName, SOURCE_PRE_LINKAGE);
final Prerequisite<Mutable<?, ?, ?>> rootPrereq = importAction.mutatesCtx(stmt.getRoot(), SOURCE_PRE_LINKAGE);
importAction.apply(new InferenceAction() {
import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
static void onLinkageDeclared(final Mutable<Unqualified, ImportStatement, ImportEffectiveStatement> stmt) {
final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_LINKAGE);
- final Prerequisite<StmtContext<?, ?, ?>> imported;
final Unqualified moduleName = stmt.getArgument();
final Revision revision = firstAttributeOf(stmt.declaredSubstatements(), RevisionDateStatement.class);
+ final Prerequisite<StmtContext<?, ModuleStatement, ModuleEffectiveStatement>> imported;
if (revision == null) {
imported = importAction.requiresCtx(stmt, ParserNamespaces.MODULE,
NamespaceKeyCriterion.latestRevisionModule(moduleName), SOURCE_LINKAGE);
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
final Mutable<Unqualified, BelongsToStatement, BelongsToEffectiveStatement> belongsToCtx) {
ModelActionBuilder belongsToAction = belongsToCtx.newInferenceAction(ModelProcessingPhase.SOURCE_LINKAGE);
- final Prerequisite<StmtContext<?, ?, ?>> belongsToPrereq = belongsToAction.requiresCtx(belongsToCtx,
- SourceParserNamespaces.MODULE_FOR_BELONGSTO, belongsToCtx.getArgument(),
- ModelProcessingPhase.SOURCE_LINKAGE);
+ final Prerequisite<StmtContext<?, ModuleStatement, ModuleEffectiveStatement>> belongsToPrereq =
+ belongsToAction.requiresCtx(belongsToCtx, SourceParserNamespaces.MODULE_FOR_BELONGSTO,
+ belongsToCtx.getArgument(), ModelProcessingPhase.SOURCE_LINKAGE);
belongsToAction.apply(new InferenceAction() {
@Override
import org.opendaylight.yangtools.yang.model.api.stmt.IncludeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
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;
final StmtContext<Revision, ?, ?> revision = findFirstDeclaredSubstatement(stmt, RevisionDateStatement.class);
final ModelActionBuilder includeAction = stmt.newInferenceAction(SOURCE_LINKAGE);
- final Prerequisite<StmtContext<?, ?, ?>> requiresCtxPrerequisite;
+ final Prerequisite<StmtContext<?, SubmoduleStatement, SubmoduleEffectiveStatement>> requiresCtxPrerequisite;
if (revision == null) {
requiresCtxPrerequisite = includeAction.requiresCtx(stmt, ParserNamespaces.SUBMODULE,
NamespaceKeyCriterion.latestRevisionModule(submoduleName), SOURCE_LINKAGE);
import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypedefEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
}
final ModelActionBuilder typeAction = stmt.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
- final Prerequisite<StmtContext<?, ?, ?>> typePrereq = typeAction.requiresCtx(stmt, ParserNamespaces.TYPE,
- typeQName, ModelProcessingPhase.EFFECTIVE_MODEL);
+ final Prerequisite<StmtContext<?, TypedefStatement, TypedefEffectiveStatement>> typePrereq =
+ typeAction.requiresCtx(stmt, ParserNamespaces.TYPE, typeQName, ModelProcessingPhase.EFFECTIVE_MODEL);
typeAction.mutatesEffectiveCtx(stmt.getParentContext());
/*
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RefineEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
final ModelActionBuilder usesAction = usesNode.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
final QName groupingName = usesNode.argument();
- final Prerequisite<StmtContext<?, ?, ?>> sourceGroupingPre = usesAction.requiresCtx(usesNode,
- ParserNamespaces.GROUPING, groupingName, ModelProcessingPhase.EFFECTIVE_MODEL);
+ final Prerequisite<StmtContext<?, GroupingStatement, GroupingEffectiveStatement>> sourceGroupingPre =
+ usesAction.requiresCtx(usesNode, ParserNamespaces.GROUPING, groupingName,
+ ModelProcessingPhase.EFFECTIVE_MODEL);
final Prerequisite<? extends Mutable<?, ?, ?>> targetNodePre = usesAction.mutatesEffectiveCtx(
usesNode.getParentContext());
import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
/**
* Baseline {@link ParserNamespace}s mostly derived from YANG specification.
* identifier namespace, where each extension is identified by a QName formed from the defining module's QNameModule
* and the identifier specified in extension statement's argument.
*/
- public static final @NonNull StatementNamespace<QName, ExtensionStatement, ExtensionEffectiveStatement> EXTENSION =
- new StatementNamespace<>("extension");
+ public static final @NonNull ParserNamespace<QName, StmtContext<?, ExtensionStatement, ExtensionEffectiveStatement>>
+ EXTENSION = new ParserNamespace<>("extension");
/**
* Feature namespace. All feature names defined in a module and its submodules share the same feature identifier
* namespace. Each feature is identified by a QName formed from the defining module's QNameModule and the feature
* name.
*/
- public static final @NonNull StatementNamespace<QName, FeatureStatement, FeatureEffectiveStatement> FEATURE =
- new StatementNamespace<>("feature");
+ public static final @NonNull ParserNamespace<QName,
+ StmtContext<?, FeatureStatement, FeatureEffectiveStatement>> FEATURE = new ParserNamespace<>("feature");
/**
* Grouping namespace. * All grouping names defined within a parent node or at the top level of the module
* <p>
* This means that any descendant node may use that grouping, and it MUST NOT define a grouping with the same name.
*/
- public static final @NonNull StatementNamespace<QName, GroupingStatement, GroupingEffectiveStatement> GROUPING =
- new StatementNamespace<>("grouping");
+ public static final @NonNull ParserNamespace<QName,
+ StmtContext<?, GroupingStatement, GroupingEffectiveStatement>> GROUPING = new ParserNamespace<>("grouping");
/**
* Identity namespace. All identity names defined in a module and its submodules share the same identity identifier
* namespace.
*/
- public static final @NonNull StatementNamespace<QName, IdentityStatement, IdentityEffectiveStatement> IDENTITY =
- new StatementNamespace<>("identity");
+ public static final @NonNull ParserNamespace<QName,
+ StmtContext<?, IdentityStatement, IdentityEffectiveStatement>> IDENTITY = new ParserNamespace<>("identity");
/**
* Module namespace. All modules known to the reactor are populated to this namespace. Each module is identified
* by a {@link SourceIdentifier}.
*/
- public static final @NonNull StatementNamespace<SourceIdentifier, ModuleStatement, ModuleEffectiveStatement> MODULE
- = new StatementNamespace<>("module");
+ public static final @NonNull ParserNamespace<SourceIdentifier,
+ StmtContext<?, ModuleStatement, ModuleEffectiveStatement>> MODULE = new ParserNamespace<>("module");
/**
* Submodule equivalent of {@link #MODULE}.
*/
- public static final @NonNull StatementNamespace<SourceIdentifier, SubmoduleStatement, SubmoduleEffectiveStatement>
- SUBMODULE = new StatementNamespace<>("submodule");
+ public static final @NonNull ParserNamespace<SourceIdentifier,
+ StmtContext<?, SubmoduleStatement, SubmoduleEffectiveStatement>> SUBMODULE = new ParserNamespace<>("submodule");
/**
* Derived types namespace. All derived type names defined within a parent node or at the top level of the module
* This namespace includes all type definitions implied by the language in which the current statement resides
* (e.g. RFC6020/RFC7950 for YANG 1.0/1.1).
*/
- public static final @NonNull StatementNamespace<QName, TypedefStatement, TypedefEffectiveStatement> TYPE =
- new StatementNamespace<>("typedef");
+ public static final @NonNull ParserNamespace<QName,
+ StmtContext<?, TypedefStatement, TypedefEffectiveStatement>> TYPE = new ParserNamespace<>("typedef");
/**
* A derived namespace allowing lookup of modules based on their {@link QNameModule}.
*/
- public static final @NonNull StatementNamespace<QNameModule, ModuleStatement, ModuleEffectiveStatement>
- NAMESPACE_TO_MODULE = new StatementNamespace<>("namespace-to-module");
+ public static final @NonNull ParserNamespace<QNameModule, StmtContext<?, ModuleStatement, ModuleEffectiveStatement>>
+ NAMESPACE_TO_MODULE = new ParserNamespace<>("namespace-to-module");
/**
* Intermediate-stage namespace equivalent to {@link #MODULE} except it is keyed by module names. This namespace is
* used to resolve inter-module references before actual linkage occurs.
*/
- public static final @NonNull StatementNamespace<Unqualified, ModuleStatement, ModuleEffectiveStatement>
- PRELINKAGE_MODULE = new StatementNamespace<>("prelinkage-module");
+ public static final @NonNull ParserNamespace<Unqualified, StmtContext<?, ModuleStatement, ModuleEffectiveStatement>>
+ PRELINKAGE_MODULE = new ParserNamespace<>("prelinkage-module");
private ParserNamespaces() {
// Hidden on purpose
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
// into yang-(parser-)reactor-api.
@Beta
public final class SchemaTreeNamespace<D extends DeclaredStatement<QName>, E extends SchemaTreeEffectiveStatement<D>>
- extends StatementNamespace<QName, D, E> {
+ extends ParserNamespace<QName, StmtContext<?, D, E>> {
@Serial
private static final long serialVersionUID = 1L;
private static final @NonNull SchemaTreeNamespace<?, ?> INSTANCE = new SchemaTreeNamespace<>();
*/
@Deprecated
<K, D extends DeclaredStatement<?>> @NonNull Prerequisite<D> requiresDeclared(StmtContext<?, ?, ?> context,
- StatementNamespace<K, ? extends D, ?> namespace, K key);
+ ParserNamespace<K, StmtContext<?, ? extends D, ?>> namespace, K key);
/**
* Action requires that the specified context completes specified phase before {@link #apply(InferenceAction)}
<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> @NonNull Prerequisite<StmtContext<A, D, E>>
requiresCtx(StmtContext<A, D, E> context, ModelProcessingPhase phase);
- <K> @NonNull Prerequisite<StmtContext<?, ?, ?>> requiresCtx(StmtContext<?, ?, ?> context,
- @NonNull StatementNamespace<K, ?, ?> namespace, K key, ModelProcessingPhase phase);
+ <K, C extends StmtContext<?, ?, ?>> @NonNull Prerequisite<C> requiresCtx(StmtContext<?, ?, ?> context,
+ @NonNull ParserNamespace<K, C> namespace, K key, ModelProcessingPhase phase);
- <K> @NonNull Prerequisite<StmtContext<?, ?, ?>> requiresCtx(StmtContext<?, ?, ?> context,
- @NonNull StatementNamespace<K, ?, ?> namespace, NamespaceKeyCriterion<K> criterion, ModelProcessingPhase phase);
+ <K, C extends StmtContext<?, ?, ?>> @NonNull Prerequisite<C> requiresCtx(StmtContext<?, ?, ?> context,
+ @NonNull ParserNamespace<K, C> namespace, NamespaceKeyCriterion<K> criterion, ModelProcessingPhase phase);
<K, E extends EffectiveStatement<?, ?>> @NonNull Prerequisite<StmtContext<?, ?, E>> requiresCtxPath(
StmtContext<?, ?, ?> context, ParserNamespace<K, ? extends StmtContext<?, ?, ?>> namespace, Iterable<K> keys,
* @deprecated Undocumented method. Use at your own risk.
*/
@Deprecated
- <K, D extends DeclaredStatement<?>> @NonNull Prerequisite<StmtContext<?, D, ?>> requiresDeclaredCtx(
- StmtContext<?, ?, ?> context, StatementNamespace<K, ? extends D, ?> namespace, K key);
+ <K, C extends StmtContext<?, ?, ?>> @NonNull Prerequisite<C> requiresDeclaredCtx(StmtContext<?, ?, ?> context,
+ ParserNamespace<K, C> namespace, K key);
/**
* Create a requirement on specified statement to become effective.
*/
@Deprecated
<K, E extends EffectiveStatement<?, ?>> @NonNull Prerequisite<E> requiresEffective(StmtContext<?, ?, ?> context,
- StatementNamespace<K, ?, ? extends E> namespace, K key);
+ ParserNamespace<K, StmtContext<?, ?, ? extends E>> namespace, K key);
/**
* Create a requirement on specified statement context to become effective.
* @deprecated Undocumented method. Use at your own risk.
*/
@Deprecated
- <K, E extends EffectiveStatement<?, ?>> @NonNull Prerequisite<StmtContext<?, ?, E>> requiresEffectiveCtx(
- StmtContext<?, ?, ?> context, StatementNamespace<K, ?, ? extends E> namespace, K key);
+ <K, C extends StmtContext<?, ?, ?>> @NonNull Prerequisite<C> requiresEffectiveCtx(StmtContext<?, ?, ?> context,
+ ParserNamespace<K, C> namespace, K key);
/**
* Mark the fact that this action is mutating a namespace.
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.concepts.Identifier;
+import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
/**
* {@link ParserNamespace} serves as common superclass for namespaces used during parser operation. Each such namespace,
* @param <V> Value type
*/
@NonNullByDefault
-public class ParserNamespace<K, V> implements Identifier {
+public sealed class ParserNamespace<K, V> implements Identifier permits SchemaTreeNamespace {
@Serial
private static final long serialVersionUID = 1L;
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.spi.meta;
-
-import java.io.Serial;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-
-// FIXME: is this subclass useful at all?
-public class StatementNamespace<K, D extends DeclaredStatement<?>, E extends EffectiveStatement<?, D>>
- extends ParserNamespace<K, StmtContext<?, D, E>> {
- @Serial
- private static final long serialVersionUID = 1L;
-
- public StatementNamespace(final @NonNull String name) {
- super(name);
- }
-}
* Adds s statement to namespace map with a key.
*
* @param namespace
- * {@link StatementNamespace} child that determines namespace to be added to
+ * {@link ParserNamespace} child that determines namespace to be added to
* @param key
* of type according to namespace class specification
* @param stmt
* to be added to namespace map
*/
+ // FIXME: cleanup the capture here: we really want to capture 'StmtContext<?, Y, Z>'
<K, KT extends K, Y extends DeclaredStatement<?>, Z extends EffectiveStatement<?, Y>> void addContext(
- @NonNull StatementNamespace<K, Y, Z> namespace, KT key, StmtContext<?, Y, Z> stmt);
+ @NonNull ParserNamespace<K, StmtContext<?, Y, Z>> namespace, KT key, StmtContext<?, Y, Z> stmt);
/**
* Set version of root statement context.
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.ParserNamespaces;
import org.opendaylight.yangtools.yang.parser.spi.meta.ParserNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
/**
* plain name.
*/
// FIXME: Better name?
- public static final @NonNull StatementNamespace<Unqualified, ModuleStatement, ModuleEffectiveStatement>
- MODULE_FOR_BELONGSTO = new StatementNamespace<>("module-belongsto");
+ public static final @NonNull ParserNamespace<Unqualified, StmtContext<?, ModuleStatement, ModuleEffectiveStatement>>
+ MODULE_FOR_BELONGSTO = new ParserNamespace<>("module-belongsto");
/**
* Pre-linkage source-specific mapping of prefixes to module namespaces.