Ditch blueprint from frm-sync
[openflowplugin.git] / applications / forwardingrules-sync / src / main / java / org / opendaylight / openflowplugin / applications / frsync / impl / SyncReactorFutureDecorator.java
index bb418b2b447a57d7d7b8b12f0240d07aafa5d64a..82bc6b1d74251dc94392c39de887c326840691cb 100644 (file)
@@ -7,15 +7,17 @@
  */
 package org.opendaylight.openflowplugin.applications.frsync.impl;
 
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
+import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import org.opendaylight.openflowplugin.applications.frsync.SyncReactor;
 import org.opendaylight.openflowplugin.applications.frsync.util.PathUtil;
 import org.opendaylight.openflowplugin.applications.frsync.util.SyncupEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -24,31 +26,32 @@ import org.slf4j.LoggerFactory;
  * Decorator for running delegate syncup in Future.
  */
 public class SyncReactorFutureDecorator implements SyncReactor {
-
     private static final Logger LOG = LoggerFactory.getLogger(SyncReactorFutureDecorator.class);
+
     private final SyncReactor delegate;
-    private final ListeningExecutorService executorService;
+    private final Executor executor;
 
-    public SyncReactorFutureDecorator(final SyncReactor delegate, final ListeningExecutorService executorService) {
-        this.delegate = delegate;
-        this.executorService = executorService;
+    public SyncReactorFutureDecorator(final SyncReactor delegate, final Executor executor) {
+        this.delegate = requireNonNull(delegate);
+        this.executor = requireNonNull(executor);
     }
 
+    @Override
     public ListenableFuture<Boolean> syncup(final InstanceIdentifier<FlowCapableNode> flowcapableNodePath,
-                                            final SyncupEntry syncupEntry) {
-        final NodeId nodeId = PathUtil.digNodeId(flowcapableNodePath);
-        return executorService.submit(() -> {
+            final SyncupEntry syncupEntry) {
+        final var nodeId = PathUtil.digNodeId(flowcapableNodePath);
+        return Futures.submit(() -> {
             try {
                 return doSyncupInFuture(flowcapableNodePath, syncupEntry).get(10000, TimeUnit.MILLISECONDS);
             } catch (TimeoutException e) {
                 LOG.warn("Syncup future timeout occured {}", nodeId.getValue());
                 return Boolean.FALSE;
             }
-        });
+        }, executor);
     }
 
     protected ListenableFuture<Boolean> doSyncupInFuture(final InstanceIdentifier<FlowCapableNode> flowcapableNodePath,
-                                                         final SyncupEntry syncupEntry) {
+            final SyncupEntry syncupEntry) {
         return delegate.syncup(flowcapableNodePath, syncupEntry);
     }
 }