1 package org.opendaylight.controller.sal.compatibility;
3 import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent;
4 import org.opendaylight.controller.sal.binding.api.data.DataChangeListener;
5 import org.opendaylight.controller.sal.core.ConstructionException;
6 import org.opendaylight.controller.sal.core.NodeConnector;
7 import org.opendaylight.controller.sal.core.Property;
8 import org.opendaylight.controller.sal.core.UpdateType;
9 import org.opendaylight.controller.sal.inventory.IPluginOutInventoryService;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
11 import org.opendaylight.yangtools.yang.binding.DataObject;
12 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
16 import java.util.HashSet;
17 import java.util.List;
21 // org.opendaylight.controller.sal.compatibility.NodeConnectorDataChangeListener
22 public class NodeConnectorDataChangeListener implements DataChangeListener{
23 private final static Logger LOG = LoggerFactory.getLogger(NodeConnectorDataChangeListener.class);
25 private List<IPluginOutInventoryService> inventoryPublisher;
27 public List<IPluginOutInventoryService> getInventoryPublisher() {
28 return this.inventoryPublisher;
31 public void setInventoryPublisher(final List<IPluginOutInventoryService> inventoryPublisher) {
32 this.inventoryPublisher = inventoryPublisher;
36 public void onDataChanged(DataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
37 final Map<InstanceIdentifier<?>,DataObject> createdOperationalData = change.getCreatedOperationalData();
38 final Map<InstanceIdentifier<?>,DataObject> updatedOperationalData = change.getUpdatedOperationalData();
40 final Set<Map.Entry<InstanceIdentifier<?>,DataObject>> createdEntries = createdOperationalData.entrySet();
41 final Set<Map.Entry<InstanceIdentifier<?>,DataObject>> updatedEntries = new HashSet<>();
43 updatedEntries.addAll(updatedOperationalData.entrySet());
44 updatedEntries.removeAll(createdEntries);
46 for(final Map.Entry<InstanceIdentifier<?>,DataObject> entry : createdEntries){
47 publishNodeConnectorUpdate(entry, UpdateType.ADDED);
50 for(final Map.Entry<InstanceIdentifier<?>,DataObject> entry : updatedEntries){
51 publishNodeConnectorUpdate(entry, UpdateType.CHANGED);
55 private void publishNodeConnectorUpdate(final Map.Entry<InstanceIdentifier<?>,DataObject> entry, final UpdateType updateType) {
56 if (entry.getKey().getTargetType().equals(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector.class)) {
57 NodeConnectorRef nodeConnectorRef = new NodeConnectorRef(entry.getKey());
58 NodeConnector nodeConnector = null;
60 nodeConnector = NodeMapping.toADNodeConnector(nodeConnectorRef);
61 } catch (ConstructionException e) {
64 HashSet<Property> _aDNodeConnectorProperties = NodeMapping.toADNodeConnectorProperties((org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector) entry.getValue());
65 this.publishNodeConnectorUpdate(nodeConnector, updateType, _aDNodeConnectorProperties);
69 private void publishNodeConnectorUpdate(final NodeConnector nodeConnector, final UpdateType updateType, final Set<Property> properties) {
70 LOG.debug("Publishing NodeConnector " + updateType.toString() + " nodeConnector Id = " + nodeConnector.getNodeConnectorIdAsString());
72 List<IPluginOutInventoryService> _inventoryPublisher = getInventoryPublisher();
73 for (final IPluginOutInventoryService publisher : _inventoryPublisher) {
74 publisher.updateNodeConnector(nodeConnector, updateType, properties);