genius/interfacemanager annotation based bp
[genius.git] / interfacemanager / interfacemanager-impl / src / main / java / org / opendaylight / genius / interfacemanager / listeners / CacheBridgeRefEntryListener.java
index a05ec10f0fe9b1dd10f77b9392e2d441656876c8..ac509f49bd879474114288374887bd95d691201e 100644 (file)
@@ -12,6 +12,8 @@ import java.util.Collection;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+
+import org.apache.aries.blueprint.annotation.service.Reference;
 import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
@@ -35,13 +37,15 @@ import org.slf4j.LoggerFactory;
 public class CacheBridgeRefEntryListener implements ClusteredDataTreeChangeListener<BridgeRefEntry> {
     private static final Logger LOG = LoggerFactory.getLogger(CacheBridgeRefEntryListener.class);
 
+    private final InterfaceMetaUtils interfaceMetaUtils;
     private final ListenerRegistration<CacheBridgeRefEntryListener> registration;
     private final DataTreeIdentifier<BridgeRefEntry> treeId = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
-            getWildcardPath());
+            InstanceIdentifier.create(BridgeRefInfo.class).child(BridgeRefEntry.class));
 
     @Inject
-    public CacheBridgeRefEntryListener(DataBroker dataBroker) {
+    public CacheBridgeRefEntryListener(@Reference DataBroker dataBroker, InterfaceMetaUtils interfaceMetaUtils) {
         LOG.trace("Registering on path: {}", treeId);
+        this.interfaceMetaUtils = interfaceMetaUtils;
         registration = dataBroker.registerDataTreeChangeListener(treeId, CacheBridgeRefEntryListener.this);
     }
 
@@ -52,10 +56,6 @@ public class CacheBridgeRefEntryListener implements ClusteredDataTreeChangeListe
         }
     }
 
-    protected InstanceIdentifier<BridgeRefEntry> getWildcardPath() {
-        return InstanceIdentifier.create(BridgeRefInfo.class).child(BridgeRefEntry.class);
-    }
-
     @Override
     public void onDataTreeChanged(Collection<DataTreeModification<BridgeRefEntry>> changes) {
         for (DataTreeModification<BridgeRefEntry> change : changes) {
@@ -70,11 +70,13 @@ public class CacheBridgeRefEntryListener implements ClusteredDataTreeChangeListe
                      * Removing for now, can consider this as future optimization.
                      *
                      */
-                    InterfaceMetaUtils.removeFromBridgeRefEntryCache(mod.getDataBefore());
+                    if (mod.getDataBefore() != null) {
+                        interfaceMetaUtils.removeFromBridgeRefEntryCache(mod.getDataBefore());
+                    }
                     break;
                 case SUBTREE_MODIFIED:
                 case WRITE:
-                    InterfaceMetaUtils.addBridgeRefEntryToCache(mod.getDataAfter());
+                    interfaceMetaUtils.addBridgeRefEntryToCache(mod.getDataAfter());
                     break;
                 default:
                     throw new IllegalArgumentException("Unhandled modification type " + mod.getModificationType());