6d20da4a23d07be05ee07bcc5b93c51fafc2ad4a
[dcaegen2/collectors/hv-ves.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * dcaegen2-collectors-veshv
4  * ================================================================================
5  * Copyright (C) 2019 NOKIA
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.dcae.collectors.veshv.config.impl.gsonadapters
21
22 import com.google.gson.JsonDeserializationContext
23 import com.google.gson.JsonDeserializer
24 import com.google.gson.JsonElement
25 import java.lang.reflect.Type
26 import java.net.InetSocketAddress
27
28
29 /**
30  * @author Pawel Biniek <pawel.biniek@nokia.com>
31  * @since February 2019
32  */
33 internal class AddressAdapter : JsonDeserializer<InetSocketAddress> {
34     override fun deserialize(
35             json: JsonElement,
36             typeOfT: Type,
37             context: JsonDeserializationContext?): InetSocketAddress
38         {
39             val portStart = json.asString.lastIndexOf(":")
40             if (portStart > 0) {
41                 val address = json.asString.substring(0, portStart)
42                 val port = json.asString.substring(portStart + 1)
43                 return InetSocketAddress(address, port.toInt())
44             } else throw InvalidAddressException("Cannot parse '" + json.asString + "' to address")
45         }
46
47     class InvalidAddressException(reason:String) : RuntimeException(reason)
48 }
49
50