There are only two possible orderings, make sure javac enforces that
invariant.
Change-Id: I5900a43b525d781909d74b9cb4c9f5ecd167adb4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
*/
@Beta
@NonNullByDefault
*/
@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.
*/
/**
* 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;
@Override
default Ordering ordering() {
return Ordering.SYSTEM;
* Marker interface for NormalizedNodeContainer implementations which correspond to {@code ordered-by user}. These
* follow the {@link Ordered} contract.
*/
* 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;
@Override
default Ordering ordering() {
return Ordering.USER;