Bump MRI upstreams
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / StatisticsManagerImpl.java
index f3ff13e3fdc8d2ae296906f8371fa88e064364c5..1e5f1b7dd3da349dcb50bf5991e614aa4e67706b 100644 (file)
@@ -5,17 +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 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;
@@ -23,49 +23,56 @@ import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsManager
 import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProvider;
 import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProviderFactory;
 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.MultipartReply;
 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 StatisticsWorkMode workMode = StatisticsWorkMode.COLLECTALL;
+    private final ObjectRegistration<StatisticsManagerControlService> controlServiceRegistration;
+    private final StatisticsWorkMode workMode = StatisticsWorkMode.COLLECTALL;
     private boolean isStatisticsFullyDisabled;
 
-    public StatisticsManagerImpl(@Nonnull final OpenflowProviderConfig config,
-                                 @Nonnull final RpcProviderRegistry rpcProviderRegistry,
-                                 final ConvertorExecutor convertorExecutor) {
+    public StatisticsManagerImpl(@NonNull final OpenflowProviderConfig config,
+                                 @NonNull final RpcProviderService rpcProviderRegistry,
+                                 final ConvertorExecutor convertorExecutor,
+                                 @NonNull final Executor executor) {
         this.config = config;
-        this.converterExecutor = convertorExecutor;
-        this.controlServiceRegistration = Preconditions.checkNotNull(rpcProviderRegistry
-                .addRpcImplementation(StatisticsManagerControlService.class, this));
+        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);
@@ -74,6 +81,7 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag
                 switch (targetWorkMode) {
                     case COLLECTALL:
                         context.enableGathering();
+                        break;
                     case FULLYDISABLED:
                         context.disableGathering();
                         break;
@@ -83,40 +91,28 @@ 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);
 
-        final StatisticsContext statisticsContext =
-                deviceContext.canUseSingleLayerSerialization() ?
-                        new StatisticsContextImpl<MultipartReply>(
-                                deviceContext,
-                                converterExecutor,
-                                statisticsWriterProvider,
-                                !isStatisticsFullyDisabled && config.isIsStatisticsPollingOn(),
-                                useReconciliationFramework,
-                                config.getBasicTimerDelay().getValue(),
-                                config.getMaximumTimerDelay().getValue()) :
-                        new StatisticsContextImpl<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow
-                                .protocol.rev130731.MultipartReply>(
-                                deviceContext,
-                                converterExecutor,
-                                statisticsWriterProvider,
-                                !isStatisticsFullyDisabled && config.isIsStatisticsPollingOn(),
-                                useReconciliationFramework,
-                                config.getBasicTimerDelay().getValue(),
-                                config.getMaximumTimerDelay().getValue());
+        final StatisticsContext statisticsContext = new StatisticsContextImpl<>(
+                deviceContext,
+                converterExecutor,
+                statisticsWriterProvider,
+                executor,
+                config,
+                !isStatisticsFullyDisabled && config.getIsStatisticsPollingOn(),
+                useReconciliationFramework);
 
         contexts.put(deviceContext.getDeviceInfo(), statisticsContext);
         return statisticsContext;