import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaNodeDefaults;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
// FIXME: 7.0.0: this is currently only used by AbstractTypeStatement
@NonNull QNameModule effectiveNamespace();
-
- /**
- * Return the effective path of this statement. This method is intended for use with statements which naturally
- * have a {@link QName} identifier and this identifier forms the ultimate step in their
- * {@link SchemaNode#getPath()}.
- *
- * <p>
- * Returned object conforms to {@link SchemaPathSupport}'s view of how these are to be handled. Users of this
- * method are expected to consult {@link SchemaNodeDefaults#extractQName(Immutable)} and
- * {@link SchemaNodeDefaults#extractPath(Object, Immutable)} to ensure correct implementation behaviour with
- * respect to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively.
- *
- * @return An {@link Immutable} effective path object
- */
- // FIXME: Remove this when SchemaNode.getPath() is removed. QName users will store getArgument() instead.
- default @NonNull Immutable effectivePath() {
- return SchemaPathSupport.toEffectivePath(getSchemaPath());
- }
-
- /**
- * Return an optional-to-provide path for {@link SchemaNode#getPath()}. The result of this method is expected
- * to be consulted with {@link SchemaNodeDefaults#throwUnsupportedIfNull(Object, SchemaPath)} to get consistent
- * API behaviour.
- *
- * @return Potentially-null {@link SchemaPath}.
- */
- // FIXME: Remove this when SchemaNode.getPath() is removed
- default @Nullable SchemaPath optionalPath() {
- return SchemaPathSupport.toOptionalPath(getSchemaPath());
- }
-
- /**
- * Return the {@link SchemaNode#getPath()} of this statement. Not all statements have a SchemaPath, in which
- * case null is returned.
- *
- * @return SchemaPath or null
- */
- // FIXME: Remove this when SchemaNode.getPath() is removed
- @Nullable SchemaPath schemaPath();
-
- /**
- * Return the {@link SchemaNode#getPath()} of this statement, failing if it is not present.
- *
- * @return A SchemaPath.
- * @throws VerifyException if {@link #schemaPath()} returns null
- */
- // FIXME: Remove this when SchemaNode.getPath() is removed
- default @NonNull SchemaPath getSchemaPath() {
- return verifyNotNull(schemaPath(), "Missing path for %s", this);
- }
}
/**
// FIXME: YANGTOOLS-1186: lob the Holy Hand Grenade of Antioch
@Deprecated
<E extends EffectiveStatement<A, D>> @NonNull StmtContext<A, D, E> caerbannog();
-
- /**
- * Compare another context for equality of {@code getEffectiveParent().getSchemaPath()}, just in a safer manner.
- *
- * @param other Other {@link Current}
- * @return True if {@code other} has parent path equal to this context's parent path.
- */
- // FIXME: Remove this when SchemaNode.getPath() is removed
- default boolean equalParentPath(final Current<A, D> other) {
- final Parent ours = effectiveParent();
- final Parent theirs = other.effectiveParent();
- return ours == theirs
- || ours != null && theirs != null && SchemaPathSupport.effectivelyEqual(
- ours.schemaPath(), theirs.schemaPath());
- }
}
}