Checkstyle: fix issues and enforce on lisp-proto
[lispflowmapping.git] / mappingservice / lisp-proto / src / main / java / org / opendaylight / lispflowmapping / lisp / serializer / address / DistinguishedNameSerializer.java
1 /*
2  * Copyright (c) 2014 Contextream, Inc. and others.  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;
9
10 import java.nio.ByteBuffer;
11
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana.afn.safi.rev130704.AddressFamily;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddress;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedNameBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.RlocBuilder;
23
24 public final class DistinguishedNameSerializer extends LispAddressSerializer {
25
26     private static final DistinguishedNameSerializer INSTANCE = new DistinguishedNameSerializer();
27
28     // Private constructor prevents instantiation from other classes
29     private DistinguishedNameSerializer() {
30     }
31
32     public static DistinguishedNameSerializer getInstance() {
33         return INSTANCE;
34     }
35
36     @Override
37     public int getAddressSize(LispAddress lispAddress) {
38         return ((DistinguishedName) lispAddress.getAddress()).getDistinguishedName().getValue().length() + 1;
39
40     }
41
42     @Override
43     public int getAddressSize(SimpleAddress simpleAddress) {
44         return simpleAddress.getDistinguishedNameType().getValue().length() + 1;
45
46     }
47
48     @Override
49     protected short getAfi() {
50         return (short) AddressFamily.DistinguishedName.getIntValue();
51     }
52
53     @Override
54     protected void serializeData(ByteBuffer buffer, LispAddress lispAddress) {
55         DistinguishedName distinguishedNameAddress = (DistinguishedName) lispAddress.getAddress();
56         buffer.put(distinguishedNameAddress.getDistinguishedName().getValue().getBytes());
57         buffer.put((byte) 0);
58     }
59
60     @Override
61     protected void serializeData(ByteBuffer buffer, SimpleAddress simpleAddress) {
62         buffer.put(simpleAddress.getDistinguishedNameType().getValue().getBytes());
63         buffer.put((byte) 0);
64     }
65
66     @Override
67     protected Eid deserializeEidData(ByteBuffer buffer, LispAddressSerializerContext ctx) {
68         EidBuilder eb = new EidBuilder();
69         eb.setAddressType(DistinguishedNameAfi.class);
70         eb.setVirtualNetworkId(getVni(ctx));
71         eb.setAddress(new DistinguishedNameBuilder().setDistinguishedName(deserializeData(buffer)).build());
72         return eb.build();
73     }
74
75     @Override
76     protected Rloc deserializeRlocData(ByteBuffer buffer) {
77         RlocBuilder rb = new RlocBuilder();
78         rb.setAddressType(DistinguishedNameAfi.class);
79         rb.setVirtualNetworkId(null);
80         rb.setAddress(new DistinguishedNameBuilder().setDistinguishedName(deserializeData(buffer)).build());
81         return rb.build();
82     }
83
84
85     @Override
86     protected SimpleAddress deserializeSimpleAddressData(ByteBuffer buffer, LispAddressSerializerContext ctx) {
87         return new SimpleAddress(deserializeData(buffer));
88     }
89
90     private DistinguishedNameType deserializeData(ByteBuffer buffer) {
91         StringBuilder sb = new StringBuilder();
92         byte character = buffer.get();
93         while (character != 0) {
94             sb.append((char) character);
95             character = buffer.get();
96         }
97         return new DistinguishedNameType(sb.toString());
98     }
99 }