Checkstyle: fix issues and enforce on lisp-proto
[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 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;
52
53 /**
54  * Factory for LispAddress (de)serializers.
55  *
56  * @author Lorand Jakab
57  *
58  */
59 public final class LispAddressSerializerFactory {
60     private static Map<Class<? extends LispAddressFamily>, LispAddressSerializer> addressTypeToSerializerMap;
61
62     // Class should not be instantiated
63     private LispAddressSerializerFactory() {
64     }
65
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());
87     }
88
89     public static LispAddressSerializer getSerializer(Class<? extends LispAddressFamily> clazz) {
90         if (addressTypeToSerializerMap == null) {
91             initializeMap();
92         }
93         return addressTypeToSerializerMap.get(clazz);
94     }
95 }