2 * Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.lispflowmapping.lisp.serializer.address.factory;
10 import java.util.HashMap;
12 import org.opendaylight.lispflowmapping.lisp.serializer.address.AfiListSerializer;
13 import org.opendaylight.lispflowmapping.lisp.serializer.address.ApplicationDataSerializer;
14 import org.opendaylight.lispflowmapping.lisp.serializer.address.DistinguishedNameSerializer;
15 import org.opendaylight.lispflowmapping.lisp.serializer.address.ExplicitLocatorPathSerializer;
16 import org.opendaylight.lispflowmapping.lisp.serializer.address.InstanceIdSerializer;
17 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4BinarySerializer;
18 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4PrefixBinarySerializer;
19 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4PrefixSerializer;
20 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4Serializer;
21 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6BinarySerializer;
22 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6PrefixBinarySerializer;
23 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6PrefixSerializer;
24 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6Serializer;
25 import org.opendaylight.lispflowmapping.lisp.serializer.address.KeyValueAddressSerializer;
26 import org.opendaylight.lispflowmapping.lisp.serializer.address.LcafSerializer;
27 import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
28 import org.opendaylight.lispflowmapping.lisp.serializer.address.MacSerializer;
29 import org.opendaylight.lispflowmapping.lisp.serializer.address.NoAddressSerializer;
30 import org.opendaylight.lispflowmapping.lisp.serializer.address.ServicePathSerializer;
31 import org.opendaylight.lispflowmapping.lisp.serializer.address.SourceDestKeySerializer;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AfiListLcaf;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ApplicationDataLcaf;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdLcaf;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.KeyValueAddressLcaf;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Lcaf;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.NoAddressAfi;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathLcaf;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SourceDestKeyLcaf;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4BinaryAfi;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4PrefixBinaryAfi;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv6BinaryAfi;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv6PrefixBinaryAfi;
54 * Factory for LispAddress (de)serializers.
56 * @author Lorand Jakab
59 public final class LispAddressSerializerFactory {
60 private static Map<Class<? extends LispAddressFamily>, LispAddressSerializer> addressTypeToSerializerMap;
62 // Class should not be instantiated
63 private LispAddressSerializerFactory() {
66 private static void initializeMap() {
67 addressTypeToSerializerMap = new HashMap<Class<? extends LispAddressFamily>, LispAddressSerializer>();
68 addressTypeToSerializerMap.put(NoAddressAfi.class, NoAddressSerializer.getInstance());
69 addressTypeToSerializerMap.put(Ipv4Afi.class, Ipv4Serializer.getInstance());
70 addressTypeToSerializerMap.put(Ipv4BinaryAfi.class, Ipv4BinarySerializer.getInstance());
71 addressTypeToSerializerMap.put(Ipv4PrefixAfi.class, Ipv4PrefixSerializer.getInstance());
72 addressTypeToSerializerMap.put(Ipv4PrefixBinaryAfi.class, Ipv4PrefixBinarySerializer.getInstance());
73 addressTypeToSerializerMap.put(Ipv6Afi.class, Ipv6Serializer.getInstance());
74 addressTypeToSerializerMap.put(Ipv6BinaryAfi.class, Ipv6BinarySerializer.getInstance());
75 addressTypeToSerializerMap.put(Ipv6PrefixAfi.class, Ipv6PrefixSerializer.getInstance());
76 addressTypeToSerializerMap.put(Ipv6PrefixBinaryAfi.class, Ipv6PrefixBinarySerializer.getInstance());
77 addressTypeToSerializerMap.put(MacAfi.class, MacSerializer.getInstance());
78 addressTypeToSerializerMap.put(DistinguishedNameAfi.class, DistinguishedNameSerializer.getInstance());
79 addressTypeToSerializerMap.put(Lcaf.class, LcafSerializer.getInstance());
80 addressTypeToSerializerMap.put(AfiListLcaf.class, AfiListSerializer.getInstance());
81 addressTypeToSerializerMap.put(InstanceIdLcaf.class, InstanceIdSerializer.getInstance());
82 addressTypeToSerializerMap.put(ApplicationDataLcaf.class, ApplicationDataSerializer.getInstance());
83 addressTypeToSerializerMap.put(ExplicitLocatorPathLcaf.class, ExplicitLocatorPathSerializer.getInstance());
84 addressTypeToSerializerMap.put(SourceDestKeyLcaf.class, SourceDestKeySerializer.getInstance());
85 addressTypeToSerializerMap.put(KeyValueAddressLcaf.class, KeyValueAddressSerializer.getInstance());
86 addressTypeToSerializerMap.put(ServicePathLcaf.class, ServicePathSerializer.getInstance());
89 public static LispAddressSerializer getSerializer(Class<? extends LispAddressFamily> clazz) {
90 if (addressTypeToSerializerMap == null) {
93 return addressTypeToSerializerMap.get(clazz);