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;
*
* @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<ServerInfo> 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
}
out.writeObject(i.getId());
out.writeBoolean(i.isVoting());
}
- }
+ }
@Override
public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
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<ServerInfo> serverConfig;
- private final boolean migrated;
private int serializedSize = -1;
- private ServerConfigurationPayload(final @Nonnull List<ServerInfo> serverConfig, boolean migrated) {
+ public ServerConfigurationPayload(@Nonnull final List<ServerInfo> serverConfig) {
this.serverConfig = ImmutableList.copyOf(serverConfig);
- this.migrated = migrated;
- }
-
- public ServerConfigurationPayload(final @Nonnull List<ServerInfo> serverConfig) {
- this(serverConfig, false);
- }
-
- @Deprecated
- public static ServerConfigurationPayload createMigrated(final @Nonnull List<ServerInfo> serverConfig) {
- return new ServerConfigurationPayload(serverConfig, true);
}
- @Deprecated
- @Override
- public boolean isMigrated() {
- return migrated;
- }
-
- public @Nonnull List<ServerInfo> getServerConfig() {
+ @Nonnull
+ public List<ServerInfo> getServerConfig() {
return serverConfig;
}
return "ServerConfigurationPayload [serverConfig=" + serverConfig + "]";
}
- @Override
- public Object writeReplace() {
+ private Object writeReplace() {
return new Proxy(this);
}
}