Implemented REST API for multicast RIB.
Change-Id: I5de6fe0aae412083597113e355ba0e8c984be5f1
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/CodecManager.java b/core/common/src/main/java/org/onosproject/codec/impl/CodecManager.java
index 99030ca..cbed1c2 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/CodecManager.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/CodecManager.java
@@ -53,6 +53,7 @@
import org.onosproject.net.intent.HostToHostIntent;
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.PointToPointIntent;
+import org.onosproject.net.mcast.McastRoute;
import org.onosproject.net.meter.Band;
import org.onosproject.net.meter.Meter;
import org.onosproject.net.meter.MeterRequest;
@@ -117,6 +118,7 @@
registerCodec(FilteringObjective.class, new FilteringObjectiveCodec());
registerCodec(ForwardingObjective.class, new ForwardingObjectiveCodec());
registerCodec(NextObjective.class, new NextObjectiveCodec());
+ registerCodec(McastRoute.class, new McastRouteCodec());
log.info("Started");
}
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/McastRouteCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/McastRouteCodec.java
new file mode 100644
index 0000000..58bd95c
--- /dev/null
+++ b/core/common/src/main/java/org/onosproject/codec/impl/McastRouteCodec.java
@@ -0,0 +1,44 @@
+package org.onosproject.codec.impl;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.onlab.packet.IpAddress;
+import org.onosproject.codec.CodecContext;
+import org.onosproject.codec.JsonCodec;
+import org.onosproject.net.mcast.McastRoute;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Codec to encode and decode a multicast route to and from JSON.
+ */
+public class McastRouteCodec extends JsonCodec<McastRoute> {
+
+ private static final String SOURCE = "source";
+ private static final String GROUP = "group";
+ private static final String TYPE = "type";
+
+ @Override
+ public ObjectNode encode(McastRoute route, CodecContext context) {
+ checkNotNull(route);
+ ObjectNode root = context.mapper().createObjectNode()
+ .put(TYPE, route.type().toString())
+ .put(SOURCE, route.source().toString())
+ .put(GROUP, route.group().toString());
+
+ return root;
+ }
+
+ @Override
+ public McastRoute decode(ObjectNode json, CodecContext context) {
+ if (json == null || !json.isObject()) {
+ return null;
+ }
+
+ IpAddress source = IpAddress.valueOf(json.path(SOURCE).asText());
+ IpAddress group = IpAddress.valueOf(json.path(GROUP).asText());
+
+ McastRoute route = new McastRoute(source, group, McastRoute.Type.STATIC);
+
+ return route;
+ }
+}