Topic: Support for passing a executor to subscribe method for invoking the callback

Change-Id: I9db485ee381c61fbfc38aba0c2bd90cb5af171e0
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDistributedTopic.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDistributedTopic.java
index df7bf9b..d539992 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDistributedTopic.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultDistributedTopic.java
@@ -17,6 +17,7 @@
 
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
 import java.util.function.Consumer;
 
 import org.onosproject.store.service.AsyncAtomicValue;
@@ -61,8 +62,9 @@
     }
 
     @Override
-    public CompletableFuture<Void> subscribe(Consumer<T> callback) {
-        AtomicValueEventListener<T> valueListener = event -> callback.accept(event.newValue());
+    public CompletableFuture<Void> subscribe(Consumer<T> callback, Executor executor) {
+        AtomicValueEventListener<T> valueListener =
+                event -> executor.execute(() -> callback.accept(event.newValue()));
         if (callbacks.putIfAbsent(callback, valueListener) == null) {
             return atomicValue.addListener(valueListener);
         }