blob: 7c4cac55e900ecb60a9121c73ba8442dc0e1893a [file] [log] [blame]
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07001package org.onlab.onos.store.serializers;
2
3import java.net.URI;
4import java.util.ArrayList;
Madan Jampani53e44e62014-10-07 12:39:51 -07005import java.util.Arrays;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -07006import java.util.HashMap;
7
8import org.onlab.onos.cluster.ControllerNode;
9import org.onlab.onos.cluster.DefaultControllerNode;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070010import org.onlab.onos.cluster.NodeId;
Yuta HIGUCHI80912e62014-10-12 00:15:47 -070011import org.onlab.onos.mastership.MastershipTerm;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070012import org.onlab.onos.net.ConnectPoint;
13import org.onlab.onos.net.DefaultAnnotations;
14import org.onlab.onos.net.DefaultDevice;
15import org.onlab.onos.net.DefaultLink;
16import org.onlab.onos.net.DefaultPort;
17import org.onlab.onos.net.Device;
18import org.onlab.onos.net.DeviceId;
19import org.onlab.onos.net.Element;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070020import org.onlab.onos.net.HostId;
21import org.onlab.onos.net.HostLocation;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070022import org.onlab.onos.net.Link;
23import org.onlab.onos.net.LinkKey;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070024import org.onlab.onos.net.Port;
25import org.onlab.onos.net.PortNumber;
Madan Jampani53e44e62014-10-07 12:39:51 -070026import org.onlab.onos.net.device.DefaultDeviceDescription;
27import org.onlab.onos.net.device.DefaultPortDescription;
Madan Jampani38b250d2014-10-17 11:02:38 -070028import org.onlab.onos.net.flow.DefaultFlowRule;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070029import org.onlab.onos.net.host.DefaultHostDescription;
30import org.onlab.onos.net.host.HostDescription;
Madan Jampani2ff05592014-10-10 15:42:47 -070031import org.onlab.onos.net.link.DefaultLinkDescription;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070032import org.onlab.onos.net.provider.ProviderId;
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070033import org.onlab.onos.store.Timestamp;
alshabib7911a052014-10-16 17:49:37 -070034import org.onlab.packet.ChassisId;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070035import org.onlab.packet.IpAddress;
36import org.onlab.packet.IpPrefix;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070037import org.onlab.packet.MacAddress;
38import org.onlab.packet.VlanId;
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070039import org.onlab.util.KryoNamespace;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070040
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070041import com.google.common.collect.ImmutableList;
42import com.google.common.collect.ImmutableMap;
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070043import com.google.common.collect.ImmutableSet;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070044
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070045public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070046
47 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070048 * KryoNamespace which can serialize ON.lab misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070049 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070050 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070051 .register(IpPrefix.class, new IpPrefixSerializer())
52 .register(IpAddress.class, new IpAddressSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070053 .register(MacAddress.class, new MacAddressSerializer())
54 .register(VlanId.class)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070055 .build();
56
57 // TODO: Populate other classes
58 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070059 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070060 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070061 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070062 .register(MISC)
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070063 .register(ImmutableMap.class, new ImmutableMapSerializer())
64 .register(ImmutableList.class, new ImmutableListSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070065 .register(ImmutableSet.class, new ImmutableSetSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070066 .register(
67 //
68 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070069 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070070 HashMap.class,
71 //
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070072 //
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070073 ControllerNode.State.class,
74 Device.Type.class,
alshabib7911a052014-10-16 17:49:37 -070075 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070076 DefaultAnnotations.class,
77 DefaultControllerNode.class,
78 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070079 DefaultDeviceDescription.class,
Madan Jampani2ff05592014-10-10 15:42:47 -070080 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070081 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070082 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070083 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070084 Link.Type.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -070085 Timestamp.class,
86 HostId.class,
87 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -070088 DefaultHostDescription.class,
89 DefaultFlowRule.class
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070090 )
91 .register(URI.class, new URISerializer())
92 .register(NodeId.class, new NodeIdSerializer())
93 .register(ProviderId.class, new ProviderIdSerializer())
94 .register(DeviceId.class, new DeviceIdSerializer())
95 .register(PortNumber.class, new PortNumberSerializer())
96 .register(DefaultPort.class, new DefaultPortSerializer())
97 .register(LinkKey.class, new LinkKeySerializer())
98 .register(ConnectPoint.class, new ConnectPointSerializer())
99 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -0700100 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700101 .register(HostLocation.class, new HostLocationSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700102
103 .build();
104
105
106 // not to be instantiated
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700107 private KryoNamespaces() {}
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700108}