Seal OrderingAware 56/100956/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 3 May 2022 20:50:49 +0000 (22:50 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 3 May 2022 20:56:35 +0000 (22:56 +0200)
There are only two possible orderings, make sure javac enforces that
invariant.

Change-Id: I5900a43b525d781909d74b9cb4c9f5ecd167adb4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderingAware.java

index 594c9d385ba02604226b5822db56aa1b17b30219..d302673463bbfb5fa7b212a3bb5974605dd2d9eb 100644 (file)
@@ -18,12 +18,12 @@ import org.opendaylight.yangtools.yang.common.Ordering;
  */
 @Beta
 @NonNullByDefault
-public interface OrderingAware {
+public sealed interface OrderingAware permits NormalizedNodeContainer, OrderingAware.System, OrderingAware.User {
     /**
      * Marker interface for NormalizedNodeContainer implementations which correspond to {@code ordered-by system}. These
      * follow the {@link Unordered} contract.
      */
-    interface System extends OrderingAware, Unordered {
+    non-sealed interface System extends OrderingAware, Unordered {
         @Override
         default Ordering ordering() {
             return Ordering.SYSTEM;
@@ -34,7 +34,7 @@ public interface OrderingAware {
      * Marker interface for NormalizedNodeContainer implementations which correspond to {@code ordered-by user}. These
      * follow the {@link Ordered} contract.
      */
-    interface User extends OrderingAware, Ordered {
+    non-sealed interface User extends OrderingAware, Ordered {
         @Override
         default Ordering ordering() {
             return Ordering.USER;