MastershipEvent carries RoleInfo as a subject

Change-Id: I8f850ad1f21bfbdc23fedda1a53f4ccedb1b8d32
diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
index aaf056c..74ca8cd 100644
--- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
+++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/DistributedMastershipStore.java
@@ -136,13 +136,13 @@
                     rv.reassign(nodeId, STANDBY, NONE);
                     roleMap.put(deviceId, rv);
                     updateTerm(deviceId);
-                    return new MastershipEvent(MASTER_CHANGED, deviceId, nodeId);
+                    return new MastershipEvent(MASTER_CHANGED, deviceId, rv.roleInfo());
                 case NONE:
                     rv.add(MASTER, nodeId);
                     rv.reassign(nodeId, STANDBY, NONE);
                     roleMap.put(deviceId, rv);
                     updateTerm(deviceId);
-                    return new MastershipEvent(MASTER_CHANGED, deviceId, nodeId);
+                    return new MastershipEvent(MASTER_CHANGED, deviceId, rv.roleInfo());
                 default:
                     log.warn("unknown Mastership Role {}", role);
                     return null;
@@ -306,7 +306,7 @@
             roleMap.put(deviceId, rv);
             Integer term = terms.get(deviceId);
             terms.put(deviceId, ++term);
-            return new MastershipEvent(MASTER_CHANGED, deviceId, backup);
+            return new MastershipEvent(MASTER_CHANGED, deviceId, rv.roleInfo());
         }
     }
 
@@ -373,7 +373,7 @@
                 return;
             }
             notifyDelegate(new MastershipEvent(
-                    MASTER_CHANGED, event.getKey(), event.getValue().get(MASTER)));
+                    MASTER_CHANGED, event.getKey(), event.getValue().roleInfo()));
         }
 
         @Override
diff --git a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
index 1ccee6b..c156143 100644
--- a/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
+++ b/core/store/hz/cluster/src/main/java/org/onlab/onos/store/mastership/impl/RoleValue.java
@@ -10,6 +10,9 @@
 import org.onlab.onos.cluster.RoleInfo;
 import org.onlab.onos.net.MastershipRole;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
+
 /**
  * A structure that holds node mastership roles associated with a
  * {@link DeviceId}. This structure needs to be locked through IMap.
@@ -109,14 +112,10 @@
 
     @Override
     public String toString() {
-        final StringBuilder builder = new StringBuilder();
+        ToStringHelper helper = MoreObjects.toStringHelper(this.getClass());
         for (Map.Entry<MastershipRole, List<NodeId>> el : value.entrySet()) {
-            builder.append(el.getKey().toString()).append(": [");
-            for (NodeId n : el.getValue()) {
-                builder.append(n);
-            }
-            builder.append("]\n");
+            helper.add(el.getKey().toString(), el.getValue());
         }
-        return builder.toString();
+        return helper.toString();
     }
 }