X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fpersisted%2FShardSnapshotState.java;h=3f0b7486767adc76899b099f522eee3b41dc2715;hp=061749db81ab3b854520824769b2964f2a3ad25a;hb=2dedb8231e13abe55d6b75eb532d23dbe536e168;hpb=04502b115693e22d215716feef7b34b6d3c37f6a diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardSnapshotState.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardSnapshotState.java index 061749db81..3f0b748676 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardSnapshotState.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ShardSnapshotState.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.datastore.persisted; +import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; import com.google.common.annotations.VisibleForTesting; @@ -24,7 +25,26 @@ import org.opendaylight.controller.cluster.raft.persisted.Snapshot; * @author Thomas Pantelis */ public final class ShardSnapshotState implements Snapshot.State { - private static final class Proxy implements Externalizable { + interface SerialForm extends Externalizable { + + ShardSnapshotState snapshotState(); + + void resolveTo(@NonNull ShardSnapshotState newSnapshotState); + + Object readResolve(); + + @Override + default void readExternal(final ObjectInput in) throws IOException { + resolveTo(ShardDataTreeSnapshot.deserialize(in)); + } + + @Override + default void writeExternal(final ObjectOutput out) throws IOException { + snapshotState().getSnapshot().serialize(out); + } + } + + private static final class Proxy implements SerialForm { private static final long serialVersionUID = 1L; private ShardSnapshotState snapshotState; @@ -41,17 +61,18 @@ public final class ShardSnapshotState implements Snapshot.State { } @Override - public void writeExternal(final ObjectOutput out) throws IOException { - snapshotState.snapshot.serialize(out); + public ShardSnapshotState snapshotState() { + return snapshotState; } @Override - public void readExternal(final ObjectInput in) throws IOException { - snapshotState = ShardDataTreeSnapshot.deserialize(in); + public void resolveTo(final ShardSnapshotState newSnapshotState) { + snapshotState = requireNonNull(newSnapshotState); } - private Object readResolve() { - return snapshotState; + @Override + public Object readResolve() { + return verifyNotNull(snapshotState); } }