Bump mdsal to 5.0.2
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / StatisticsContextImpl.java
index 0c967c87f4281579181139f190f1ac68bc911779..0fb57f9a11411c06ab542b97bb9d3f632eb73506 100644 (file)
@@ -5,7 +5,6 @@
  * 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.annotations.VisibleForTesting;
@@ -19,14 +18,11 @@ import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.opendaylight.mdsal.binding.api.TransactionChainClosedException;
 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
 import org.opendaylight.openflowplugin.api.ConnectionException;
@@ -37,6 +33,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.lifecycle.ContextChainMastershipState;
 import org.opendaylight.openflowplugin.api.openflow.lifecycle.ContextChainMastershipWatcher;
+import org.opendaylight.openflowplugin.api.openflow.lifecycle.DeviceInitializationContext;
 import org.opendaylight.openflowplugin.api.openflow.statistics.StatisticsContext;
 import org.opendaylight.openflowplugin.impl.datastore.MultipartWriterProvider;
 import org.opendaylight.openflowplugin.impl.rpc.AbstractRequestContext;
@@ -50,7 +47,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
+class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext, DeviceInitializationContext {
 
     private static final Logger LOG = LoggerFactory.getLogger(StatisticsContextImpl.class);
     private static final String CONNECTION_CLOSED = "Connection closed.";
@@ -81,8 +78,8 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
                           @Nonnull final MultipartWriterProvider statisticsWriterProvider,
                           @Nonnull final ListeningExecutorService executorService,
                           @Nonnull final OpenflowProviderConfig config,
-                          boolean isStatisticsPollingOn,
-                          boolean isUsingReconciliationFramework) {
+                          final boolean isStatisticsPollingOn,
+                          final boolean isUsingReconciliationFramework) {
         this.deviceContext = deviceContext;
         this.devState = Preconditions.checkNotNull(deviceContext.getDeviceState());
         this.executorService = executorService;
@@ -90,8 +87,8 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
         this.config = config;
         this.convertorExecutor = convertorExecutor;
         this.deviceInfo = deviceContext.getDeviceInfo();
-        this.statisticsPollingInterval = config.getBasicTimerDelay().getValue();
-        this.maximumPollingDelay = config.getMaximumTimerDelay().getValue();
+        this.statisticsPollingInterval = config.getBasicTimerDelay().getValue().toJava();
+        this.maximumPollingDelay = config.getMaximumTimerDelay().getValue().toJava();
         this.statisticsWriterProvider = statisticsWriterProvider;
         this.isUsingReconciliationFramework = isUsingReconciliationFramework;
 
@@ -119,7 +116,7 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
 
     @Override
     public <O> RequestContext<O> createRequestContext() {
-        final AbstractRequestContext<O> ret = new AbstractRequestContext<O>(deviceInfo.reserveXidForDeviceMessage()) {
+        final AbstractRequestContext<O> ret = new AbstractRequestContext<>(deviceInfo.reserveXidForDeviceMessage()) {
             @Override
             public void close() {
                 requestContexts.remove(this);
@@ -154,6 +151,11 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
 
     @Override
     public void instantiateServiceInstance() {
+
+    }
+
+    @Override
+    public void initializeDevice() {
         final List<MultipartType> statListForCollecting = new ArrayList<>();
 
         if (devState.isTableStatisticsAvailable() && config.isIsTableStatisticsPollingOn()) {
@@ -195,7 +197,7 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
     public void close() {
         Futures.addCallback(stopGatheringData(), new FutureCallback<Void>() {
             @Override
-            public void onSuccess(@Nullable final Void result) {
+            public void onSuccess(final Void result) {
                 requestContexts.forEach(requestContext -> RequestContextUtil
                         .closeRequestContextWithRpcError(requestContext, CONNECTION_CLOSED));
             }
@@ -219,9 +221,8 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
             StatisticsGatheringUtils.markDeviceStateSnapshotStart(deviceInfo, deviceContext);
 
             // recreate gathering future if it should be recreated
-            final ListenableFuture<Boolean> lastDataGathering =
-                    Objects.isNull(future) || future.isCancelled() || future.isDone() ? Futures
-                            .immediateFuture(Boolean.TRUE) : future;
+            final ListenableFuture<Boolean> lastDataGathering = future == null || future.isCancelled()
+                    || future.isDone() ? Futures.immediateFuture(Boolean.TRUE) : future;
 
             // build statistics gathering future
             final ListenableFuture<Boolean> newDataGathering = collectingStatType.stream()
@@ -232,7 +233,7 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
             // write end timestamp to state snapshot container
             Futures.addCallback(newDataGathering, new FutureCallback<Boolean>() {
                 @Override
-                public void onSuccess(@Nonnull final Boolean result) {
+                public void onSuccess(final Boolean result) {
                     StatisticsGatheringUtils.markDeviceStateSnapshotEnd(deviceInfo, deviceContext, result);
                 }
 
@@ -303,7 +304,7 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
     private void cancelLastDataGathering() {
         final ListenableFuture<Boolean> future = lastDataGatheringRef.getAndSet(null);
 
-        if (Objects.nonNull(future) && !future.isDone() && !future.isCancelled()) {
+        if (future != null && !future.isDone() && !future.isCancelled()) {
             future.cancel(true);
         }
     }
@@ -321,17 +322,14 @@ class StatisticsContextImpl<T extends OfHeader> implements StatisticsContext {
 
     private final class InitialSubmitCallback implements FutureCallback<Boolean> {
         @Override
-        public void onSuccess(@Nullable final Boolean result) {
-            contextChainMastershipWatcher
-                    .onMasterRoleAcquired(deviceInfo, ContextChainMastershipState.INITIAL_GATHERING);
-
+        public void onSuccess(final Boolean result) {
             if (!isUsingReconciliationFramework) {
                 continueInitializationAfterReconciliation();
             }
         }
 
         @Override
-        public void onFailure(@Nonnull final Throwable throwable) {
+        public void onFailure(final Throwable throwable) {
             contextChainMastershipWatcher.onNotAbleToStartMastershipMandatory(deviceInfo,
                                                                               "Initial gathering statistics "
                                                                                       + "unsuccessful: "