Bug 7521: Convert byte[] to ShardManagerSnapshot in DatastoreSnapshot
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / shardmanager / ShardPeerAddressResolver.java
index 4a9f144ef11159410de192bbe218d276519d5901..a05548b1a4209f10bc3b4387009c24c52d34a4dc 100644 (file)
@@ -8,11 +8,13 @@
 package org.opendaylight.controller.cluster.datastore.shardmanager;
 
 import akka.actor.Address;
+import com.google.common.base.Preconditions;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
 import org.opendaylight.controller.cluster.datastore.identifiers.ShardManagerIdentifier;
 import org.opendaylight.controller.cluster.raft.PeerAddressResolver;
@@ -26,33 +28,33 @@ import org.opendaylight.controller.cluster.raft.PeerAddressResolver;
 class ShardPeerAddressResolver implements PeerAddressResolver {
     // Stores a mapping between a member name and the address of the member. The map is concurrent as it
     // will be accessed by multiple threads via the public resolve method.
-    private final ConcurrentMap<String, Address> memberNameToAddress = new ConcurrentHashMap<>();
+    private final ConcurrentMap<MemberName, Address> memberNameToAddress = new ConcurrentHashMap<>();
     private final String shardManagerIdentifier;
     private final String shardManagerType;
-    private final String localMemberName;
+    private final MemberName localMemberName;
 
-    public ShardPeerAddressResolver(String shardManagerType, String localMemberName) {
+    ShardPeerAddressResolver(String shardManagerType, MemberName localMemberName) {
         this.shardManagerIdentifier = ShardManagerIdentifier.builder().type(shardManagerType).build().toString();
         this.shardManagerType = shardManagerType;
-        this.localMemberName = localMemberName;
+        this.localMemberName = Preconditions.checkNotNull(localMemberName);
     }
 
-    void addPeerAddress(String memberName, Address address) {
+    void addPeerAddress(MemberName memberName, Address address) {
         memberNameToAddress.put(memberName, address);
     }
 
-    void removePeerAddress(String memberName) {
+    void removePeerAddress(MemberName memberName) {
         memberNameToAddress.remove(memberName);
     }
 
-    Address getPeerAddress(String memberName) {
+    Address getPeerAddress(MemberName memberName) {
         return memberNameToAddress.get(memberName);
     }
 
     Collection<String> getShardManagerPeerActorAddresses() {
         Collection<String> peerAddresses = new ArrayList<>();
-        for(Map.Entry<String, Address> entry: memberNameToAddress.entrySet()) {
-            if(!localMemberName.equals(entry.getKey())) {
+        for (Map.Entry<MemberName, Address> entry: memberNameToAddress.entrySet()) {
+            if (!localMemberName.equals(entry.getKey())) {
                 peerAddresses.add(getShardManagerActorPathBuilder(entry.getValue()).toString());
             }
         }
@@ -60,13 +62,13 @@ class ShardPeerAddressResolver implements PeerAddressResolver {
         return peerAddresses;
     }
 
-    ShardIdentifier getShardIdentifier(String memberName, String shardName){
-        return ShardIdentifier.builder().memberName(memberName).shardName(shardName).type(shardManagerType).build();
+    ShardIdentifier getShardIdentifier(MemberName memberName, String shardName) {
+        return ShardIdentifier.create(shardName, memberName, shardManagerType);
     }
 
-    String getShardActorAddress(String shardName, String memberName) {
+    String getShardActorAddress(String shardName, MemberName memberName) {
         Address memberAddress = memberNameToAddress.get(memberName);
-        if(memberAddress != null) {
+        if (memberAddress != null) {
             return getShardManagerActorPathBuilder(memberAddress).append("/").append(
                     getShardIdentifier(memberName, shardName)).toString();
         }
@@ -80,11 +82,11 @@ class ShardPeerAddressResolver implements PeerAddressResolver {
 
     @Override
     public String resolve(String peerId) {
-        if(peerId == null) {
+        if (peerId == null) {
             return null;
         }
 
-        ShardIdentifier shardId = ShardIdentifier.builder().fromShardIdString(peerId).build();
+        ShardIdentifier shardId = ShardIdentifier.fromShardIdString(peerId);
         return getShardActorAddress(shardId.getShardName(), shardId.getMemberName());
     }
 }