Switch to MD-SAL APIs
[openflowplugin.git] / applications / topology-manager / src / main / java / org / opendaylight / openflowplugin / applications / topology / manager / TerminationPointChangeListenerImpl.java
index 8c8bebbc3fe0ee91695658ae08d82ae175fe0abf..6831af0bcb6648222a97c0c4a87a19762b364a86 100644 (file)
@@ -9,11 +9,15 @@ package org.opendaylight.openflowplugin.applications.topology.manager;
 
 import java.util.Collection;
 import java.util.Optional;
+import java.util.concurrent.ExecutionException;
 import javax.annotation.Nonnull;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.apache.aries.blueprint.annotation.service.Reference;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.DataTreeModification;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
@@ -31,10 +35,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Singleton
 public class TerminationPointChangeListenerImpl extends DataTreeChangeListenerImpl<FlowCapableNodeConnector> {
     private static final Logger LOG = LoggerFactory.getLogger(TerminationPointChangeListenerImpl.class);
 
-    public TerminationPointChangeListenerImpl(final DataBroker dataBroker,
+    @Inject
+    public TerminationPointChangeListenerImpl(@Reference final DataBroker dataBroker,
                                               final OperationProcessor operationProcessor) {
         super(operationProcessor, dataBroker,
               InstanceIdentifier.builder(Nodes.class).child(Node.class).child(NodeConnector.class)
@@ -62,6 +68,12 @@ public class TerminationPointChangeListenerImpl extends DataTreeChangeListenerIm
         }
     }
 
+    @Override
+    @PreDestroy
+    public void close() throws Exception {
+        super.close();
+    }
+
     private void processRemovedTerminationPoints(final DataTreeModification<FlowCapableNodeConnector> modification) {
         final InstanceIdentifier<FlowCapableNodeConnector> removedNode = modification.getRootPath().getRootIdentifier();
         final TpId terminationPointId = provideTopologyTerminationPointId(removedNode);
@@ -79,15 +91,14 @@ public class TerminationPointChangeListenerImpl extends DataTreeChangeListenerIm
                         .topology.topology.Node>
                         nodeOptional = Optional.empty();
                 try {
-                    nodeOptional = Optional.ofNullable(
-                            manager.readFromTransaction(LogicalDatastoreType.OPERATIONAL, node).checkedGet().orNull());
-                } catch (ReadFailedException e) {
+                    nodeOptional = manager.readFromTransaction(LogicalDatastoreType.OPERATIONAL, node).get();
+                } catch (InterruptedException | ExecutionException e) {
                     LOG.warn("Error occurred when trying to read NodeConnector: {}", e.getMessage());
                     LOG.debug("Error occurred when trying to read NodeConnector.. ", e);
                 }
                 if (nodeOptional.isPresent()) {
                     TopologyManagerUtil.removeAffectedLinks(terminationPointId, manager, II_TO_TOPOLOGY);
-                    manager.addDeleteOperationTotTxChain(LogicalDatastoreType.OPERATIONAL,
+                    manager.addDeleteOperationToTxChain(LogicalDatastoreType.OPERATIONAL,
                                                          iiToTopologyTerminationPoint);
                 }
             });
@@ -118,9 +129,9 @@ public class TerminationPointChangeListenerImpl extends DataTreeChangeListenerIm
 
     private void removeLinks(final FlowCapableNodeConnector flowCapNodeConnector, final TerminationPoint point) {
         operationProcessor.enqueueOperation(manager -> {
-            if ((flowCapNodeConnector.getState() != null && flowCapNodeConnector.getState().isLinkDown()) || (
-                    flowCapNodeConnector.getConfiguration() != null && flowCapNodeConnector.getConfiguration()
-                            .isPORTDOWN())) {
+            if (flowCapNodeConnector.getState() != null && flowCapNodeConnector.getState().isLinkDown()
+                    || flowCapNodeConnector.getConfiguration() != null
+                        && flowCapNodeConnector.getConfiguration().isPORTDOWN()) {
                 TopologyManagerUtil.removeAffectedLinks(point.getTpId(), manager, II_TO_TOPOLOGY);
             }
         });