Fix for Bug 262 - goes with controller Gerrit3929
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / lldp / LLDPSpeakerPopListener.java
1 package org.opendaylight.openflowplugin.openflow.md.lldp;
2
3 import org.opendaylight.openflowplugin.openflow.md.queue.PopListener;
4 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
5 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
6 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
7 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
12 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
13
14 public class LLDPSpeakerPopListener<T> implements PopListener<T> {
15
16
17     @Override
18     public void onPop(T processedMessage) {
19         if(processedMessage instanceof NodeConnectorUpdated) {
20                 NodeConnectorUpdated connector = (NodeConnectorUpdated) processedMessage;
21                 FlowCapableNodeConnectorUpdated flowConnector = connector.<FlowCapableNodeConnectorUpdated>getAugmentation(FlowCapableNodeConnectorUpdated.class);
22                 if(flowConnector != null) {
23                         InstanceIdentifier<NodeConnector> nodeConnectorInstanceId = (InstanceIdentifier<NodeConnector>) connector.getNodeConnectorRef().getValue();             
24                         NodeConnectorBuilder ncb = new NodeConnectorBuilder(connector);
25                         FlowCapableNodeConnectorBuilder fcncb = new FlowCapableNodeConnectorBuilder(flowConnector);
26                         ncb.addAugmentation(FlowCapableNodeConnector.class, fcncb.build());
27                         PortState portState = flowConnector.getState();
28                         PortConfig portConfig = flowConnector.getConfiguration();
29                         if((portState ==null || !portState.isLinkDown()) && (portConfig == null || !portConfig.isPORTDOWN())) {
30                                 LLDPSpeaker.getInstance().addNodeConnector(nodeConnectorInstanceId,ncb.build());
31                         } else {
32                                 LLDPSpeaker.getInstance().removeNodeConnector(nodeConnectorInstanceId,ncb.build());
33                         }
34                 }
35         } 
36     }
37
38 }