We can guarantee a return of SchemaTreeEffectiveStatement, make
sure we show that to the users, allowing their dispatch to be
more neatly bracketed.
JIRA: YANGTOOLS-1231
Change-Id: If805a2a612c23157422bea717f9dfada9ac0f093
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
3e91ac02b8fba476fd273bf2357359f9f8473b4d)
requires transitive org.opendaylight.yangtools.rfc7952.model.api;
requires org.opendaylight.yangtools.util;
requires transitive org.opendaylight.yangtools.rfc7952.model.api;
requires org.opendaylight.yangtools.util;
+ requires org.opendaylight.yangtools.yang.common;
+ requires org.opendaylight.yangtools.yang.model.api;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeAwareEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStatement;
/**
* A state tracking utility for walking {@link EffectiveModelContext}'s contents along schema/grouping namespaces. This
/**
* A state tracking utility for walking {@link EffectiveModelContext}'s contents along schema/grouping namespaces. This
- * Lookup a grouping by its node identifier and push it to the stack.
+ * Lookup a {@code grouping} by its node identifier and push it to the stack.
*
* @param nodeIdentifier Node identifier of the grouping to enter
* @return Resolved grouping
*
* @param nodeIdentifier Node identifier of the grouping to enter
* @return Resolved grouping
- * Lookup a schema tree child by its node identifier and push it to the stack.
+ * Lookup a {@code schema tree} child by its node identifier and push it to the stack.
*
* @param nodeIdentifier Node identifier of the schema tree child to enter
* @return Resolved schema tree child
* @throws NullPointerException if {@code nodeIdentifier} is null
*
* @param nodeIdentifier Node identifier of the schema tree child to enter
* @return Resolved schema tree child
* @throws NullPointerException if {@code nodeIdentifier} is null
- * @throws IllegalArgumentException if the corresponding grouping cannot be found
+ * @throws IllegalArgumentException if the corresponding child cannot be found
- public @NonNull EffectiveStatement<QName, ?> enterSchemaTree(final QName nodeIdentifier) {
+ public @NonNull SchemaTreeEffectiveStatement<?> enterSchemaTree(final QName nodeIdentifier) {
return pushSchema(requireNonNull(nodeIdentifier));
}
return pushSchema(requireNonNull(nodeIdentifier));
}
- private @NonNull EffectiveStatement<QName, ?> pushSchema(final @NonNull QName nodeIdentifier) {
+ private @NonNull SchemaTreeEffectiveStatement<?> pushSchema(final @NonNull QName nodeIdentifier) {
final EffectiveStatement<QName, ?> parent = deque.peekFirst();
return parent != null ? pushSchema(parent, nodeIdentifier) : pushFirstSchema(nodeIdentifier);
}
final EffectiveStatement<QName, ?> parent = deque.peekFirst();
return parent != null ? pushSchema(parent, nodeIdentifier) : pushFirstSchema(nodeIdentifier);
}
- private @NonNull EffectiveStatement<QName, ?> pushSchema(final EffectiveStatement<QName, ?> parent,
+ private @NonNull SchemaTreeEffectiveStatement<?> pushSchema(final EffectiveStatement<QName, ?> parent,
final @NonNull QName nodeIdentifier) {
checkState(parent instanceof SchemaTreeAwareEffectiveStatement, "Cannot descend schema tree at %s", parent);
return pushSchema((SchemaTreeAwareEffectiveStatement<?, ?>) parent, nodeIdentifier);
}
final @NonNull QName nodeIdentifier) {
checkState(parent instanceof SchemaTreeAwareEffectiveStatement, "Cannot descend schema tree at %s", parent);
return pushSchema((SchemaTreeAwareEffectiveStatement<?, ?>) parent, nodeIdentifier);
}
- private @NonNull EffectiveStatement<QName, ?> pushSchema(
+ private @NonNull SchemaTreeEffectiveStatement<?> pushSchema(
final @NonNull SchemaTreeAwareEffectiveStatement<?, ?> parent, final @NonNull QName nodeIdentifier) {
final @NonNull SchemaTreeAwareEffectiveStatement<?, ?> parent, final @NonNull QName nodeIdentifier) {
- final EffectiveStatement<QName, ?> ret = parent.findSchemaTreeNode(nodeIdentifier).orElseThrow(
+ final SchemaTreeEffectiveStatement<?> ret = parent.findSchemaTreeNode(nodeIdentifier).orElseThrow(
() -> new IllegalArgumentException("Schema tree child " + nodeIdentifier + " not present"));
deque.push(ret);
return ret;
}
() -> new IllegalArgumentException("Schema tree child " + nodeIdentifier + " not present"));
deque.push(ret);
return ret;
}
- private @NonNull EffectiveStatement<QName, ?> pushFirstSchema(final @NonNull QName nodeIdentifier) {
+ private @NonNull SchemaTreeEffectiveStatement<?> pushFirstSchema(final @NonNull QName nodeIdentifier) {
final ModuleEffectiveStatement module = getModule(nodeIdentifier);
final ModuleEffectiveStatement module = getModule(nodeIdentifier);
- final EffectiveStatement<QName, ?> ret = pushSchema(module, nodeIdentifier);
+ final SchemaTreeEffectiveStatement<?> ret = pushSchema(module, nodeIdentifier);
currentModule = module;
return ret;
}
currentModule = module;
return ret;
}