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);
- }
}
/**
@NonNull QName moduleName();
+ @Deprecated(since = "7.0.9", forRemoval = true)
@Nullable EffectiveStatement<?, ?> original();
- default <T> @Nullable T original(final @NonNull Class<T> type) {
- return type.cast(original());
- }
-
- // FIXME: 7.0.0: this method should be moved to stmt.type in some shape or form
+ // FIXME: 8.0.0: this method should be moved to stmt.type in some shape or form
@NonNull QName argumentAsTypeQName();
/**
// 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());
+ /**
+ * A restricted version of {@link Current}, which does not expose the raw argument or the declared statement.
+ *
+ * @param <A> Argument type
+ * @param <D> Class representing declared version of this statement
+ */
+ @Beta
+ interface UndeclaredCurrent<A, D extends DeclaredStatement<A>> extends Current<A, D> {
+ @Deprecated
+ @Override
+ default String rawArgument() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Deprecated
+ @Override
+ default D declared() {
+ throw new UnsupportedOperationException();
}
}
}