Add atomic mastership/term/backups method to MastershipService

Change-Id: I18c3aeaa5101c9ce08ff38fffd70eaec903a0f3e
diff --git a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/ReplicaInfoManager.java b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/ReplicaInfoManager.java
index 79c9147..cfa998d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/flow/impl/ReplicaInfoManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/flow/impl/ReplicaInfoManager.java
@@ -15,18 +15,16 @@
  */
 package org.onosproject.store.flow.impl;
 
-import com.google.common.collect.ImmutableList;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.cluster.RoleInfo;
 import org.onosproject.event.EventDeliveryService;
 import org.onosproject.event.ListenerRegistry;
 import org.onosproject.mastership.MastershipEvent;
+import org.onosproject.mastership.MastershipInfo;
 import org.onosproject.mastership.MastershipListener;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.DeviceId;
@@ -36,8 +34,6 @@
 import org.onosproject.store.flow.ReplicaInfoService;
 import org.slf4j.Logger;
 
-import java.util.Collections;
-import java.util.List;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.store.flow.ReplicaInfoEvent.Type.BACKUPS_CHANGED;
 import static org.onosproject.store.flow.ReplicaInfoEvent.Type.MASTER_CHANGED;
@@ -79,7 +75,7 @@
 
     @Override
     public ReplicaInfo getReplicaInfoFor(DeviceId deviceId) {
-        return buildFromRoleInfo(mastershipService.getNodesFor(deviceId));
+        return buildFromRoleInfo(mastershipService.getMastershipFor(deviceId));
     }
 
     @Override
@@ -92,17 +88,15 @@
         listenerRegistry.removeListener(checkNotNull(listener));
     }
 
-    private static ReplicaInfo buildFromRoleInfo(RoleInfo roles) {
-        List<NodeId> backups = roles.backups() == null ?
-            Collections.emptyList() : ImmutableList.copyOf(roles.backups());
-        return new ReplicaInfo(roles.master(), backups);
+    private static ReplicaInfo buildFromRoleInfo(MastershipInfo mastership) {
+        return new ReplicaInfo(mastership.term(), mastership.master().orElse(null), mastership.backups());
     }
 
     final class InternalMastershipListener implements MastershipListener {
 
         @Override
         public void event(MastershipEvent event) {
-            final ReplicaInfo replicaInfo = buildFromRoleInfo(event.roleInfo());
+            final ReplicaInfo replicaInfo = buildFromRoleInfo(event.mastershipInfo());
             switch (event.type()) {
                 case MASTER_CHANGED:
                     eventDispatcher.post(new ReplicaInfoEvent(MASTER_CHANGED,