X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fpersisted%2FDatastoreSnapshot.java;h=9c0a3acc72d12c4a406ef4085aca068f5c9ee29b;hb=HEAD;hp=6330e5d4c257343a135f62b6e9ac3a8dcd429923;hpb=127042ea7e148d9dc0282acc3780b4754ca69e12;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DatastoreSnapshot.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DatastoreSnapshot.java index 6330e5d4c2..9c0a3acc72 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DatastoreSnapshot.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DatastoreSnapshot.java @@ -10,12 +10,7 @@ package org.opendaylight.controller.cluster.datastore.persisted; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; import java.io.Serializable; -import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -26,61 +21,16 @@ import org.opendaylight.controller.cluster.raft.persisted.Snapshot; * * @author Thomas Pantelis */ -public class DatastoreSnapshot implements Serializable { +public final class DatastoreSnapshot implements Serializable { + @java.io.Serial private static final long serialVersionUID = 1L; - private static final class Proxy implements Externalizable { - private static final long serialVersionUID = 1L; - - private DatastoreSnapshot datastoreSnapshot; - - // checkstyle flags the public modifier as redundant which really doesn't make sense since it clearly isn't - // redundant. It is explicitly needed for Java serialization to be able to create instances via reflection. - @SuppressWarnings("checkstyle:RedundantModifier") - public Proxy() { - // For Externalizable - } - - Proxy(final DatastoreSnapshot datastoreSnapshot) { - this.datastoreSnapshot = datastoreSnapshot; - } - - @Override - public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(datastoreSnapshot.type); - out.writeObject(datastoreSnapshot.shardManagerSnapshot); - - out.writeInt(datastoreSnapshot.shardSnapshots.size()); - for (ShardSnapshot shardSnapshot: datastoreSnapshot.shardSnapshots) { - out.writeObject(shardSnapshot); - } - } - - @Override - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - String localType = (String)in.readObject(); - ShardManagerSnapshot localShardManagerSnapshot = (ShardManagerSnapshot) in.readObject(); - - int size = in.readInt(); - List localShardSnapshots = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - localShardSnapshots.add((ShardSnapshot) in.readObject()); - } - - datastoreSnapshot = new DatastoreSnapshot(localType, localShardManagerSnapshot, localShardSnapshots); - } - - private Object readResolve() { - return datastoreSnapshot; - } - } - - private final String type; + private final @NonNull String type; private final ShardManagerSnapshot shardManagerSnapshot; - private final List shardSnapshots; + private final @NonNull ImmutableList shardSnapshots; - public DatastoreSnapshot(@NonNull String type, @Nullable ShardManagerSnapshot shardManagerSnapshot, - @NonNull List shardSnapshots) { + public DatastoreSnapshot(final @NonNull String type, final @Nullable ShardManagerSnapshot shardManagerSnapshot, + final @NonNull List shardSnapshots) { this.type = requireNonNull(type); this.shardManagerSnapshot = shardManagerSnapshot; this.shardSnapshots = ImmutableList.copyOf(shardSnapshots); @@ -98,49 +48,19 @@ public class DatastoreSnapshot implements Serializable { return shardSnapshots; } + @java.io.Serial private Object writeReplace() { - return new Proxy(this); + return new DS(this); } - public static class ShardSnapshot implements Serializable { + public static final class ShardSnapshot implements Serializable { + @java.io.Serial private static final long serialVersionUID = 1L; - private static final class Proxy implements Externalizable { - private static final long serialVersionUID = 1L; - - private ShardSnapshot shardSnapshot; - - // checkstyle flags the public modifier as redundant which really doesn't make sense since it clearly isn't - // redundant. It is explicitly needed for Java serialization to be able to create instances via reflection. - @SuppressWarnings("checkstyle:RedundantModifier") - public Proxy() { - // For Externalizable - } - - Proxy(final ShardSnapshot shardSnapshot) { - this.shardSnapshot = shardSnapshot; - } - - @Override - public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(shardSnapshot.name); - out.writeObject(shardSnapshot.snapshot); - } - - @Override - public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - shardSnapshot = new ShardSnapshot((String)in.readObject(), (Snapshot) in.readObject()); - } - - private Object readResolve() { - return shardSnapshot; - } - } - - private final String name; - private final Snapshot snapshot; + private final @NonNull String name; + private final @NonNull Snapshot snapshot; - public ShardSnapshot(@NonNull String name, @NonNull Snapshot snapshot) { + public ShardSnapshot(final @NonNull String name, final @NonNull Snapshot snapshot) { this.name = requireNonNull(name); this.snapshot = requireNonNull(snapshot); } @@ -153,8 +73,9 @@ public class DatastoreSnapshot implements Serializable { return snapshot; } + @java.io.Serial private Object writeReplace() { - return new Proxy(this); + return new DSS(this); } } }