From: Robert Varga Date: Sat, 9 Apr 2022 19:34:14 +0000 (+0200) Subject: Seal AbstractQName hierarchy X-Git-Tag: v9.0.0~117 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=yangtools.git;a=commitdiff_plain;h=bad62043b8af16b43f40337eec4498e1c3e564a0 Seal AbstractQName hierarchy AbstractQName can either be resolved or one of the two UnresolvedQName variants. Make sure compiler knows this by sealing them. Change-Id: I2c3d866777bb9a1f5ab15d65ba81d132942ffed7 Signed-off-by: Robert Varga --- diff --git a/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java b/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java index 5e4f696b7f..cbb2141795 100644 --- a/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java +++ b/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java @@ -19,9 +19,8 @@ import org.opendaylight.yangtools.concepts.WritableObject; * Abstract superclass for sharing QName references, which can either be resolved {@link QName}s or unresolved * {@link UnresolvedQName.Unqualified} and {@link UnresolvedQName.Qualified}s. */ -// FIXME: sealed to allow QName and UnresolvedQName only when we have JDK17+ @NonNullByDefault -public abstract class AbstractQName implements Identifier, WritableObject { +public abstract sealed class AbstractQName implements Identifier, WritableObject permits QName, UnresolvedQName { private static final long serialVersionUID = 1L; private final String localName; diff --git a/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/UnresolvedQName.java b/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/UnresolvedQName.java index 8407d416e9..3865b5863c 100644 --- a/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/UnresolvedQName.java +++ b/common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/UnresolvedQName.java @@ -28,9 +28,8 @@ import org.eclipse.jdt.annotation.Nullable; *
  • {@link Qualified}, which also holds a string prefix available via {@link Qualified#getPrefix()}.
  • * */ -// FIXME: sealed to allow Qualified and Unqualified only when we have JDK17+ @NonNullByDefault -public abstract class UnresolvedQName extends AbstractQName { +public abstract sealed class UnresolvedQName extends AbstractQName { /** * An unresolved, qualified {@link QName}. It is guaranteed to hold a valid {@link #getLocalName()} bound to a * namespace identified through a prefix string, but remains unresolved. A resolved {@link QName} can be obtained