*/
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.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.controller.cluster.raft.persisted.MigratedSerializable;
/**
* Represents the persisted snapshot state for the ShardManager.
*
* @author Thomas Pantelis
*/
-public final class ShardManagerSnapshot implements Serializable {
+public sealed class ShardManagerSnapshot implements Serializable {
interface SerializedForm extends Externalizable {
/**
* Return the serial form of this object contents, corresponding to {@link ShardManagerSnapshot#shardList}.
}
}
+ @Deprecated(since = "7.0.0", forRemoval = true)
+ private static final class Magnesium extends ShardManagerSnapshot implements MigratedSerializable {
+ @java.io.Serial
+ private static final long serialVersionUID = 1L;
+
+ Magnesium(final List<String> shardList) {
+ super(shardList);
+ }
+
+ @Override
+ public boolean isMigrated() {
+ return true;
+ }
+ }
+
+ @Deprecated(since = "7.0.0", forRemoval = true)
private static final class Proxy implements SerializedForm {
+ @java.io.Serial
private static final long serialVersionUID = 1L;
- private ShardManagerSnapshot snapshot;
+ private ShardManagerSnapshot snapshot = null;
// 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.
// For Externalizable
}
- Proxy(final ShardManagerSnapshot snapshot) {
- this.snapshot = snapshot;
- }
-
@Override
public List<String> shardNames() {
return snapshot.getShardList();
@Override
public Object readResolve() {
- return verifyNotNull(snapshot);
+ return new Magnesium(snapshot.getShardList());
}
}
+ @java.io.Serial
private static final long serialVersionUID = 1L;
private final List<String> shardList;
this.shardList = ImmutableList.copyOf(shardList);
}
- public List<String> getShardList() {
+ public final List<String> getShardList() {
return shardList;
}
- private Object writeReplace() {
- return new Proxy(this);
+ @java.io.Serial
+ public final Object writeReplace() {
+ return new SM(this);
}
@Override
- public String toString() {
+ public final String toString() {
return "ShardManagerSnapshot [ShardList = " + shardList + " ]";
}
}