X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fpersisted%2FServerConfigurationPayload.java;h=02cb6fa37e7f8521bd4e917fb3828cf89a57d39f;hb=b4d30424d8fd2e2a7ae37a9ff169b672e8e43550;hp=0f206b5d39d5b70f314801919f05292c683fa245;hpb=660c3e22ca97bc613ea6f6288503620bba6fb233;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ServerConfigurationPayload.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ServerConfigurationPayload.java index 0f206b5d39..02cb6fa37e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ServerConfigurationPayload.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/persisted/ServerConfigurationPayload.java @@ -8,17 +8,17 @@ package org.opendaylight.controller.cluster.raft.persisted; import com.google.common.collect.ImmutableList; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.ByteArrayOutputStream; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.io.ObjectOutputStream; -import java.util.ArrayList; import java.util.List; -import javax.annotation.Nonnull; -import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; -import org.opendaylight.controller.cluster.raft.protobuff.client.messages.PersistentPayload; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.controller.cluster.raft.messages.Payload; +import org.opendaylight.controller.cluster.raft.messages.PersistentPayload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,8 +27,9 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ -public final class ServerConfigurationPayload extends Payload implements PersistentPayload, MigratedSerializable { +public final class ServerConfigurationPayload extends Payload implements PersistentPayload { private static final class Proxy implements Externalizable { + @java.io.Serial private static final long serialVersionUID = 1L; private List serverConfig; @@ -41,7 +42,7 @@ public final class ServerConfigurationPayload extends Payload implements Persist } Proxy(final ServerConfigurationPayload payload) { - this.serverConfig = payload.getServerConfig(); + serverConfig = payload.getServerConfig(); } @Override @@ -56,52 +57,47 @@ public final class ServerConfigurationPayload extends Payload implements Persist @Override public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { final int size = in.readInt(); - serverConfig = new ArrayList<>(size); + + final var builder = ImmutableList.builderWithExpectedSize(size); for (int i = 0; i < size; ++i) { final String id = (String) in.readObject(); final boolean voting = in.readBoolean(); - serverConfig.add(new ServerInfo(id, voting)); + builder.add(new ServerInfo(id, voting)); } + serverConfig = builder.build(); } + @java.io.Serial private Object readResolve() { return new ServerConfigurationPayload(serverConfig); } } private static final Logger LOG = LoggerFactory.getLogger(ServerConfigurationPayload.class); + @java.io.Serial private static final long serialVersionUID = 1L; + @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but this class " + + "implements writeReplace to delegate serialization to a Proxy class and thus instances of this class " + + "aren't serialized. FindBugs does not recognize this.") private final List serverConfig; - private final boolean migrated; private int serializedSize = -1; - private ServerConfigurationPayload(final @Nonnull List serverConfig, boolean migrated) { + public ServerConfigurationPayload(final @NonNull List serverConfig) { this.serverConfig = ImmutableList.copyOf(serverConfig); - this.migrated = migrated; - } - - public ServerConfigurationPayload(final @Nonnull List serverConfig) { - this(serverConfig, false); } - @Deprecated - public static ServerConfigurationPayload createMigrated(final @Nonnull List serverConfig) { - return new ServerConfigurationPayload(serverConfig, true); + public @NonNull List getServerConfig() { + return serverConfig; } - @Deprecated @Override - public boolean isMigrated() { - return migrated; - } - - public @Nonnull List getServerConfig() { - return serverConfig; + public int size() { + return serializedSize(); } @Override - public int size() { + public int serializedSize() { if (serializedSize < 0) { try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) { try (ObjectOutputStream out = new ObjectOutputStream(bos)) { @@ -118,13 +114,24 @@ public final class ServerConfigurationPayload extends Payload implements Persist return serializedSize; } + @Override + public int hashCode() { + return serverConfig.hashCode(); + } + + @Override + public boolean equals(final Object obj) { + return this == obj || obj instanceof ServerConfigurationPayload other + && serverConfig.equals(other.serverConfig); + } + @Override public String toString() { return "ServerConfigurationPayload [serverConfig=" + serverConfig + "]"; } @Override - public Object writeReplace() { + protected Object writeReplace() { return new Proxy(this); } }