Modify a annotation and refactor Web UI.

Change-Id: I985733e8f4e7d0cda292ed4a240d1250db8e2316
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodec.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodec.java
index 4244c7f..be51b15 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodec.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodec.java
@@ -21,24 +21,22 @@
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.TpPort;
+import org.onlab.packet.VlanId;
 import org.onosproject.codec.CodecContext;
 import org.onosproject.codec.JsonCodec;
 import org.onosproject.net.DeviceId;
 import org.onosproject.openstacktelemetry.api.FlowInfo;
 import org.onosproject.openstacktelemetry.api.StatsInfo;
 import org.onosproject.openstacktelemetry.impl.DefaultFlowInfo;
-import org.slf4j.Logger;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
+import static org.onlab.packet.VlanId.NO_VID;
 
 /**
  * Openstack telemetry codec used for serializing and de-serializing JSON string.
  */
 public final class FlowInfoJsonCodec extends JsonCodec<FlowInfo> {
 
-    private final Logger log = getLogger(getClass());
-
     private static final String FLOW_TYPE = "flowType";
     private static final String DEVICE_ID = "deviceId";
     private static final String INPUT_INTERFACE_ID = "inputInterfaceId";
@@ -76,7 +74,6 @@
                 .put(SRC_MAC, info.srcMac().toString())
                 .put(DST_MAC, info.dstMac().toString());
 
-
         if (info.vlanId() != null) {
             result.put(VLAN_ID, info.vlanId().toString());
         } else {
@@ -111,6 +108,21 @@
         String srcMac = json.get(SRC_MAC).asText();
         String dstMac = json.get(DST_MAC).asText();
 
+        VlanId vlanId;
+        short vxlanId = 0;
+        try {
+            if (json.get(VLAN_ID).isNull()) {
+                vlanId = VlanId.vlanId(NO_VID);
+                if (!(json.get(VXLAN_ID).isNull())) {
+                    vxlanId = (short) json.get(VXLAN_ID).asInt();
+                }
+            } else {
+                vlanId = VlanId.vlanId((short) json.get(VLAN_ID).asInt());
+            }
+        } catch (NullPointerException ex) {
+            vlanId = VlanId.vlanId();
+        }
+
         JsonNode statsInfoJson = json.get(STATS_INFO);
 
         JsonCodec<StatsInfo> statsInfoCodec = context.codec(StatsInfo.class);
@@ -128,6 +140,8 @@
                 .withProtocol(Byte.valueOf(protocol))
                 .withSrcMac(MacAddress.valueOf(srcMac))
                 .withDstMac(MacAddress.valueOf(dstMac))
+                .withVlanId(vlanId)
+                .withVxlanId(vxlanId)
                 .withStatsInfo(statsInfo)
                 .build();
     }
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsFlowRuleJsonCodec.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsFlowRuleJsonCodec.java
index 8fc8143..2e84b79 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsFlowRuleJsonCodec.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsFlowRuleJsonCodec.java
@@ -17,7 +17,6 @@
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.onlab.packet.IPv4;
 import org.onlab.packet.TpPort;
 import org.onosproject.codec.CodecContext;
 import org.onosproject.codec.JsonCodec;
@@ -28,6 +27,7 @@
 import org.onlab.packet.IpPrefix;
 
 import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getProtocolTypeFromString;
 import static org.slf4j.LoggerFactory.getLogger;
 
 public class StatsFlowRuleJsonCodec extends JsonCodec<StatsFlowRule> {
@@ -59,41 +59,26 @@
         try {
             String srcIpPrefix = json.get(SRC_IP_PREFIX).asText();
             String dstIpPrefix = json.get(DST_IP_PREFIX).asText();
-            String tmpIpProtocol = new String("");
-            int srcTpPort  = 0;
-            int dstTpPort  = 0;
 
             DefaultStatsFlowRule.Builder flowRuleBuilder;
 
-            byte ipProtocol = 0;
             if (json.get(IP_PROTOCOL) == null) {
                 log.info("ipProtocol: null");
                 flowRuleBuilder = DefaultStatsFlowRule.builder()
                         .srcIpPrefix(IpPrefix.valueOf(srcIpPrefix))
                         .dstIpPrefix(IpPrefix.valueOf(dstIpPrefix));
             } else {
-                tmpIpProtocol = json.get(IP_PROTOCOL).asText().toUpperCase();
-                srcTpPort     = json.get(SRC_TP_PORT).asInt();
-                dstTpPort     = json.get(DST_TP_PORT).asInt();
-                if (tmpIpProtocol.equals("TCP")) {
-                    ipProtocol = IPv4.PROTOCOL_TCP;
-                } else if (tmpIpProtocol.equals("UDP")) {
-                    ipProtocol = IPv4.PROTOCOL_UDP;
-                } else {
-                    ipProtocol = 0;
-                }
+                byte ipProtocol = getProtocolTypeFromString(json.get(IP_PROTOCOL).asText());
+                int srcTpPort = json.get(SRC_TP_PORT).asInt();
+                int dstTpPort = json.get(DST_TP_PORT).asInt();
 
                 flowRuleBuilder = DefaultStatsFlowRule.builder()
-                        .srcIpPrefix(IpPrefix.valueOf(srcIpPrefix))
-                        .dstIpPrefix(IpPrefix.valueOf(dstIpPrefix))
-                        .ipProtocol(ipProtocol)
-                        .srcTpPort(TpPort.tpPort(srcTpPort))
-                        .dstTpPort(TpPort.tpPort(dstTpPort));
+                                    .srcIpPrefix(IpPrefix.valueOf(srcIpPrefix))
+                                    .dstIpPrefix(IpPrefix.valueOf(dstIpPrefix))
+                                    .ipProtocol(ipProtocol)
+                                    .srcTpPort(TpPort.tpPort(srcTpPort))
+                                    .dstTpPort(TpPort.tpPort(dstTpPort));
             }
-
-            log.debug("StatsFlowRule after building from JSON:\n{}",
-                     flowRuleBuilder.build().toString());
-
             return flowRuleBuilder.build();
         } catch (Exception ex) {
             log.error("Exception Stack:\n{}", ExceptionUtils.getStackTrace(ex));
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsInfoJsonCodec.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsInfoJsonCodec.java
index 53cf924..905b2ff 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsInfoJsonCodec.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/StatsInfoJsonCodec.java
@@ -20,18 +20,14 @@
 import org.onosproject.codec.JsonCodec;
 import org.onosproject.openstacktelemetry.api.StatsInfo;
 import org.onosproject.openstacktelemetry.impl.DefaultStatsInfo;
-import org.slf4j.Logger;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Openstack telemetry codec used for serializing and de-serializing JSON string.
  */
 public final class StatsInfoJsonCodec extends JsonCodec<StatsInfo> {
 
-    private final Logger log = getLogger(getClass());
-
     private static final String STARTUP_TIME = "startupTime";
     private static final String FST_PKT_ARR_TIME = "fstPktArrTime";
     private static final String LST_PKT_OFFSET = "lstPktOffset";
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
index 73258ac..2ee625f 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodec.java
@@ -34,6 +34,7 @@
  */
 public class TinaFlowInfoByteBufferCodec extends ByteBufferCodec<FlowInfo> {
 
+    private static final int NUM_RADIX = 16;
     private static final int MESSAGE_SIZE = 88;
     private static final String OF_PREFIX = "of:";
 
@@ -46,7 +47,7 @@
 
         String  deviceId = flowInfo.deviceId().toString();
         short switchId = (short) Integer.parseInt(deviceId.substring(3,
-                                                  deviceId.length()), 16);
+                                      deviceId.length()), NUM_RADIX);
 
         if (flowInfo.srcPort() != null) {
             srcPort = flowInfo.srcPort().toInt();