Bump MRI upstreams
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / StatisticsManagerImpl.java
index 1a1801520f0cfb475b3d72a961a275bc93f05914..1e5f1b7dd3da349dcb50bf5991e614aa4e67706b 100644 (file)
@@ -5,18 +5,17 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.openflowplugin.impl.statistics;
 
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListeningExecutorService;
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.Future;
+import java.util.concurrent.Executor;
 import java.util.concurrent.Semaphore;
-import javax.annotation.Nonnull;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
 import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext;
@@ -26,49 +25,54 @@ import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProviderFac
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.ChangeStatisticsWorkModeInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.ChangeStatisticsWorkModeOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.GetStatisticsWorkModeInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.GetStatisticsWorkModeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.GetStatisticsWorkModeOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.StatisticsManagerControlService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflowplugin.sm.control.rev150812.StatisticsWorkMode;
-import org.opendaylight.yangtools.yang.common.RpcError;
+import org.opendaylight.yangtools.concepts.ObjectRegistration;
+import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class StatisticsManagerImpl implements StatisticsManager, StatisticsManagerControlService {
+public final class StatisticsManagerImpl implements StatisticsManager, StatisticsManagerControlService {
 
     private static final Logger LOG = LoggerFactory.getLogger(StatisticsManagerImpl.class);
 
     private final OpenflowProviderConfig config;
     private final ConvertorExecutor converterExecutor;
+    private final Executor executor;
     private final ConcurrentMap<DeviceInfo, StatisticsContext> contexts = new ConcurrentHashMap<>();
     private final Semaphore workModeGuard = new Semaphore(1, true);
-    private final BindingAwareBroker.RpcRegistration<StatisticsManagerControlService> controlServiceRegistration;
-    private final ListeningExecutorService executorService;
+    private final ObjectRegistration<StatisticsManagerControlService> controlServiceRegistration;
     private final StatisticsWorkMode workMode = StatisticsWorkMode.COLLECTALL;
     private boolean isStatisticsFullyDisabled;
 
-    public StatisticsManagerImpl(@Nonnull final OpenflowProviderConfig config,
-                                 @Nonnull final RpcProviderRegistry rpcProviderRegistry,
+    public StatisticsManagerImpl(@NonNull final OpenflowProviderConfig config,
+                                 @NonNull final RpcProviderService rpcProviderRegistry,
                                  final ConvertorExecutor convertorExecutor,
-                                 @Nonnull final ListeningExecutorService executorService) {
+                                 @NonNull final Executor executor) {
         this.config = config;
-        this.converterExecutor = convertorExecutor;
-        this.controlServiceRegistration = Preconditions.checkNotNull(rpcProviderRegistry
-                .addRpcImplementation(StatisticsManagerControlService.class, this));
-        this.executorService = executorService;
+        this.executor = executor;
+        converterExecutor = convertorExecutor;
+        controlServiceRegistration = requireNonNull(rpcProviderRegistry)
+                .registerRpcImplementation(StatisticsManagerControlService.class, this);
     }
 
     @Override
-    public Future<RpcResult<GetStatisticsWorkModeOutput>> getStatisticsWorkMode() {
+    public ListenableFuture<RpcResult<GetStatisticsWorkModeOutput>> getStatisticsWorkMode(
+            final GetStatisticsWorkModeInput input) {
         return RpcResultBuilder.success(new GetStatisticsWorkModeOutputBuilder()
                 .setMode(workMode)
                 .build()).buildFuture();
     }
 
     @Override
-    public Future<RpcResult<Void>> changeStatisticsWorkMode(ChangeStatisticsWorkModeInput input) {
+    public ListenableFuture<RpcResult<ChangeStatisticsWorkModeOutput>> changeStatisticsWorkMode(
+            final ChangeStatisticsWorkModeInput input) {
         if (workModeGuard.tryAcquire()) {
             final StatisticsWorkMode targetWorkMode = input.getMode();
             isStatisticsFullyDisabled = StatisticsWorkMode.FULLYDISABLED.equals(targetWorkMode);
@@ -77,7 +81,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
                 switch (targetWorkMode) {
                     case COLLECTALL:
                         context.enableGathering();
-                        // FIXME: is it a genuine fall through or an error?
+                        break;
                     case FULLYDISABLED:
                         context.disableGathering();
                         break;
@@ -87,17 +91,16 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
             });
 
             workModeGuard.release();
-            return RpcResultBuilder.<Void>success().buildFuture();
+            return RpcResultBuilder.<ChangeStatisticsWorkModeOutput>success().buildFuture();
         }
 
-        return RpcResultBuilder.<Void>failed()
-                .withError(RpcError.ErrorType.APPLICATION,
-                        "Statistics work mode change is already in progress")
+        return RpcResultBuilder.<ChangeStatisticsWorkModeOutput>failed()
+                .withError(ErrorType.APPLICATION, "Statistics work mode change is already in progress")
                 .buildFuture();
     }
 
     @Override
-    public StatisticsContext createContext(@Nonnull final DeviceContext deviceContext,
+    public StatisticsContext createContext(@NonNull final DeviceContext deviceContext,
                                            final boolean useReconciliationFramework) {
         final MultipartWriterProvider statisticsWriterProvider = MultipartWriterProviderFactory
                 .createDefaultProvider(deviceContext);
@@ -106,11 +109,10 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
                 deviceContext,
                 converterExecutor,
                 statisticsWriterProvider,
-                executorService,
-                !isStatisticsFullyDisabled && config.isIsStatisticsPollingOn(),
-                useReconciliationFramework,
-                config.getBasicTimerDelay().getValue(),
-                config.getMaximumTimerDelay().getValue());
+                executor,
+                config,
+                !isStatisticsFullyDisabled && config.getIsStatisticsPollingOn(),
+                useReconciliationFramework);
 
         contexts.put(deviceContext.getDeviceInfo(), statisticsContext);
         return statisticsContext;