Seal LeafReference 85/108585/3
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 21 Oct 2023 04:59:08 +0000 (06:59 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 14 Nov 2023 08:42:08 +0000 (08:42 +0000)
We only want to access this interface through specializations, express
that through sealing it.

Change-Id: I2586005b482e4b25427c93ae9bca11bf772ae613
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java

index b975b90af4d147740e50d8c92b30ef49c3368eb9..5814ba0050c833c2923c0f2f4965b8474b2b3554 100644 (file)
@@ -201,8 +201,7 @@ public interface MatchBuilderPath<O extends DataObject, T extends DataObject> ex
      * @param <P> Parent type
      * @param <C> Child type
      */
-    @FunctionalInterface
-    interface LeafReference<P, C> extends Serializable {
+    sealed interface LeafReference<P, C> extends Serializable {
         /**
          * Dummy method to express the method signature of a typical getter. Due to this match we can match any Java
          * method reference which takes in {@code parent} and results in {@code child} -- expose the feature of using
@@ -218,72 +217,72 @@ public interface MatchBuilderPath<O extends DataObject, T extends DataObject> ex
     }
 
     @FunctionalInterface
-    interface BooleanLeafReference<P> extends LeafReference<P, Boolean> {
-
+    non-sealed interface BooleanLeafReference<P> extends LeafReference<P, Boolean> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Decimal64LeafReference<P> extends LeafReference<P, Decimal64> {
-
+    non-sealed interface Decimal64LeafReference<P> extends LeafReference<P, Decimal64> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface EmptyLeafReference<P> extends LeafReference<P, Empty> {
-
+    non-sealed interface EmptyLeafReference<P> extends LeafReference<P, Empty> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface StringLeafReference<P> extends LeafReference<P, String> {
-
+    non-sealed interface StringLeafReference<P> extends LeafReference<P, String> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Int8LeafReference<P> extends LeafReference<P, Byte> {
-
+    non-sealed interface Int8LeafReference<P> extends LeafReference<P, Byte> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Int16LeafReference<P> extends LeafReference<P, Short> {
-
+    non-sealed interface Int16LeafReference<P> extends LeafReference<P, Short> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Int32LeafReference<P> extends LeafReference<P, Integer> {
-
+    non-sealed interface Int32LeafReference<P> extends LeafReference<P, Integer> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Int64LeafReference<P> extends LeafReference<P, Long> {
-
+    non-sealed interface Int64LeafReference<P> extends LeafReference<P, Long> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Uint8LeafReference<P> extends LeafReference<P, Uint8> {
-
+    non-sealed interface Uint8LeafReference<P> extends LeafReference<P, Uint8> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Uint16LeafReference<P> extends LeafReference<P, Uint16> {
-
+    non-sealed interface Uint16LeafReference<P> extends LeafReference<P, Uint16> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Uint32LeafReference<P> extends LeafReference<P, Uint32> {
-
+    non-sealed interface Uint32LeafReference<P> extends LeafReference<P, Uint32> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface Uint64LeafReference<P> extends LeafReference<P, Uint64> {
-
+    non-sealed interface Uint64LeafReference<P> extends LeafReference<P, Uint64> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface IdentityLeafReference<P, T extends BaseIdentity> extends LeafReference<P, T> {
-
+    non-sealed interface IdentityLeafReference<P, T extends BaseIdentity> extends LeafReference<P, T> {
+        // Nothing here
     }
 
     @FunctionalInterface
-    interface TypeObjectLeafReference<P, T extends TypeObject> extends LeafReference<P, T> {
-
+    non-sealed interface TypeObjectLeafReference<P, T extends TypeObject> extends LeafReference<P, T> {
+        // Nothing here
     }
 }