blob: f079874b141d23e4471902220dac709467f1d5d4 [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 HIGUCHIfa891c92014-10-09 15:21:40 -070010import org.onlab.onos.cluster.MastershipTerm;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070011import org.onlab.onos.cluster.NodeId;
12import 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;
20import org.onlab.onos.net.Link;
21import org.onlab.onos.net.LinkKey;
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070022import org.onlab.onos.net.MastershipRole;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070023import org.onlab.onos.net.Port;
24import org.onlab.onos.net.PortNumber;
Madan Jampani53e44e62014-10-07 12:39:51 -070025import org.onlab.onos.net.device.DefaultDeviceDescription;
26import org.onlab.onos.net.device.DefaultPortDescription;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070027import org.onlab.onos.net.provider.ProviderId;
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070028import org.onlab.onos.store.Timestamp;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070029import org.onlab.packet.IpAddress;
30import org.onlab.packet.IpPrefix;
31import org.onlab.util.KryoPool;
32
33import de.javakaffee.kryoserializers.URISerializer;
34
35public final class KryoPoolUtil {
36
37 /**
38 * KryoPool which can serialize ON.lab misc classes.
39 */
40 public static final KryoPool MISC = KryoPool.newBuilder()
41 .register(IpPrefix.class, new IpPrefixSerializer())
42 .register(IpAddress.class, new IpAddressSerializer())
43 .build();
44
45 // TODO: Populate other classes
46 /**
47 * KryoPool which can serialize API bundle classes.
48 */
49 public static final KryoPool API = KryoPool.newBuilder()
50 .register(MISC)
51 .register(
52 //
53 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070054 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070055 HashMap.class,
56 //
57 ControllerNode.State.class,
58 Device.Type.class,
59 DefaultAnnotations.class,
60 DefaultControllerNode.class,
61 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070062 DefaultDeviceDescription.class,
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070063 MastershipRole.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070064 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070065 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070066 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070067 Link.Type.class,
68 Timestamp.class
69
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070070 )
71 .register(URI.class, new URISerializer())
72 .register(NodeId.class, new NodeIdSerializer())
73 .register(ProviderId.class, new ProviderIdSerializer())
74 .register(DeviceId.class, new DeviceIdSerializer())
75 .register(PortNumber.class, new PortNumberSerializer())
76 .register(DefaultPort.class, new DefaultPortSerializer())
77 .register(LinkKey.class, new LinkKeySerializer())
78 .register(ConnectPoint.class, new ConnectPointSerializer())
79 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070080 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070081 .register(MastershipRole.class, new MastershipRoleSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070082
83 .build();
84
85
86 // not to be instantiated
87 private KryoPoolUtil() {}
88}