Implementation of REST POST API for creating intents
- codec for constraint decode
- codec for intent decode
- POST method for intents
- unit tests for codecs and POST method

Change-Id: Ibc0ef8f99a0c0664710a733985424c77010c49b5
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/AnnotationConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/AnnotationConstraint.json
new file mode 100644
index 0000000..aaa72a7
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/AnnotationConstraint.json
@@ -0,0 +1,5 @@
+{
+  "type":"AnnotationConstraint",
+  "key":"key",
+  "threshold":123.0
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/AsymmetricPathConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/AsymmetricPathConstraint.json
new file mode 100644
index 0000000..340bdba
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/AsymmetricPathConstraint.json
@@ -0,0 +1,3 @@
+{
+  "type":"AsymmetricPathConstraint"
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/BandwidthConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/BandwidthConstraint.json
new file mode 100644
index 0000000..3475006
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/BandwidthConstraint.json
@@ -0,0 +1,4 @@
+{
+  "type":"BandwidthConstraint",
+  "bandwidth":345.678
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/HostToHostIntent.json b/core/common/src/test/resources/org/onosproject/codec/impl/HostToHostIntent.json
new file mode 100644
index 0000000..5010c48
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/HostToHostIntent.json
@@ -0,0 +1,19 @@
+{
+  "type": "HostToHostIntent",
+  "appId": 2,
+  "selector": {"criteria": []},
+  "treatment": {
+    "instructions": [],
+    "deferred": []
+  },
+  "priority": 7,
+  "constraints": [
+    {
+      "inclusive": false,
+      "types": ["OPTICAL"],
+      "type": "LinkTypeConstraint"
+    }
+  ],
+  "one": "00:00:00:00:00:02/-1",
+  "two": "00:00:00:00:00:05/-1"
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/LambdaConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/LambdaConstraint.json
new file mode 100644
index 0000000..4ac3763
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/LambdaConstraint.json
@@ -0,0 +1,4 @@
+{
+  "type":"LambdaConstraint",
+  "lambda":444
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/LatencyConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/LatencyConstraint.json
new file mode 100644
index 0000000..1c46e5e
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/LatencyConstraint.json
@@ -0,0 +1,4 @@
+{
+  "type":"LatencyConstraint",
+  "latencyMillis":111
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/LinkTypeConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/LinkTypeConstraint.json
new file mode 100644
index 0000000..8b766da
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/LinkTypeConstraint.json
@@ -0,0 +1,5 @@
+{
+  "inclusive":false,
+  "types":["DIRECT","OPTICAL"],
+  "type":"LinkTypeConstraint"
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/ObstacleConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/ObstacleConstraint.json
new file mode 100644
index 0000000..35dcb0f
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/ObstacleConstraint.json
@@ -0,0 +1,4 @@
+{
+  "type":"ObstacleConstraint",
+  "obstacles":["of:dev1","of:dev2","of:dev3"]
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/PointToPointIntent.json b/core/common/src/test/resources/org/onosproject/codec/impl/PointToPointIntent.json
new file mode 100644
index 0000000..4c6c4b8
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/PointToPointIntent.json
@@ -0,0 +1,38 @@
+{
+  "type": "PointToPointIntent",
+  "appId": 2,
+  "selector": {
+    "criteria": [
+      {
+        "type": "ETH_DST",
+        "mac": "11:22:33:44:55:66"
+      }
+    ]
+  },
+  "treatment": {
+    "instructions": [
+      {
+        "type": "L2MODIFICATION",
+        "subtype": "ETH_SRC",
+        "mac": "22:33:44:55:66:77"
+      }
+    ],
+    "deferred": []
+  },
+  "priority": 55,
+  "constraints": [
+    {
+      "inclusive": false,
+      "types": ["OPTICAL"],
+      "type": "LinkTypeConstraint"
+    }
+  ],
+  "ingressPoint": {
+    "port": "1",
+    "device": "of:0000000000000001"
+  },
+  "egressPoint": {
+    "port": "2",
+    "device": "of:0000000000000007"
+  }
+}
diff --git a/core/common/src/test/resources/org/onosproject/codec/impl/WaypointConstraint.json b/core/common/src/test/resources/org/onosproject/codec/impl/WaypointConstraint.json
new file mode 100644
index 0000000..7009cf9
--- /dev/null
+++ b/core/common/src/test/resources/org/onosproject/codec/impl/WaypointConstraint.json
@@ -0,0 +1,4 @@
+{
+  "type":"WaypointConstraint",
+  "waypoints":["of:devA","of:devB","of:devC"]
+}