Fix issues related to checkstyle enforcement for module
[genius.git] / interfacemanager / interfacemanager-impl / src / main / java / org / opendaylight / genius / interfacemanager / listeners / InterfaceStateListener.java
index d25394729f4f20a1a303915b9f6d468391154360..c89ef45b1b281840377a7e2d3db170b7a27bd881 100644 (file)
@@ -10,8 +10,11 @@ package org.opendaylight.genius.interfacemanager.listeners;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
 import org.opendaylight.genius.datastoreutils.DataStoreJobCoordinator;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
@@ -23,14 +26,16 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Singleton
 public class InterfaceStateListener
         extends AsyncClusteredDataTreeChangeListenerBase<Interface, InterfaceStateListener> {
     private static final Logger LOG = LoggerFactory.getLogger(InterfaceStateListener.class);
     private final DataBroker dataBroker;
 
+    @Inject
     public InterfaceStateListener(DataBroker dataBroker) {
-        super(Interface.class, InterfaceStateListener.class);
         this.dataBroker = dataBroker;
+        this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker);
     }
 
     @Override
@@ -40,39 +45,40 @@ public class InterfaceStateListener
 
     @Override
     protected void remove(InstanceIdentifier<Interface> key, Interface interfaceStateOld) {
+        InterfaceManagerCommonUtils.removeFromInterfaceStateCache(interfaceStateOld);
         LOG.debug("Received interface state remove event for {}, ignoring", interfaceStateOld.getName());
     }
 
     @Override
     protected void update(InstanceIdentifier<Interface> key, Interface interfaceStateOld, Interface interfaceStateNew) {
+        InterfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew);
         LOG.debug("Received interface state update event for {},ignoring...", interfaceStateOld.getName());
     }
 
     @Override
     protected void add(InstanceIdentifier<Interface> key, Interface interfaceStateNew) {
+        InterfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew);
         if (!Tunnel.class.equals(interfaceStateNew.getType())
             || !IfmClusterUtils.isEntityOwner(IfmClusterUtils.INTERFACE_CONFIG_ENTITY)) {
             return;
         }
-        IfmClusterUtils.runOnlyInLeaderNode(() -> {
-            LOG.debug("Received Tunnel state add event for {}", interfaceStateNew.getName());
-            DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
-            coordinator.enqueueJob(interfaceStateNew.getName(), () -> {
-                final List<ListenableFuture<Void>> futures = new ArrayList<>();
-                Interface.OperStatus bfdState = InterfaceManagerCommonUtils
-                        .getBfdStateFromCache(interfaceStateNew.getName());
-                if (bfdState != null && bfdState != interfaceStateNew.getOperStatus()
-                        && interfaceStateNew.getOperStatus() != Interface.OperStatus.Unknown) {
-                    // update opstate of interface if TEP has gone down/up as a
-                    // result of BFD monitoring
-                    LOG.debug("updating tunnel state for interface {}", interfaceStateNew.getName());
-                    WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
-                    InterfaceManagerCommonUtils.updateOpState(transaction, interfaceStateNew.getName(), bfdState);
-                    futures.add(transaction.submit());
-                }
-                return futures;
-            });
-        }, IfmClusterUtils.INTERFACE_CONFIG_ENTITY);
+        LOG.debug("Received Tunnel state add event for {}", interfaceStateNew.getName());
+        DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
+        coordinator.enqueueJob(interfaceStateNew.getName(), () -> {
+            final List<ListenableFuture<Void>> futures = new ArrayList<>();
+            Interface.OperStatus bfdState = InterfaceManagerCommonUtils
+                    .getBfdStateFromCache(interfaceStateNew.getName());
+            if (bfdState != null && bfdState != interfaceStateNew.getOperStatus()
+                    && interfaceStateNew.getOperStatus() != Interface.OperStatus.Unknown) {
+                // update opstate of interface if TEP has gone down/up as a
+                // result of BFD monitoring
+                LOG.debug("updating tunnel state for interface {}", interfaceStateNew.getName());
+                WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
+                InterfaceManagerCommonUtils.updateOpState(transaction, interfaceStateNew.getName(), bfdState);
+                futures.add(transaction.submit());
+            }
+            return futures;
+        });
     }
 
     @Override