ONOS-3655 - This Device key subsystem update adds the implementation of the
DeviceKeyManager and the distributed device key store.

Change-Id: I32544040590b31a59e20f3375fca453a117f940c
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyId.java b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyId.java
index 2ec5c60..a4bdac7 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyId.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyId.java
@@ -48,7 +48,7 @@
      * @param id for the device key identifier
      * @return device key identifier
      */
-    static final DeviceKeyId deviceKeyId(String id) {
+    public static final DeviceKeyId deviceKeyId(String id) {
         return new DeviceKeyId(id);
     }
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyService.java
index 0372359..b869aeb 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyService.java
@@ -17,26 +17,29 @@
 package org.onosproject.incubator.net.key;
 
 import com.google.common.annotations.Beta;
+import org.onosproject.event.ListenerService;
+
+import java.util.Collection;
 
 /**
  * Service for querying device keys.
  */
 @Beta
-public interface DeviceKeyService {
+public interface DeviceKeyService extends ListenerService<DeviceKeyEvent, DeviceKeyListener> {
 
     /**
      * Returns all device keys.
      *
-     * @return collection of device keys
+     * @return Collection of device keys
      */
-    Iterable<DeviceKey> getDeviceKeys();
+    Collection<DeviceKey> getDeviceKeys();
 
     /**
-     * Returns the device key(s) using a device key identifier.
+     * Returns the device key using a device key identifier.
      *
-     * @param id device key identifier
-     * @return collection of device keys
+     * @param deviceKeyId device key identifier
+     * @return device key
      */
-    Iterable<DeviceKey> getDeviceKey(DeviceKeyId id);
+    DeviceKey getDeviceKey(DeviceKeyId deviceKeyId);
 }
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyStore.java
index f25b662..d25c28f 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyStore.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/key/DeviceKeyStore.java
@@ -19,6 +19,8 @@
 import com.google.common.annotations.Beta;
 import org.onosproject.store.Store;
 
+import java.util.Collection;
+
 /**
  * Manages inventory of device keys; not intended for direct use.
  */
@@ -28,15 +30,28 @@
      * Creates or updates a device key.
      *
      * @param deviceKey device key
-     * @return device key event
      */
-    DeviceKeyEvent createOrUpdateDeviceKey(DeviceKey deviceKey);
+    void createOrUpdateDeviceKey(DeviceKey deviceKey);
 
     /**
      * Deletes a device key by a specific device key identifier.
      *
      * @param deviceKeyId device key unique identifier
-     * @return device key event
      */
-    DeviceKeyEvent deleteDeviceKey(DeviceKeyId deviceKeyId);
+    void deleteDeviceKey(DeviceKeyId deviceKeyId);
+
+    /**
+     * Returns all device keys.
+     *
+     * @return set of device keys
+     */
+    Collection<DeviceKey> getDeviceKeys();
+
+    /**
+     * Returns the device key matching a device key identifier.
+     *
+     * @param deviceKeyId device key unique identifier
+     * @return device key
+     */
+    DeviceKey getDeviceKey(DeviceKeyId deviceKeyId);
 }