Added providerService for mastership

Change-Id: I1572161f70c696961a663cba17f197e23f96967e
diff --git a/core/net/src/main/java/org/onlab/onos/cluster/impl/MastershipManager.java b/core/net/src/main/java/org/onlab/onos/cluster/impl/MastershipManager.java
index 3d7b5bc..492f0d4 100644
--- a/core/net/src/main/java/org/onlab/onos/cluster/impl/MastershipManager.java
+++ b/core/net/src/main/java/org/onlab/onos/cluster/impl/MastershipManager.java
@@ -20,13 +20,15 @@
 import org.onlab.onos.event.EventDeliveryService;
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.MastershipRole;
+import org.onlab.onos.net.provider.AbstractProviderRegistry;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-public class MastershipManager implements MastershipService,
-        MastershipAdminService {
+public class MastershipManager
+        extends AbstractProviderRegistry<MastershipProvider, MastershipProviderService>
+        implements MastershipService, MastershipAdminService {
 
     private static final String NODE_ID_NULL = "Node ID cannot be null";
     private static final String DEVICE_ID_NULL = "Device ID cannot be null";
@@ -58,7 +60,6 @@
         log.info("Stopped");
     }
 
-
     @Override
     public void setRole(NodeId nodeId, DeviceId deviceId, MastershipRole role) {
         checkNotNull(nodeId, NODE_ID_NULL);
@@ -98,6 +99,12 @@
         listenerRegistry.removeListener(listener);
     }
 
+    @Override
+    protected MastershipProviderService createProviderService(
+            MastershipProvider provider) {
+        return new InternalMastershipProviderService(provider);
+    }
+
     private class InternalMastershipProviderService
             extends AbstractProviderService<MastershipProvider>
             implements MastershipProviderService {
@@ -107,9 +114,11 @@
         }
 
         @Override
-        public void roleChanged(DeviceId deviceId, MastershipRole role) {
+        public void roleChanged(NodeId nodeId, DeviceId deviceId, MastershipRole role) {
             // TODO Auto-generated method stub
-
+            MastershipEvent event =
+                    store.addOrUpdateDevice(nodeId, deviceId, role);
+            post(event);
         }
     }
 
@@ -119,4 +128,5 @@
             eventDispatcher.post(event);
         }
     }
+
 }