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%2FServerConfigurationPayload.java;h=865594715d4dc2041859076e36f0722cdf1d61ff;hb=200164de7246237ee45f761c4db15b8b51f6a93c;hp=db1f193cba360fd389a683d435a9fa8a6ff61698;hpb=3fda1a923defdbf18849c6080c3aa19f1ebf2c5f;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ServerConfigurationPayload.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ServerConfigurationPayload.java index db1f193cba..865594715d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ServerConfigurationPayload.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ServerConfigurationPayload.java @@ -7,15 +7,16 @@ */ package org.opendaylight.controller.cluster.raft; -import com.google.protobuf.GeneratedMessage.GeneratedExtension; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.List; -import java.util.Map; +import javax.annotation.Nonnull; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; -import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages; +import org.opendaylight.controller.cluster.raft.protobuff.client.messages.PersistentPayload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,38 +24,34 @@ import org.slf4j.LoggerFactory; * Payload data for server configuration log entries. * * @author Thomas Pantelis + * + * @deprecated Use {@link org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload} instead. */ -public class ServerConfigurationPayload extends Payload implements Serializable { +@Deprecated +public class ServerConfigurationPayload extends Payload implements PersistentPayload, Serializable { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(ServerConfigurationPayload.class); - private final List newServerConfig; - private final List oldServerConfig; + private final List serverConfig; private transient int serializedSize = -1; - public ServerConfigurationPayload(List newServerConfig, List oldServerConfig) { - this.newServerConfig = newServerConfig; - this.oldServerConfig = oldServerConfig; - } - - public List getNewServerConfig() { - return newServerConfig; + public ServerConfigurationPayload(@Nonnull List serverConfig) { + this.serverConfig = Preconditions.checkNotNull(serverConfig); } - - public List getOldServerConfig() { - return oldServerConfig; + @Nonnull + public List getServerConfig() { + return serverConfig; } @Override public int size() { - if(serializedSize < 0) { + if (serializedSize < 0) { try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos); - out.writeObject(newServerConfig); - out.writeObject(oldServerConfig); + out.writeObject(serverConfig); out.close(); serializedSize = bos.toByteArray().length; @@ -68,21 +65,58 @@ public class ServerConfigurationPayload extends Payload implements Serializable } @Override - @Deprecated - @SuppressWarnings("rawtypes") - public Map encode() { - return null; + public String toString() { + return "ServerConfigurationPayload [serverConfig=" + serverConfig + "]"; } - @Override - @Deprecated - public Payload decode(AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload payload) { - return null; + private Object readResolve() { + return org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload.createMigrated( + Lists.transform(serverConfig, t -> new org.opendaylight.controller.cluster.raft.persisted.ServerInfo( + t.getId(), t.isVoting))); } - @Override - public String toString() { - return "ServerConfigurationPayload [newServerConfig=" + newServerConfig + ", oldServerConfig=" - + oldServerConfig + "]"; + public static class ServerInfo implements Serializable { + private static final long serialVersionUID = 1L; + + private final String id; + private final boolean isVoting; + + public ServerInfo(@Nonnull String id, boolean isVoting) { + this.id = Preconditions.checkNotNull(id); + this.isVoting = isVoting; + } + + @Nonnull + public String getId() { + return id; + } + + public boolean isVoting() { + return isVoting; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Boolean.hashCode(isVoting); + result = prime * result + id.hashCode(); + return result; + } + + @Override + public boolean equals(Object obj) { + if (obj == null || getClass() != obj.getClass()) { + return false; + } + + ServerInfo other = (ServerInfo) obj; + return isVoting == other.isVoting && id.equals(other.id); + } + + @Override + public String toString() { + return "ServerInfo [id=" + id + ", isVoting=" + isVoting + "]"; + } } }