Merge "Use odlparent-lite as artifacts parent"
[lispflowmapping.git] / mappingservice / lisp-proto / src / main / java / org / opendaylight / lispflowmapping / lisp / serializer / address / factory / LispAddressSerializerFactory.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.lispflowmapping.lisp.serializer.address.factory;
9
10 import java.util.HashMap;
11 import java.util.Map;
12
13 import org.opendaylight.lispflowmapping.lisp.serializer.address.AfiListSerializer;
14 import org.opendaylight.lispflowmapping.lisp.serializer.address.ApplicationDataSerializer;
15 import org.opendaylight.lispflowmapping.lisp.serializer.address.DistinguishedNameSerializer;
16 import org.opendaylight.lispflowmapping.lisp.serializer.address.ExplicitLocatorPathSerializer;
17 import org.opendaylight.lispflowmapping.lisp.serializer.address.InstanceIdSerializer;
18 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4PrefixSerializer;
19 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6PrefixSerializer;
20 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv6Serializer;
21 import org.opendaylight.lispflowmapping.lisp.serializer.address.KeyValueAddressSerializer;
22 import org.opendaylight.lispflowmapping.lisp.serializer.address.LcafSerializer;
23 import org.opendaylight.lispflowmapping.lisp.serializer.address.LispAddressSerializer;
24 import org.opendaylight.lispflowmapping.lisp.serializer.address.Ipv4Serializer;
25 import org.opendaylight.lispflowmapping.lisp.serializer.address.MacSerializer;
26 import org.opendaylight.lispflowmapping.lisp.serializer.address.NoAddressSerializer;
27 import org.opendaylight.lispflowmapping.lisp.serializer.address.SourceDestKeySerializer;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AfiListLcaf;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ApplicationDataLcaf;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdLcaf;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.KeyValueAddressLcaf;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Lcaf;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.NoAddressAfi;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SourceDestKeyLcaf;
43
44 /**
45  * Factory for LispAddress (de)serializers
46  *
47  * @author Lorand Jakab
48  *
49  */
50 public class LispAddressSerializerFactory {
51     private static Map<Class<? extends LispAddressFamily>, LispAddressSerializer> addressTypeToSerializerMap;
52
53     private static void initializeMap() {
54         addressTypeToSerializerMap = new HashMap<Class<? extends LispAddressFamily>, LispAddressSerializer>();
55         addressTypeToSerializerMap.put(NoAddressAfi.class, NoAddressSerializer.getInstance());
56         addressTypeToSerializerMap.put(Ipv4Afi.class, Ipv4Serializer.getInstance());
57         addressTypeToSerializerMap.put(Ipv4PrefixAfi.class, Ipv4PrefixSerializer.getInstance());
58         addressTypeToSerializerMap.put(Ipv6Afi.class, Ipv6Serializer.getInstance());
59         addressTypeToSerializerMap.put(Ipv6PrefixAfi.class, Ipv6PrefixSerializer.getInstance());
60         addressTypeToSerializerMap.put(MacAfi.class, MacSerializer.getInstance());
61         addressTypeToSerializerMap.put(DistinguishedNameAfi.class, DistinguishedNameSerializer.getInstance());
62         addressTypeToSerializerMap.put(Lcaf.class, LcafSerializer.getInstance());
63         addressTypeToSerializerMap.put(AfiListLcaf.class, AfiListSerializer.getInstance());
64         addressTypeToSerializerMap.put(InstanceIdLcaf.class, InstanceIdSerializer.getInstance());
65         addressTypeToSerializerMap.put(ApplicationDataLcaf.class, ApplicationDataSerializer.getInstance());
66         addressTypeToSerializerMap.put(ExplicitLocatorPathLcaf.class, ExplicitLocatorPathSerializer.getInstance());
67         addressTypeToSerializerMap.put(SourceDestKeyLcaf.class, SourceDestKeySerializer.getInstance());
68         addressTypeToSerializerMap.put(KeyValueAddressLcaf.class, KeyValueAddressSerializer.getInstance());
69     }
70
71     public static LispAddressSerializer getSerializer(Class<? extends LispAddressFamily> clazz) {
72         if (addressTypeToSerializerMap == null) {
73             initializeMap();
74         }
75         return addressTypeToSerializerMap.get(clazz);
76     }
77 }