X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fpersisted%2FServerConfigurationPayload.java;h=055984229bc2920a5cf1be0d609e2c8d12e0e53d;hb=e38f06caf5cf5d4b4861315b42fecf7842b4ec05;hp=bd9bb3e417426113ea5ebaf2849df0a4d407607d;hpb=9d5ec5cdd146a56bc03e35b6718e9492a5c8410a;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 bd9bb3e417..055984229b 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,15 +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.io.Serializable; import java.util.ArrayList; import java.util.List; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.PersistentPayload; import org.slf4j.Logger; @@ -27,12 +29,15 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ -public final class ServerConfigurationPayload extends Payload implements PersistentPayload, MigratedSerializable { +public final class ServerConfigurationPayload extends Payload implements PersistentPayload, Serializable { private static final class Proxy implements Externalizable { private static final long serialVersionUID = 1L; private List serverConfig; + // 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 } @@ -48,7 +53,7 @@ public final class ServerConfigurationPayload extends Payload implements Persist out.writeObject(i.getId()); out.writeBoolean(i.isVoting()); } - } + } @Override public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException { @@ -69,31 +74,17 @@ public final class ServerConfigurationPayload extends Payload implements Persist private static final Logger LOG = LoggerFactory.getLogger(ServerConfigurationPayload.class); 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); - } - - @Deprecated - @Override - public boolean isMigrated() { - return migrated; - } - - public @Nonnull List getServerConfig() { + public @NonNull List getServerConfig() { return serverConfig; } @@ -115,13 +106,35 @@ public final class ServerConfigurationPayload extends Payload implements Persist return serializedSize; } + @Override + public int hashCode() { + return serverConfig.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj == null) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + ServerConfigurationPayload other = (ServerConfigurationPayload) obj; + return serverConfig.equals(other.serverConfig); + } + @Override public String toString() { return "ServerConfigurationPayload [serverConfig=" + serverConfig + "]"; } - @Override - public Object writeReplace() { + private Object writeReplace() { return new Proxy(this); } }