X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=applications%2Ftopology-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fapplications%2Ftopology%2Fmanager%2FDataTreeChangeListenerImpl.java;h=b01b80187e0bb4c68b4e965787aa1b9b5942241f;hb=c0f1975113c7f6f0cc22bc60d7b6d20991a1373b;hp=b295bcb8493aae43e258a7ce81c4e042d417fdae;hpb=fe7b48b79667e6436cddac2b66a7d62dc5425771;p=openflowplugin.git diff --git a/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/DataTreeChangeListenerImpl.java b/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/DataTreeChangeListenerImpl.java index b295bcb849..b01b80187e 100644 --- a/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/DataTreeChangeListenerImpl.java +++ b/applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/DataTreeChangeListenerImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,11 +7,9 @@ */ package org.opendaylight.openflowplugin.applications.topology.manager; -import java.util.concurrent.Callable; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.openflowplugin.common.wait.SimpleTaskRetryLooper; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; @@ -27,7 +25,8 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public abstract class DataTreeChangeListenerImpl implements DataTreeChangeListener, AutoCloseable { +public abstract class DataTreeChangeListenerImpl implements DataTreeChangeListener, + AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(DataTreeChangeListenerImpl.class); private static final long STARTUP_LOOP_TICK = 500L; @@ -35,26 +34,17 @@ public abstract class DataTreeChangeListenerImpl implement protected final ListenerRegistration listenerRegistration; protected OperationProcessor operationProcessor; - /** - * instance identifier to Node in network topology model (yangtools) - */ - protected static final InstanceIdentifier II_TO_TOPOLOGY = - InstanceIdentifier - .create(NetworkTopology.class) + static final InstanceIdentifier II_TO_TOPOLOGY = InstanceIdentifier.create(NetworkTopology.class) .child(Topology.class, new TopologyKey(new TopologyId(FlowCapableTopologyProvider.TOPOLOGY_ID))); - public DataTreeChangeListenerImpl(final OperationProcessor operationProcessor, - final DataBroker dataBroker, - final InstanceIdentifier ii) { + @SuppressWarnings("checkstyle:IllegalCatch") + public DataTreeChangeListenerImpl(final OperationProcessor operationProcessor, final DataBroker dataBroker, + final InstanceIdentifier ii) { final DataTreeIdentifier identifier = new DataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, ii); final SimpleTaskRetryLooper looper = new SimpleTaskRetryLooper(STARTUP_LOOP_TICK, STARTUP_LOOP_MAX_RETRIES); try { - listenerRegistration = looper.loopUntilNoException(new Callable>() { - @Override - public ListenerRegistration call() throws Exception { - return dataBroker.registerDataTreeChangeListener(identifier, DataTreeChangeListenerImpl.this); - } - }); + listenerRegistration = looper.loopUntilNoException( + () -> dataBroker.registerDataTreeChangeListener(identifier, DataTreeChangeListenerImpl.this)); } catch (Exception e) { LOG.error("Data listener registration failed!"); throw new IllegalStateException("TopologyManager startup fail! TM bundle needs restart.", e); @@ -67,31 +57,31 @@ public abstract class DataTreeChangeListenerImpl implement listenerRegistration.close(); } - protected void sendToTransactionChain(final T node, final InstanceIdentifier iiToTopologyNode) { - operationProcessor.enqueueOperation(new TopologyOperation() { - @Override - public void applyOperation(ReadWriteTransaction transaction) { - transaction.merge(LogicalDatastoreType.OPERATIONAL, iiToTopologyNode, node, true); - } - }); + void sendToTransactionChain(final T node, final InstanceIdentifier iiToTopologyNode) { + operationProcessor.enqueueOperation( + manager -> manager.mergeToTransaction(LogicalDatastoreType.OPERATIONAL, iiToTopologyNode, node, true)); } - protected InstanceIdentifier provideIIToTopologyNode( + InstanceIdentifier provideIIToTopologyNode( final NodeId nodeIdInTopology) { - org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey nodeKeyInTopology = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey( + org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology + .NodeKey + nodeKeyInTopology + = new org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network + .topology.topology.NodeKey( nodeIdInTopology); - return II_TO_TOPOLOGY - .builder() - .child(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node.class, - nodeKeyInTopology).build(); + return II_TO_TOPOLOGY.builder() + .child(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network + .topology.topology.Node.class, + nodeKeyInTopology).build(); } - protected NodeId provideTopologyNodeId(InstanceIdentifier iiToNodeInInventory) { - final NodeKey inventoryNodeKey = iiToNodeInInventory.firstKeyOf(Node.class, NodeKey.class); + NodeId provideTopologyNodeId(InstanceIdentifier iiToNodeInInventory) { + final NodeKey inventoryNodeKey = iiToNodeInInventory.firstKeyOf(Node.class); if (inventoryNodeKey != null) { return new NodeId(inventoryNodeKey.getId().getValue()); } return null; } - }