Consolidating null providers and making them fully configurable and integrated with the ConfigProvider to allow arbitrary topologies.

Change-Id: I899e27a9771af4013a3ce6da7f683a4927ffb438
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java b/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java
index e84727c..901df2e 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceAdminService.java
@@ -20,7 +20,7 @@
 /**
  * Service for administering the inventory of infrastructure devices.
  */
-public interface DeviceAdminService {
+public interface DeviceAdminService extends DeviceService {
 
     /**
      * Removes the device with the specified identifier.
diff --git a/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java b/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java
index 2b20313..86b12b9 100644
--- a/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java
+++ b/core/api/src/main/java/org/onosproject/net/host/HostAdminService.java
@@ -21,7 +21,7 @@
 /**
  * Service for administering the inventory of end-station hosts.
  */
-public interface HostAdminService {
+public interface HostAdminService extends HostService {
 
     /**
      * Removes the end-station host with the specified identifier.
diff --git a/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java b/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java
index 8ad8a07..b671719 100644
--- a/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java
+++ b/core/api/src/main/java/org/onosproject/net/link/LinkAdminService.java
@@ -21,7 +21,7 @@
 /**
  * Service for administering the inventory of infrastructure links.
  */
-public interface LinkAdminService {
+public interface LinkAdminService extends LinkService {
 
     /**
      * Removes all infrastructure links leading to and from the
diff --git a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
index ae1669b..1930a47 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
@@ -705,7 +705,8 @@
                         remove(new GroupStoreKeyMapKey(deviceId, group.appCookie()));
                 }
             } else {
-                if (deviceAuditStatus.get(deviceId)) {
+                Boolean audited = deviceAuditStatus.get(deviceId);
+                if (audited != null && audited) {
                     log.debug("deviceInitialAuditCompleted: Clearing AUDIT "
                                       + "status for device {}", deviceId);
                     deviceAuditStatus.put(deviceId, false);
@@ -717,8 +718,8 @@
     @Override
     public boolean deviceInitialAuditStatus(DeviceId deviceId) {
         synchronized (deviceAuditStatus) {
-            return (deviceAuditStatus.get(deviceId) != null)
-                    ? deviceAuditStatus.get(deviceId) : false;
+            Boolean audited = deviceAuditStatus.get(deviceId);
+            return audited != null && audited;
         }
     }