public interface ModelActionBuilder
Since YANG allows forward references, some inference actions need to be taken at a later point, where reference is
actually resolved. Referenced objects are not retrieved directly but are represented as ModelActionBuilder.Prerequisite
(prerequisite) for inference action to be taken.
Some existing YANG statements are more complex and also object, for which effective model may be inferred is also
represented as a ModelActionBuilder.Prerequisite
which, when reference is available, will contain target context, which may be
used for inference action.
In order to declare inference action following steps needs to be taken:
StmtContext.Mutable.newInferenceAction(ModelProcessingPhase)
to obtain
ModelActionBuilder
.
apply(InferenceAction)
with ModelActionBuilder.InferenceAction
implementation
to register inference action.
An action will be executed when:
InferenceAction#apply(InferenceContext)
- all prerequisites (and declared forward references) are met,
action could dereference them and start applying changes.
ModelActionBuilder.InferenceAction.prerequisiteFailed(Collection)
- semantic parser finished all other satisfied
inference actions and some of declared prerequisites was still not met.
TODO: Insert real word example
Future
seems as viable and more standard alternative to ModelActionBuilder.Prerequisite
, but
Futures also carries promise that resolution of it is carried in other thread, which will actually put additional
constraints on semantic parser.
Also listening on multiple futures is costly, so we opted out of future and designed API, which later may introduce futures.
Modifier and Type | Interface and Description |
---|---|
static interface |
ModelActionBuilder.InferenceAction
User-defined inference action.
|
static interface |
ModelActionBuilder.InferenceContext |
static interface |
ModelActionBuilder.Prerequisite<T> |
Modifier and Type | Method and Description |
---|---|
void |
apply(ModelActionBuilder.InferenceAction action)
Apply an
ModelActionBuilder.InferenceAction when this action's prerequisites are resolved. |
<C extends StmtContext.Mutable<?,?,?>,T extends C> |
mutatesCtx(T context,
ModelProcessingPhase phase)
Action mutates the specified statement in the specified phase.
|
<K,E extends EffectiveStatement<?,?>,N extends IdentifierNamespace<K,? extends StmtContext<?,?,?>>> |
mutatesEffectiveCtx(StmtContext<?,?,?> context,
Class<N> namespace,
K key) |
default <T extends StmtContext.Mutable<?,?,?>> |
mutatesEffectiveCtx(T context)
Action mutates the effective model of specified statement.
|
default <K,E extends EffectiveStatement<?,?>,N extends IdentifierNamespace<K,? extends StmtContext<?,?,?>>> |
mutatesEffectiveCtxPath(StmtContext<?,?,?> context,
Class<N> namespace,
Iterable<K> keys) |
<N extends IdentifierNamespace<?,?>> |
mutatesNs(StmtContext.Mutable<?,?,?> ctx,
Class<N> namespace)
Deprecated.
Undocumented method. Use at your own risk.
|
<K,N extends StatementNamespace<K,?,?>> |
requiresCtx(StmtContext<?,?,?> context,
Class<N> namespace,
K key,
ModelProcessingPhase phase) |
<K,N extends StatementNamespace<K,?,?>> |
requiresCtx(StmtContext<?,?,?> context,
Class<N> namespace,
NamespaceKeyCriterion<K> criterion,
ModelProcessingPhase phase) |
<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> |
requiresCtx(StmtContext<A,D,E> context,
ModelProcessingPhase phase)
Action requires that the specified context completes specified phase before
apply(InferenceAction)
may be invoked. |
<K,D extends DeclaredStatement<?>,N extends StatementNamespace<K,? extends D,?>> |
requiresDeclared(StmtContext<?,?,?> context,
Class<N> namespace,
K key)
Deprecated.
Undocumented method. Use at your own risk.
|
<D extends DeclaredStatement<?>> |
requiresDeclared(StmtContext<?,? extends D,?> context)
Action requires that the specified context transition to complete
ModelProcessingPhase.FULL_DECLARATION
phase and produce a declared statement. |
<K,D extends DeclaredStatement<?>,N extends StatementNamespace<K,? extends D,?>> |
requiresDeclaredCtx(StmtContext<?,?,?> context,
Class<N> namespace,
K key)
Deprecated.
Undocumented method. Use at your own risk.
|
<K,E extends EffectiveStatement<?,?>,N extends StatementNamespace<K,?,? extends E>> |
requiresEffective(StmtContext<?,?,?> context,
Class<N> namespace,
K key)
Deprecated.
Undocumented method. Use at your own risk.
|
<E extends EffectiveStatement<?,?>> |
requiresEffective(StmtContext<?,?,? extends E> stmt)
Deprecated.
Undocumented method. Use at your own risk.
|
<K,E extends EffectiveStatement<?,?>,N extends StatementNamespace<K,?,? extends E>> |
requiresEffectiveCtx(StmtContext<?,?,?> context,
Class<N> namespace,
K key)
Deprecated.
Undocumented method. Use at your own risk.
|
<D extends DeclaredStatement<?>> @NonNull ModelActionBuilder.Prerequisite<D> requiresDeclared(StmtContext<?,? extends D,?> context)
ModelProcessingPhase.FULL_DECLARATION
phase and produce a declared statement.context
- Statement context which needs to complete the transition.ModelActionBuilder.Prerequisite
returning the declared statement of the requested context.@Deprecated <K,D extends DeclaredStatement<?>,N extends StatementNamespace<K,? extends D,?>> @NonNull ModelActionBuilder.Prerequisite<D> requiresDeclared(StmtContext<?,?,?> context, Class<N> namespace, K key)
<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> @NonNull ModelActionBuilder.Prerequisite<StmtContext<A,D,E>> requiresCtx(StmtContext<A,D,E> context, ModelProcessingPhase phase)
apply(InferenceAction)
may be invoked.context
- Statement context which needs to complete the transition.phase
- ModelProcessingPhase which must have completedModelActionBuilder.Prerequisite
returning the requested context.<K,N extends StatementNamespace<K,?,?>> @NonNull ModelActionBuilder.Prerequisite<StmtContext<?,?,?>> requiresCtx(StmtContext<?,?,?> context, Class<N> namespace, K key, ModelProcessingPhase phase)
<K,N extends StatementNamespace<K,?,?>> @NonNull ModelActionBuilder.Prerequisite<StmtContext<?,?,?>> requiresCtx(StmtContext<?,?,?> context, Class<N> namespace, NamespaceKeyCriterion<K> criterion, ModelProcessingPhase phase)
default <T extends StmtContext.Mutable<?,?,?>> @NonNull ModelActionBuilder.Prerequisite<T> mutatesEffectiveCtx(T context)
mutatesCtx(context, EFFECTIVE_MODEL
.context
- Target statement contextModelActionBuilder.Prerequisite
returning the requested context.<K,E extends EffectiveStatement<?,?>,N extends IdentifierNamespace<K,? extends StmtContext<?,?,?>>> @NonNull ModelActionBuilder.Prerequisite<StmtContext.Mutable<?,?,E>> mutatesEffectiveCtx(StmtContext<?,?,?> context, Class<N> namespace, K key)
default <K,E extends EffectiveStatement<?,?>,N extends IdentifierNamespace<K,? extends StmtContext<?,?,?>>> @NonNull ModelActionBuilder.Prerequisite<StmtContext.Mutable<?,?,E>> mutatesEffectiveCtxPath(StmtContext<?,?,?> context, Class<N> namespace, Iterable<K> keys)
<C extends StmtContext.Mutable<?,?,?>,T extends C> @NonNull ModelActionBuilder.Prerequisite<C> mutatesCtx(T context, ModelProcessingPhase phase)
context
- Target statement contextModelActionBuilder.Prerequisite
returning the requested context.void apply(ModelActionBuilder.InferenceAction action)
ModelActionBuilder.InferenceAction
when this action's prerequisites are resolved.action
- Inference action to applyInferenceException
- if the action failsNullPointerException
- if action is null
IllegalStateException
- if this action has an inference action already associated.@Deprecated <K,D extends DeclaredStatement<?>,N extends StatementNamespace<K,? extends D,?>> @NonNull ModelActionBuilder.Prerequisite<StmtContext<?,D,?>> requiresDeclaredCtx(StmtContext<?,?,?> context, Class<N> namespace, K key)
@Deprecated <E extends EffectiveStatement<?,?>> @NonNull ModelActionBuilder.Prerequisite<E> requiresEffective(StmtContext<?,?,? extends E> stmt)
@Deprecated <K,E extends EffectiveStatement<?,?>,N extends StatementNamespace<K,?,? extends E>> @NonNull ModelActionBuilder.Prerequisite<E> requiresEffective(StmtContext<?,?,?> context, Class<N> namespace, K key)
@Deprecated <K,E extends EffectiveStatement<?,?>,N extends StatementNamespace<K,?,? extends E>> @NonNull ModelActionBuilder.Prerequisite<StmtContext<?,?,E>> requiresEffectiveCtx(StmtContext<?,?,?> context, Class<N> namespace, K key)
@Deprecated <N extends IdentifierNamespace<?,?>> @NonNull ModelActionBuilder.Prerequisite<StmtContext.Mutable<?,?,?>> mutatesNs(StmtContext.Mutable<?,?,?> ctx, Class<N> namespace)
Copyright © 2020 OpenDaylight. All rights reserved.