Bug 1680 - default table-miss-entry feature should be pulled out into separate module
[openflowplugin.git] / applications / table-miss-enforcer / src / main / java / org / opendaylight / openflowplugin / applications / tableMissEnforcer / LLDPPacketPuntEnforcer.java
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.openflowplugin.openflow.md.lldp;
+package org.opendaylight.openflowplugin.applications.tableMissEnforcer;
 
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -38,20 +38,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
  * Created by Martin Bobak mbobak@cisco.com on 8/27/14.
  */
-public class LLDPPAcketPuntEnforcer implements DataChangeListener {
+public class LLDPPacketPuntEnforcer implements DataChangeListener {
 
     private static final short TABLE_ID = (short) 0;
     private static final String LLDP_PUNT_WHOLE_PACKET_FLOW = "LLDP_PUNT_WHOLE_PACKET_FLOW";
     private static final String DEFAULT_FLOW_ID = "42";
     private final SalFlowService flowService;
 
-    public LLDPPAcketPuntEnforcer(SalFlowService flowService) {
+    public LLDPPacketPuntEnforcer(SalFlowService flowService) {
         this.flowService = flowService;
     }
 
@@ -59,10 +60,12 @@ public class LLDPPAcketPuntEnforcer implements DataChangeListener {
     public void onDataChanged(AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
         final Set<InstanceIdentifier<?>> changedDataKeys = change.getCreatedData().keySet();
 
-        for (InstanceIdentifier<?> key : changedDataKeys) {
-            AddFlowInputBuilder addFlowInput = new AddFlowInputBuilder(createFlow());
-            addFlowInput.setNode(new NodeRef(key));
-            this.flowService.addFlow(addFlowInput.build());
+        if (changedDataKeys != null) {
+            for (InstanceIdentifier<?> key : changedDataKeys) {
+                AddFlowInputBuilder addFlowInput = new AddFlowInputBuilder(createFlow());
+                addFlowInput.setNode(new NodeRef(key.firstIdentifierOf(Node.class)));
+                this.flowService.addFlow(addFlowInput.build());
+            }
         }
     }