blob: 5b5056cb1a91944e06504b7e622af19f7cd92c38 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Ray Milkey34c95902015-04-15 09:47:53 -07002 * Copyright 2014-2015 Open Networking Laboratory
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.store.serializers;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070017
Jonathan Hart45727852015-01-28 13:35:54 -080018import com.google.common.collect.ImmutableList;
19import com.google.common.collect.ImmutableMap;
20import com.google.common.collect.ImmutableSet;
Madan Jampani3ca9cb62015-07-21 11:35:44 -070021import com.google.common.collect.Maps;
Jonathan Hart45727852015-01-28 13:35:54 -080022import org.onlab.packet.ChassisId;
alshabibcaf1ca22015-06-25 15:18:16 -070023import org.onlab.packet.EthType;
Jonathan Hart45727852015-01-28 13:35:54 -080024import org.onlab.packet.Ip4Address;
25import org.onlab.packet.Ip4Prefix;
26import org.onlab.packet.Ip6Address;
27import org.onlab.packet.Ip6Prefix;
28import org.onlab.packet.IpAddress;
29import org.onlab.packet.IpPrefix;
30import org.onlab.packet.MacAddress;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070031import org.onlab.packet.TpPort;
Jonathan Hart45727852015-01-28 13:35:54 -080032import org.onlab.packet.VlanId;
Sho SHIMIZU63feca72015-05-07 10:44:25 -070033import org.onlab.util.Bandwidth;
Marc De Leenheerbb382352015-04-23 18:20:34 -070034import org.onlab.util.Frequency;
Jonathan Hart45727852015-01-28 13:35:54 -080035import org.onlab.util.KryoNamespace;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080036import org.onosproject.app.ApplicationState;
Brian O'Connorabafb502014-12-02 22:26:20 -080037import org.onosproject.cluster.ControllerNode;
38import org.onosproject.cluster.DefaultControllerNode;
39import org.onosproject.cluster.Leadership;
40import org.onosproject.cluster.LeadershipEvent;
41import org.onosproject.cluster.NodeId;
42import org.onosproject.cluster.RoleInfo;
Changhoon Yoon32b93702015-05-15 04:41:15 +090043import org.onosproject.core.ApplicationRole;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080044import org.onosproject.core.DefaultApplication;
Brian O'Connorabafb502014-12-02 22:26:20 -080045import org.onosproject.core.DefaultApplicationId;
46import org.onosproject.core.DefaultGroupId;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080047import org.onosproject.core.Version;
Brian O'Connorce2d8b52015-07-29 16:24:13 -070048import org.onosproject.incubator.net.domain.IntentDomainId;
Brian O'Connorabafb502014-12-02 22:26:20 -080049import org.onosproject.mastership.MastershipTerm;
Marc De Leenheerbb382352015-04-23 18:20:34 -070050import org.onosproject.net.Annotations;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070051import org.onosproject.net.ChannelSpacing;
Brian O'Connorabafb502014-12-02 22:26:20 -080052import org.onosproject.net.ConnectPoint;
53import org.onosproject.net.DefaultAnnotations;
54import org.onosproject.net.DefaultDevice;
55import org.onosproject.net.DefaultEdgeLink;
Madan Jampani70583972015-06-30 11:25:05 -070056import org.onosproject.net.DefaultHost;
Brian O'Connorabafb502014-12-02 22:26:20 -080057import org.onosproject.net.DefaultLink;
58import org.onosproject.net.DefaultPath;
59import org.onosproject.net.DefaultPort;
60import org.onosproject.net.Device;
61import org.onosproject.net.DeviceId;
62import org.onosproject.net.Element;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070063import org.onosproject.net.GridType;
Brian O'Connorabafb502014-12-02 22:26:20 -080064import org.onosproject.net.HostId;
65import org.onosproject.net.HostLocation;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070066import org.onosproject.net.IndexedLambda;
Brian O'Connorabafb502014-12-02 22:26:20 -080067import org.onosproject.net.Link;
68import org.onosproject.net.LinkKey;
Marc De Leenheerbb382352015-04-23 18:20:34 -070069import org.onosproject.net.OchPort;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070070import org.onosproject.net.OchSignal;
Ayaka Koshibebcb02372015-06-01 10:56:42 -070071import org.onosproject.net.OchSignalType;
Marc De Leenheerbb382352015-04-23 18:20:34 -070072import org.onosproject.net.OduCltPort;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070073import org.onosproject.net.OduSignalType;
Marc De Leenheerbb382352015-04-23 18:20:34 -070074import org.onosproject.net.OmsPort;
Brian O'Connorabafb502014-12-02 22:26:20 -080075import org.onosproject.net.Port;
76import org.onosproject.net.PortNumber;
77import org.onosproject.net.device.DefaultDeviceDescription;
78import org.onosproject.net.device.DefaultPortDescription;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070079import org.onosproject.net.device.DefaultPortStatistics;
Marc De Leenheer01cb1a92015-05-13 09:23:44 -070080import org.onosproject.net.device.OchPortDescription;
81import org.onosproject.net.device.OduCltPortDescription;
82import org.onosproject.net.device.OmsPortDescription;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070083import org.onosproject.net.device.PortStatistics;
Brian O'Connorabafb502014-12-02 22:26:20 -080084import org.onosproject.net.flow.CompletedBatchOperation;
85import org.onosproject.net.flow.DefaultFlowEntry;
86import org.onosproject.net.flow.DefaultFlowRule;
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070087import org.onosproject.net.flow.DefaultTableStatisticsEntry;
Brian O'Connorabafb502014-12-02 22:26:20 -080088import org.onosproject.net.flow.DefaultTrafficSelector;
89import org.onosproject.net.flow.DefaultTrafficTreatment;
90import org.onosproject.net.flow.FlowEntry;
91import org.onosproject.net.flow.FlowId;
92import org.onosproject.net.flow.FlowRuleBatchEntry;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080093import org.onosproject.net.flow.FlowRuleBatchEvent;
Brian O'Connorabafb502014-12-02 22:26:20 -080094import org.onosproject.net.flow.FlowRuleBatchOperation;
Brian O'Connor72cb19a2015-01-16 16:14:41 -080095import org.onosproject.net.flow.FlowRuleBatchRequest;
Madan Jampani87e276b2015-06-02 10:49:47 -070096import org.onosproject.net.flow.FlowRuleEvent;
jcc3d4e14a2015-04-21 11:32:05 +080097import org.onosproject.net.flow.FlowRuleExtPayLoad;
Brian O'Connorabafb502014-12-02 22:26:20 -080098import org.onosproject.net.flow.StoredFlowEntry;
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070099import org.onosproject.net.flow.TableStatisticsEntry;
Brian O'Connorabafb502014-12-02 22:26:20 -0800100import org.onosproject.net.flow.criteria.Criterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700101import org.onosproject.net.flow.criteria.EthCriterion;
102import org.onosproject.net.flow.criteria.EthTypeCriterion;
103import org.onosproject.net.flow.criteria.IPCriterion;
104import org.onosproject.net.flow.criteria.IPDscpCriterion;
105import org.onosproject.net.flow.criteria.IPEcnCriterion;
106import org.onosproject.net.flow.criteria.IPProtocolCriterion;
107import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
108import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
109import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
110import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
111import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
112import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
113import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
114import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700115import org.onosproject.net.flow.criteria.IndexedLambdaCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700116import org.onosproject.net.flow.criteria.LambdaCriterion;
117import org.onosproject.net.flow.criteria.MetadataCriterion;
118import org.onosproject.net.flow.criteria.MplsCriterion;
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700119import org.onosproject.net.flow.criteria.OchSignalCriterion;
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700120import org.onosproject.net.flow.criteria.OchSignalTypeCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700121import org.onosproject.net.flow.criteria.PortCriterion;
122import org.onosproject.net.flow.criteria.SctpPortCriterion;
123import org.onosproject.net.flow.criteria.TcpPortCriterion;
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700124import org.onosproject.net.flow.criteria.TunnelIdCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700125import org.onosproject.net.flow.criteria.UdpPortCriterion;
126import org.onosproject.net.flow.criteria.VlanIdCriterion;
127import org.onosproject.net.flow.criteria.VlanPcpCriterion;
Brian O'Connorabafb502014-12-02 22:26:20 -0800128import org.onosproject.net.flow.instructions.Instructions;
129import org.onosproject.net.flow.instructions.L0ModificationInstruction;
130import org.onosproject.net.flow.instructions.L2ModificationInstruction;
131import org.onosproject.net.flow.instructions.L3ModificationInstruction;
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700132import org.onosproject.net.flow.instructions.L4ModificationInstruction;
Brian O'Connorabafb502014-12-02 22:26:20 -0800133import org.onosproject.net.host.DefaultHostDescription;
134import org.onosproject.net.host.HostDescription;
135import org.onosproject.net.intent.ConnectivityIntent;
Brian O'Connora7515372015-03-25 14:45:34 -0700136import org.onosproject.net.intent.FlowRuleIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800137import org.onosproject.net.intent.HostToHostIntent;
138import org.onosproject.net.intent.Intent;
139import org.onosproject.net.intent.IntentId;
140import org.onosproject.net.intent.IntentOperation;
Brian O'Connorabafb502014-12-02 22:26:20 -0800141import org.onosproject.net.intent.IntentState;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -0800142import org.onosproject.net.intent.Key;
Brian O'Connorabafb502014-12-02 22:26:20 -0800143import org.onosproject.net.intent.LinkCollectionIntent;
Michele Santuari4b6019e2014-12-19 11:31:45 +0100144import org.onosproject.net.intent.MplsIntent;
145import org.onosproject.net.intent.MplsPathIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800146import org.onosproject.net.intent.MultiPointToSinglePointIntent;
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700147import org.onosproject.net.intent.OpticalCircuitIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800148import org.onosproject.net.intent.OpticalConnectivityIntent;
149import org.onosproject.net.intent.OpticalPathIntent;
150import org.onosproject.net.intent.PathIntent;
151import org.onosproject.net.intent.PointToPointIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800152import org.onosproject.net.intent.SinglePointToMultiPointIntent;
Jonathan Hart45727852015-01-28 13:35:54 -0800153import org.onosproject.net.intent.constraint.AnnotationConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800154import org.onosproject.net.intent.constraint.BandwidthConstraint;
155import org.onosproject.net.intent.constraint.BooleanConstraint;
156import org.onosproject.net.intent.constraint.LambdaConstraint;
157import org.onosproject.net.intent.constraint.LatencyConstraint;
158import org.onosproject.net.intent.constraint.LinkTypeConstraint;
159import org.onosproject.net.intent.constraint.ObstacleConstraint;
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700160import org.onosproject.net.intent.constraint.PartialFailureConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800161import org.onosproject.net.intent.constraint.WaypointConstraint;
162import org.onosproject.net.link.DefaultLinkDescription;
alshabib10c810b2015-08-18 16:59:04 -0700163import org.onosproject.net.meter.MeterId;
Sho SHIMIZU1f5e5912015-08-10 17:00:00 -0700164import org.onosproject.net.newresource.ResourceAllocation;
165import org.onosproject.net.newresource.ResourcePath;
Brian O'Connorabafb502014-12-02 22:26:20 -0800166import org.onosproject.net.packet.DefaultOutboundPacket;
alshabib42947782015-03-31 14:59:06 -0700167import org.onosproject.net.packet.DefaultPacketRequest;
168import org.onosproject.net.packet.PacketPriority;
Brian O'Connorabafb502014-12-02 22:26:20 -0800169import org.onosproject.net.provider.ProviderId;
Brian O'Connor6de2e202015-05-21 14:30:41 -0700170import org.onosproject.net.resource.link.BandwidthResource;
171import org.onosproject.net.resource.link.BandwidthResourceAllocation;
172import org.onosproject.net.resource.link.BandwidthResourceRequest;
173import org.onosproject.net.resource.link.DefaultLinkResourceAllocations;
174import org.onosproject.net.resource.link.DefaultLinkResourceRequest;
175import org.onosproject.net.resource.link.LambdaResource;
176import org.onosproject.net.resource.link.LambdaResourceAllocation;
177import org.onosproject.net.resource.link.LambdaResourceRequest;
178import org.onosproject.net.resource.link.LinkResourceRequest;
179import org.onosproject.net.resource.link.MplsLabel;
180import org.onosproject.net.resource.link.MplsLabelResourceAllocation;
181import org.onosproject.net.resource.link.MplsLabelResourceRequest;
Brian O'Connorabafb502014-12-02 22:26:20 -0800182import org.onosproject.store.Timestamp;
Madan Jampani50589ac2015-06-08 11:38:46 -0700183import org.onosproject.store.service.MapEvent;
184import org.onosproject.store.service.SetEvent;
Madan Jampanie97fec42015-02-17 10:53:42 -0800185import org.onosproject.store.service.Versioned;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700186
Jonathan Hart45727852015-01-28 13:35:54 -0800187import java.net.URI;
188import java.time.Duration;
189import java.util.ArrayList;
190import java.util.Arrays;
191import java.util.Collections;
192import java.util.HashMap;
193import java.util.HashSet;
194import java.util.LinkedList;
195import java.util.Optional;
Madan Jampani86940d92015-05-06 11:47:57 -0700196import java.util.concurrent.ConcurrentHashMap;
197import java.util.concurrent.CopyOnWriteArraySet;
Madan Jampani6db0b442015-07-07 20:27:59 -0700198import java.util.concurrent.atomic.AtomicBoolean;
199import java.util.concurrent.atomic.AtomicInteger;
200import java.util.concurrent.atomic.AtomicLong;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -0700201
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700202public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700203
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800204 public static final KryoNamespace BASIC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800205 .nextId(KryoNamespace.FLOATING_ID)
206 .register(byte[].class)
Madan Jampani6db0b442015-07-07 20:27:59 -0700207 .register(AtomicBoolean.class)
208 .register(AtomicInteger.class)
209 .register(AtomicLong.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800210 .register(new ImmutableListSerializer(),
211 ImmutableList.class,
212 ImmutableList.of(1).getClass(),
213 ImmutableList.of(1, 2).getClass())
214 .register(new ImmutableSetSerializer(),
215 ImmutableSet.class,
216 ImmutableSet.of().getClass(),
217 ImmutableSet.of(1).getClass(),
218 ImmutableSet.of(1, 2).getClass())
219 .register(new ImmutableMapSerializer(),
220 ImmutableMap.class,
221 ImmutableMap.of().getClass(),
222 ImmutableMap.of("a", 1).getClass(),
223 ImmutableMap.of("R", 2, "D", 2).getClass())
224 .register(HashMap.class)
Madan Jampani86940d92015-05-06 11:47:57 -0700225 .register(ConcurrentHashMap.class)
226 .register(CopyOnWriteArraySet.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800227 .register(ArrayList.class,
228 LinkedList.class,
229 HashSet.class
230 )
Madan Jampani3ca9cb62015-07-21 11:35:44 -0700231 .register(Maps.immutableEntry("a", "b").getClass())
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800232 .register(new ArraysAsListSerializer(), Arrays.asList().getClass())
233 .register(Collections.singletonList(1).getClass())
234 .register(Duration.class)
Yuta HIGUCHIae1d2102014-11-25 19:26:01 -0800235 .register(Collections.emptySet().getClass())
Sho SHIMIZU166e61e2015-01-21 18:07:12 -0800236 .register(Optional.class)
Jonathan Hart45727852015-01-28 13:35:54 -0800237 .register(Collections.emptyList().getClass())
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800238 .register(Collections.unmodifiableSet(Collections.emptySet()).getClass())
Marc De Leenheer4a1c1fa2015-06-01 18:08:56 -0700239 .register(Collections.singleton(Object.class).getClass())
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800240 .build();
241
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700242 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700243 * KryoNamespace which can serialize ON.lab misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700244 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700245 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800246 .nextId(KryoNamespace.FLOATING_ID)
247 .register(new IpPrefixSerializer(), IpPrefix.class)
248 .register(new Ip4PrefixSerializer(), Ip4Prefix.class)
249 .register(new Ip6PrefixSerializer(), Ip6Prefix.class)
250 .register(new IpAddressSerializer(), IpAddress.class)
251 .register(new Ip4AddressSerializer(), Ip4Address.class)
252 .register(new Ip6AddressSerializer(), Ip6Address.class)
253 .register(new MacAddressSerializer(), MacAddress.class)
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700254 .register(VlanId.class)
Sho SHIMIZUdee78712015-04-30 09:33:52 -0700255 .register(Frequency.class)
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700256 .register(Bandwidth.class)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700257 .build();
258
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800259 /**
260 * Kryo registration Id for user custom registration.
261 */
262 public static final int BEGIN_USER_CUSTOM_ID = 300;
263
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700264 // TODO: Populate other classes
265 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700266 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700267 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700268 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800269 .nextId(KryoNamespace.INITIAL_ID)
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800270 .register(BASIC)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800271 .nextId(KryoNamespace.INITIAL_ID + 30)
272 .register(MISC)
273 .nextId(KryoNamespace.INITIAL_ID + 30 + 10)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700274 .register(
alshabib10c810b2015-08-18 16:59:04 -0700275 Instructions.MeterInstruction.class,
276 MeterId.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800277 Version.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700278 ControllerNode.State.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800279 ApplicationState.class,
Changhoon Yoon32b93702015-05-15 04:41:15 +0900280 ApplicationRole.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800281 DefaultApplication.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700282 Device.Type.class,
Thomas Vachuskad16ce182014-10-29 17:25:29 -0700283 Port.Type.class,
alshabib7911a052014-10-16 17:49:37 -0700284 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700285 DefaultControllerNode.class,
286 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700287 DefaultDeviceDescription.class,
Madan Jampani70583972015-06-30 11:25:05 -0700288 DefaultHost.class,
Madan Jampani2ff05592014-10-10 15:42:47 -0700289 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700290 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700291 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700292 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -0700293 Link.Type.class,
Thomas Vachuska57126fe2014-11-11 17:13:24 -0800294 Link.State.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700295 Timestamp.class,
Madan Jampani1ee91782014-11-20 20:24:24 -0800296 Leadership.class,
297 LeadershipEvent.class,
298 LeadershipEvent.Type.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700299 HostId.class,
300 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -0700301 DefaultHostDescription.class,
Madan Jampani117aaae2014-10-23 10:04:05 -0700302 DefaultFlowEntry.class,
303 StoredFlowEntry.class,
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -0700304 DefaultFlowRule.class,
alshabib3d643ec2014-10-22 18:33:00 -0700305 DefaultFlowEntry.class,
alshabib42947782015-03-31 14:59:06 -0700306 DefaultPacketRequest.class,
307 PacketPriority.class,
alshabibf6c2ede2014-10-22 23:31:50 -0700308 FlowEntry.FlowEntryState.class,
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -0700309 FlowId.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700310 DefaultTrafficSelector.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700311 PortCriterion.class,
312 MetadataCriterion.class,
313 EthCriterion.class,
alshabibcaf1ca22015-06-25 15:18:16 -0700314 EthType.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700315 EthTypeCriterion.class,
316 VlanIdCriterion.class,
317 VlanPcpCriterion.class,
318 IPDscpCriterion.class,
319 IPEcnCriterion.class,
320 IPProtocolCriterion.class,
321 IPCriterion.class,
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700322 TpPort.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700323 TcpPortCriterion.class,
324 UdpPortCriterion.class,
325 SctpPortCriterion.class,
326 IcmpTypeCriterion.class,
327 IcmpCodeCriterion.class,
328 IPv6FlowLabelCriterion.class,
329 Icmpv6TypeCriterion.class,
330 Icmpv6CodeCriterion.class,
331 IPv6NDTargetAddressCriterion.class,
332 IPv6NDLinkLayerAddressCriterion.class,
333 MplsCriterion.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700334 TunnelIdCriterion.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700335 IPv6ExthdrFlagsCriterion.class,
336 LambdaCriterion.class,
Sho SHIMIZUefc2e282015-05-04 15:26:23 -0700337 IndexedLambdaCriterion.class,
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700338 OchSignalCriterion.class,
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700339 OchSignalTypeCriterion.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700340 Criterion.class,
341 Criterion.Type.class,
342 DefaultTrafficTreatment.class,
343 Instructions.DropInstruction.class,
Charles Chan7efabeb2015-09-28 15:12:19 -0700344 Instructions.NoActionInstruction.class,
Yuta HIGUCHI40d01772014-10-21 00:08:44 -0700345 Instructions.OutputInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800346 Instructions.GroupInstruction.class,
Srikanth Vavilapalli23181912015-05-04 09:48:09 -0700347 Instructions.TableTypeTransition.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700348 L0ModificationInstruction.class,
349 L0ModificationInstruction.L0SubType.class,
350 L0ModificationInstruction.ModLambdaInstruction.class,
Sho SHIMIZUc6827092015-05-05 17:58:34 -0700351 L0ModificationInstruction.ModOchSignalInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700352 L2ModificationInstruction.class,
353 L2ModificationInstruction.L2SubType.class,
354 L2ModificationInstruction.ModEtherInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800355 L2ModificationInstruction.PushHeaderInstructions.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700356 L2ModificationInstruction.ModVlanIdInstruction.class,
357 L2ModificationInstruction.ModVlanPcpInstruction.class,
Saurav Das6c44a632015-05-30 22:05:22 -0700358 L2ModificationInstruction.PopVlanInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800359 L2ModificationInstruction.ModMplsLabelInstruction.class,
360 L2ModificationInstruction.ModMplsTtlInstruction.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700361 L2ModificationInstruction.ModTunnelIdInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700362 L3ModificationInstruction.class,
363 L3ModificationInstruction.L3SubType.class,
364 L3ModificationInstruction.ModIPInstruction.class,
Pavlin Radoslavovfebe82c2015-02-11 19:08:15 -0800365 L3ModificationInstruction.ModIPv6FlowLabelInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800366 L3ModificationInstruction.ModTtlInstruction.class,
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700367 L4ModificationInstruction.class,
368 L4ModificationInstruction.L4SubType.class,
369 L4ModificationInstruction.ModTransportPortInstruction.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700370 RoleInfo.class,
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800371 FlowRuleBatchEvent.class,
372 FlowRuleBatchEvent.Type.class,
373 FlowRuleBatchRequest.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700374 FlowRuleBatchOperation.class,
Madan Jampani87e276b2015-06-02 10:49:47 -0700375 FlowRuleEvent.class,
376 FlowRuleEvent.Type.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700377 CompletedBatchOperation.class,
378 FlowRuleBatchEntry.class,
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700379 FlowRuleBatchEntry.FlowRuleOperation.class,
380 IntentId.class,
381 IntentState.class,
Brian O'Connor4e6c17d2015-02-19 11:40:05 -0800382 //Key.class, is abstract
383 Key.of(1L, new DefaultApplicationId(0, "bar")).getClass(), //LongKey.class
384 Key.of("foo", new DefaultApplicationId(0, "bar")).getClass(), //StringKey.class
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700385 Intent.class,
386 ConnectivityIntent.class,
387 PathIntent.class,
388 DefaultPath.class,
389 DefaultEdgeLink.class,
390 HostToHostIntent.class,
391 PointToPointIntent.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700392 MultiPointToSinglePointIntent.class,
Michele Santuari4a338072014-11-05 18:38:55 +0100393 SinglePointToMultiPointIntent.class,
Brian O'Connora7515372015-03-25 14:45:34 -0700394 FlowRuleIntent.class,
Brian O'Connor41718fc2014-10-30 16:57:21 -0700395 LinkCollectionIntent.class,
396 OpticalConnectivityIntent.class,
397 OpticalPathIntent.class,
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700398 OpticalCircuitIntent.class,
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800399 LinkResourceRequest.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800400 DefaultLinkResourceRequest.class,
401 BandwidthResourceRequest.class,
402 LambdaResourceRequest.class,
Sho SHIMIZU94b7ff42015-05-06 17:51:49 -0700403 LambdaResource.class,
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700404 BandwidthResource.class,
Yuta HIGUCHIadac04a2014-11-13 00:02:45 -0800405 DefaultLinkResourceAllocations.class,
406 BandwidthResourceAllocation.class,
407 LambdaResourceAllocation.class,
Sho SHIMIZU1f5e5912015-08-10 17:00:00 -0700408 ResourcePath.class,
409 ResourceAllocation.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800410 // Constraints
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800411 LambdaConstraint.class,
412 BandwidthConstraint.class,
413 LinkTypeConstraint.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800414 LatencyConstraint.class,
415 WaypointConstraint.class,
416 ObstacleConstraint.class,
417 AnnotationConstraint.class,
Brian O'Connor72a034c2014-11-26 18:24:23 -0800418 BooleanConstraint.class,
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700419 PartialFailureConstraint.class,
jcc3d4e14a2015-04-21 11:32:05 +0800420 IntentOperation.class,
Marc De Leenheerbb382352015-04-23 18:20:34 -0700421 FlowRuleExtPayLoad.class,
422 Frequency.class,
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -0700423 DefaultAnnotations.class,
424 PortStatistics.class,
Brian O'Connorce2d8b52015-07-29 16:24:13 -0700425 DefaultPortStatistics.class,
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -0700426 IntentDomainId.class,
427 TableStatisticsEntry.class,
428 DefaultTableStatisticsEntry.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700429 )
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800430 .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
431 .register(new URISerializer(), URI.class)
432 .register(new NodeIdSerializer(), NodeId.class)
433 .register(new ProviderIdSerializer(), ProviderId.class)
434 .register(new DeviceIdSerializer(), DeviceId.class)
435 .register(new PortNumberSerializer(), PortNumber.class)
436 .register(new DefaultPortSerializer(), DefaultPort.class)
437 .register(new LinkKeySerializer(), LinkKey.class)
438 .register(new ConnectPointSerializer(), ConnectPoint.class)
439 .register(new DefaultLinkSerializer(), DefaultLink.class)
440 .register(new MastershipTermSerializer(), MastershipTerm.class)
441 .register(new HostLocationSerializer(), HostLocation.class)
442 .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
Ayaka Koshibe08e457a2015-06-25 17:11:54 -0700443 .register(new AnnotationsSerializer(), DefaultAnnotations.class)
Madan Jampanie97fec42015-02-17 10:53:42 -0800444 .register(Versioned.class)
Madan Jampani50589ac2015-06-08 11:38:46 -0700445 .register(MapEvent.class)
446 .register(MapEvent.Type.class)
447 .register(SetEvent.class)
448 .register(SetEvent.Type.class)
Yuta HIGUCHIf6171232014-11-25 15:14:44 -0800449 .register(DefaultGroupId.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700450 .register(Annotations.class)
451 .register(OmsPort.class)
452 .register(OchPort.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700453 .register(OduSignalType.class)
Ayaka Koshibebcb02372015-06-01 10:56:42 -0700454 .register(OchSignalType.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700455 .register(GridType.class)
456 .register(ChannelSpacing.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700457 .register(OduCltPort.class)
458 .register(OduCltPort.SignalType.class)
Sho SHIMIZU91210a72015-04-29 12:54:28 -0700459 .register(IndexedLambda.class)
460 .register(OchSignal.class)
Marc De Leenheer01cb1a92015-05-13 09:23:44 -0700461 .register(OduCltPortDescription.class)
462 .register(OchPortDescription.class)
463 .register(OmsPortDescription.class)
Michele Santuari4b6019e2014-12-19 11:31:45 +0100464 .register(
465 MplsIntent.class,
466 MplsPathIntent.class,
467 MplsLabelResourceAllocation.class,
468 MplsLabelResourceRequest.class,
469 MplsLabel.class,
sanghob35a6192015-04-01 13:05:26 -0700470 org.onlab.packet.MplsLabel.class,
471 org.onlab.packet.MPLS.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700472 )
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700473
474 .build();
475
476
477 // not to be instantiated
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700478 private KryoNamespaces() {}
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700479}