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/main/java/org/onosproject/codec/impl/HostToHostIntentCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/HostToHostIntentCodec.java
index 59ceb2b..597ab55 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/HostToHostIntentCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/HostToHostIntentCodec.java
@@ -17,18 +17,23 @@
import org.onosproject.codec.CodecContext;
import org.onosproject.codec.JsonCodec;
+import org.onosproject.net.HostId;
import org.onosproject.net.intent.ConnectivityIntent;
import org.onosproject.net.intent.HostToHostIntent;
import com.fasterxml.jackson.databind.node.ObjectNode;
import static com.google.common.base.Preconditions.checkNotNull;
+import static org.onlab.util.Tools.nullIsIllegal;
/**
* Host to host intent codec.
*/
public final class HostToHostIntentCodec extends JsonCodec<HostToHostIntent> {
+ private static final String ONE = "one";
+ private static final String TWO = "two";
+
@Override
public ObjectNode encode(HostToHostIntent intent, CodecContext context) {
checkNotNull(intent, "Host to host intent cannot be null");
@@ -39,9 +44,27 @@
final String one = intent.one().toString();
final String two = intent.two().toString();
- result.put("one", one);
- result.put("two", two);
+ result.put(ONE, one);
+ result.put(TWO, two);
return result;
}
+
+ @Override
+ public HostToHostIntent decode(ObjectNode json, CodecContext context) {
+ HostToHostIntent.Builder builder = HostToHostIntent.builder();
+
+ IntentCodec.intentAttributes(json, context, builder);
+ ConnectivityIntentCodec.intentAttributes(json, context, builder);
+
+ String one = nullIsIllegal(json.get(ONE),
+ ONE + IntentCodec.MISSING_MEMBER_MESSAGE).asText();
+ builder.one(HostId.hostId(one));
+
+ String two = nullIsIllegal(json.get(TWO),
+ TWO + IntentCodec.MISSING_MEMBER_MESSAGE).asText();
+ builder.two(HostId.hostId(two));
+
+ return builder.build();
+ }
}