X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fconcepts%2FRequestFailure.java;h=7204912669cabf88596be24a5e82e385a4e1dcaf;hb=refs%2Fchanges%2F47%2F103447%2F26;hp=c30269f63e14b86ad3a1906346835db09b4586d2;hpb=e085f22bb1934959f9d6f7f4368c1afe964b1e07;p=controller.git diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java index c30269f63e..7204912669 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java @@ -10,7 +10,9 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; import com.google.common.base.MoreObjects.ToStringHelper; -import java.io.Serial; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -23,7 +25,28 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; */ public abstract class RequestFailure> extends Response { - @Serial + /** + * Externalizable proxy for use with {@link RequestFailure} subclasses. + * + * @param Target identifier type + */ + protected interface SerialForm> + extends Message.SerialForm { + @Override + default C readExternal(final ObjectInput in, final T target, final long sequence) + throws IOException, ClassNotFoundException { + return createFailure(target, sequence, (RequestException) in.readObject()); + } + + @Override + default void writeExternal(final ObjectOutput out, final C msg) throws IOException { + out.writeObject(msg.getCause()); + } + + @NonNull C createFailure(@NonNull T target, long sequence, @NonNull RequestException failureCause); + } + + @java.io.Serial private static final long serialVersionUID = 1L; private final @NonNull RequestException cause; @@ -63,5 +86,5 @@ public abstract class RequestFailure externalizableProxy(ABIVersion version); + protected abstract SerialForm externalizableProxy(ABIVersion version); }