blob: 58bd95c4355daa6ba014fd7206e632b74efc3e1c [file] [log] [blame]
Jonathan Hart07eb0412016-02-08 16:42:29 -08001package org.onosproject.codec.impl;
2
3import com.fasterxml.jackson.databind.node.ObjectNode;
4import org.onlab.packet.IpAddress;
5import org.onosproject.codec.CodecContext;
6import org.onosproject.codec.JsonCodec;
7import org.onosproject.net.mcast.McastRoute;
8
9import static com.google.common.base.Preconditions.checkNotNull;
10
11/**
12 * Codec to encode and decode a multicast route to and from JSON.
13 */
14public class McastRouteCodec extends JsonCodec<McastRoute> {
15
16 private static final String SOURCE = "source";
17 private static final String GROUP = "group";
18 private static final String TYPE = "type";
19
20 @Override
21 public ObjectNode encode(McastRoute route, CodecContext context) {
22 checkNotNull(route);
23 ObjectNode root = context.mapper().createObjectNode()
24 .put(TYPE, route.type().toString())
25 .put(SOURCE, route.source().toString())
26 .put(GROUP, route.group().toString());
27
28 return root;
29 }
30
31 @Override
32 public McastRoute decode(ObjectNode json, CodecContext context) {
33 if (json == null || !json.isObject()) {
34 return null;
35 }
36
37 IpAddress source = IpAddress.valueOf(json.path(SOURCE).asText());
38 IpAddress group = IpAddress.valueOf(json.path(GROUP).asText());
39
40 McastRoute route = new McastRoute(source, group, McastRoute.Type.STATIC);
41
42 return route;
43 }
44}