Unit tets for instruction JSON codecs

Fixed several bugs in codecs turned up by unit tests

Change-Id: Icddb31aa3d2cb58612a0578772d24ff5f113d073
diff --git a/web/api/src/main/java/org/onosproject/codec/impl/ConnectivityIntentCodec.java b/web/api/src/main/java/org/onosproject/codec/impl/ConnectivityIntentCodec.java
index f460913..3a7aa15 100644
--- a/web/api/src/main/java/org/onosproject/codec/impl/ConnectivityIntentCodec.java
+++ b/web/api/src/main/java/org/onosproject/codec/impl/ConnectivityIntentCodec.java
@@ -20,8 +20,10 @@
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.intent.ConnectivityIntent;
+import org.onosproject.net.intent.Constraint;
 import org.onosproject.net.intent.Intent;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -50,6 +52,17 @@
             result.set("treatment", treatmentCodec.encode(intent.treatment(), context));
         }
 
+        if (intent.constraints() != null) {
+            final ArrayNode jsonConstraints = result.putArray("constraints");
+
+            if (intent.constraints() != null) {
+                for (final Constraint constraint : intent.constraints()) {
+                    // TODO: constraint should have its own codec
+                    jsonConstraints.add(constraint.toString());
+                }
+            }
+        }
+
         return result;
     }
 }
diff --git a/web/api/src/main/java/org/onosproject/codec/impl/CriterionCodec.java b/web/api/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
index 81033f2..e6fbea8 100644
--- a/web/api/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
+++ b/web/api/src/main/java/org/onosproject/codec/impl/CriterionCodec.java
@@ -50,6 +50,7 @@
             case ETH_SRC:
             case ETH_DST:
                 final Criteria.EthCriterion ethCriterion = (Criteria.EthCriterion) criterion;
+                result.put("mac", ethCriterion.mac().toString());
                 break;
 
             case ETH_TYPE:
@@ -60,6 +61,8 @@
 
             case IPV4_SRC:
             case IPV6_SRC:
+            case IPV4_DST:
+            case IPV6_DST:
                 final Criteria.IPCriterion iPCriterion = (Criteria.IPCriterion) criterion;
                 result.put("ip", iPCriterion.ip().toString());
                 break;