blob: f81a984f5161da29a7d5d92977f179112f0f81d9 [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;
Madan Jampani2ff05592014-10-10 15:42:47 -070027import org.onlab.onos.net.link.DefaultLinkDescription;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070028import org.onlab.onos.net.provider.ProviderId;
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070029import org.onlab.onos.store.Timestamp;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070030import org.onlab.packet.IpAddress;
31import org.onlab.packet.IpPrefix;
32import org.onlab.util.KryoPool;
33
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070034import com.google.common.collect.ImmutableList;
35import com.google.common.collect.ImmutableMap;
36
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070037public final class KryoPoolUtil {
38
39 /**
40 * KryoPool which can serialize ON.lab misc classes.
41 */
42 public static final KryoPool MISC = KryoPool.newBuilder()
43 .register(IpPrefix.class, new IpPrefixSerializer())
44 .register(IpAddress.class, new IpAddressSerializer())
45 .build();
46
47 // TODO: Populate other classes
48 /**
49 * KryoPool which can serialize API bundle classes.
50 */
51 public static final KryoPool API = KryoPool.newBuilder()
52 .register(MISC)
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070053 .register(ImmutableMap.class, new ImmutableMapSerializer())
54 .register(ImmutableList.class, new ImmutableListSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070055 .register(
56 //
57 ArrayList.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070058 Arrays.asList().getClass(),
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070059 HashMap.class,
60 //
Yuta HIGUCHI47c40882014-10-10 18:44:37 -070061 //
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070062 ControllerNode.State.class,
63 Device.Type.class,
64 DefaultAnnotations.class,
65 DefaultControllerNode.class,
66 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070067 DefaultDeviceDescription.class,
Madan Jampani2ff05592014-10-10 15:42:47 -070068 DefaultLinkDescription.class,
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070069 MastershipRole.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070070 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -070071 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070072 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -070073 Link.Type.class,
74 Timestamp.class
75
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070076 )
77 .register(URI.class, new URISerializer())
78 .register(NodeId.class, new NodeIdSerializer())
79 .register(ProviderId.class, new ProviderIdSerializer())
80 .register(DeviceId.class, new DeviceIdSerializer())
81 .register(PortNumber.class, new PortNumberSerializer())
82 .register(DefaultPort.class, new DefaultPortSerializer())
83 .register(LinkKey.class, new LinkKeySerializer())
84 .register(ConnectPoint.class, new ConnectPointSerializer())
85 .register(DefaultLink.class, new DefaultLinkSerializer())
Yuta HIGUCHIfa891c92014-10-09 15:21:40 -070086 .register(MastershipTerm.class, new MastershipTermSerializer())
Yuta HIGUCHId40483d2014-10-09 15:20:30 -070087 .register(MastershipRole.class, new MastershipRoleSerializer())
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070088
89 .build();
90
91
92 // not to be instantiated
93 private KryoPoolUtil() {}
94}