Switch to use PayloadVersion.CHLORINE_SR2
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / persisted / ShardManagerSnapshot.java
index 2e0320bbcd7785d3cdb5546d3098280cce9180f0..b211d1a54f77d95398bcef2d927bc6035ff75762 100644 (file)
@@ -7,7 +7,6 @@
  */
 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;
@@ -19,13 +18,14 @@ import java.io.Serializable;
 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}.
@@ -69,10 +69,27 @@ public final class ShardManagerSnapshot implements Serializable {
         }
     }
 
+    @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.
@@ -81,10 +98,6 @@ public final class ShardManagerSnapshot implements Serializable {
             // For Externalizable
         }
 
-        Proxy(final ShardManagerSnapshot snapshot) {
-            this.snapshot = snapshot;
-        }
-
         @Override
         public List<String> shardNames() {
             return snapshot.getShardList();
@@ -97,10 +110,11 @@ public final class ShardManagerSnapshot implements Serializable {
 
         @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;
@@ -109,16 +123,17 @@ public final class ShardManagerSnapshot implements Serializable {
         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 + " ]";
     }
 }