Seal cluster.access.concepts.Message 41/114041/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 16 Oct 2024 19:15:31 +0000 (21:15 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 17 Oct 2024 11:33:00 +0000 (13:33 +0200)
We have 4 different specializations of a Message, make sure we have that
captured in the class hierarchy.

Change-Id: I599441561083fa7365743860943fca78d8aada15
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Message.java
opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Request.java
opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java
opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestSuccess.java
opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Response.java

index b57dc96fb8d6c23bdc08a137de42ea2478c428a4..6ed4d45d30a30cad7e79587a7ed93c51448acadc 100644 (file)
@@ -54,8 +54,8 @@ import org.opendaylight.yangtools.concepts.WritableObjects;
  * @param <T> Target identifier type
  * @param <C> Message type
  */
-public abstract class Message<T extends WritableIdentifier, C extends Message<T, C>>
-        implements Immutable, Serializable {
+public abstract sealed class Message<T extends WritableIdentifier, C extends Message<T, C>>
+        implements Immutable, Serializable permits Request, Response {
     /**
      * Externalizable proxy for use with {@link Message} subclasses.
      *
index 97ce498bda202b9cf9f2e2b79ab0b65146ebdd0f..c4f1468501e47cc8be637096debfc3a91e91dd72 100644 (file)
@@ -27,7 +27,7 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
  * @param <T> Target identifier type
  * @param <C> Message type
  */
-public abstract class Request<T extends WritableIdentifier, C extends Request<T, C>> extends Message<T, C> {
+public abstract non-sealed class Request<T extends WritableIdentifier, C extends Request<T, C>> extends Message<T, C> {
     protected interface SerialForm<T extends WritableIdentifier, C extends Request<T, C>>
             extends Message.SerialForm<T, C> {
         @Override
@@ -58,7 +58,7 @@ public abstract class Request<T extends WritableIdentifier, C extends Request<T,
 
     protected Request(final @NonNull C request, final @NonNull ABIVersion version) {
         super(request, version);
-        this.replyTo = requireNonNull(request.getReplyTo());
+        replyTo = requireNonNull(request.getReplyTo());
     }
 
     /**
index 7204912669cabf88596be24a5e82e385a4e1dcaf..990be5a32b1adc03320851add50ac31020742c61 100644 (file)
@@ -23,7 +23,7 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
  * @param <T> Target identifier type
  * @param <C> Message class
  */
-public abstract class RequestFailure<T extends WritableIdentifier, C extends RequestFailure<T, C>>
+public abstract non-sealed class RequestFailure<T extends WritableIdentifier, C extends RequestFailure<T, C>>
         extends Response<T, C> {
     /**
      * Externalizable proxy for use with {@link RequestFailure} subclasses.
@@ -53,7 +53,7 @@ public abstract class RequestFailure<T extends WritableIdentifier, C extends Req
 
     protected RequestFailure(final @NonNull C failure, final @NonNull ABIVersion version) {
         super(failure, version);
-        this.cause = requireNonNull(failure.getCause());
+        cause = requireNonNull(failure.getCause());
     }
 
     protected RequestFailure(final @NonNull T target, final long sequence, final @NonNull RequestException cause) {
index f7e59ed1e6597019c43a04826fc5f006fbfea7d9..2811122a18374e2537421c40a4b9ad2a6296b7cb 100644 (file)
@@ -18,7 +18,7 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
  *
  * @param <T> Target identifier type
  */
-public abstract class RequestSuccess<T extends WritableIdentifier, C extends RequestSuccess<T, C>>
+public abstract non-sealed class RequestSuccess<T extends WritableIdentifier, C extends RequestSuccess<T, C>>
         extends Response<T, C> {
     protected interface SerialForm<T extends WritableIdentifier, C extends RequestSuccess<T, C>>
             extends Response.SerialForm<T, C> {
index a41fa01db99d2a9c1701be940ce52115a43b2eb4..d0cc5702817a967065dd83e96e4b989cfad253c9 100644 (file)
@@ -19,7 +19,8 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
  * @param <T> Target identifier type
  * @param <C> Message type
  */
-public abstract class Response<T extends WritableIdentifier, C extends Response<T, C>> extends Message<T, C> {
+public abstract sealed class Response<T extends WritableIdentifier, C extends Response<T, C>> extends Message<T, C>
+        permits RequestFailure, RequestSuccess {
     protected interface SerialForm<T extends WritableIdentifier, C extends Response<T, C>>
             extends Message.SerialForm<T, C> {