Publish correct port active status:w

Change-Id: I65e0a804e54dad5d6ad4930ec31a73930b2454a4
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
index e8be836..538224d 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
@@ -49,7 +49,9 @@
 import net.onrc.onos.core.util.SwitchPort;
 
 import org.apache.commons.lang3.concurrent.ConcurrentUtils;
+import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortState;
 import org.projectfloodlight.openflow.util.HexString;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -413,6 +415,14 @@
             // TODO define attr name as constant somewhere.
             // TODO populate appropriate attributes.
             //portData.
+
+            if (isEnabled(port)) {
+                portData.createStringAttribute("state", "ACTIVE");
+            }
+            else {
+                portData.createStringAttribute("state", "INACTIVE");
+            }
+
             portData.createStringAttribute("name", port.getName());
             portData.createStringAttribute(TopologyElement.TYPE,
                     TopologyElement.TYPE_PACKET_LAYER);
@@ -427,6 +437,13 @@
         publishAddSwitchEvent(switchData, portDataEntries);
     }
 
+    private boolean isEnabled(OFPortDesc p) {
+        return (p != null &&
+                !p.getState().contains(OFPortState.LINK_DOWN) &&
+                !p.getState().contains(OFPortState.BLOCKED) && !p.getConfig().contains(
+                OFPortConfig.PORT_DOWN));
+    }
+
     @Override
     public void switchActivatedEqual(long swId) {
         final Dpid dpid = new Dpid(swId);
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
index e47c652..5771c59 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
@@ -42,7 +42,14 @@
 
         jsonGenerator.writeStartObject();
         jsonGenerator.writeStringField(TopologyElement.TYPE, portData.getType());
-        jsonGenerator.writeStringField("state", "ACTIVE");
+
+        if (portData.getStringAttribute("state") != null &&
+                portData.getStringAttribute("state").equals("ACTIVE")) {
+            jsonGenerator.writeStringField("state", "ACTIVE");
+        }
+        else {
+            jsonGenerator.writeStringField("state", "INACTIVE");
+        }
         jsonGenerator.writeStringField("dpid", portData.getDpid().toString());
         jsonGenerator.writeNumberField("portNumber",
                                        portData.getPortNumber().value());
@@ -55,4 +62,9 @@
         jsonGenerator.writeEndObject();         // stringAttributes
         jsonGenerator.writeEndObject();
     }
+
+    private boolean isEnabled(PortData p) {
+        return true;
+    }
+
 }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
index 7c9b093..4d5f019 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
@@ -43,7 +43,14 @@
         jsonGenerator.writeStartObject();
         jsonGenerator.writeStringField(TopologyElement.TYPE, port.getType());
         jsonGenerator.writeStringField(TopologyElement.ELEMENT_TYPE, port.getPortType().toString());
-        jsonGenerator.writeStringField("state", "ACTIVE");
+        if (port.getStringAttribute("state") != null &&
+                port.getStringAttribute("state").equals("ACTIVE")) {
+            jsonGenerator.writeStringField("state", "ACTIVE");
+        }
+        else {
+            jsonGenerator.writeStringField("state", "INACTIVE");
+        }
+        //jsonGenerator.writeStringField("state", "ACTIVE");
         jsonGenerator.writeStringField("dpid", port.getDpid().toString());
         jsonGenerator.writeNumberField("portNumber",
                                        port.getNumber().value());