Merge "Fix issue with filtering multiple measValue"
[dcaegen2/services/pm-mapper.git] / src / main / java / org / onap / dcaegen2 / services / pmmapper / config / ConfigHandler.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  *  Copyright (C) 2019 Nordix Foundation.\r
4  * ================================================================================\r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  *\r
9  *      http://www.apache.org/licenses/LICENSE-2.0\r
10  *\r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  *\r
17  * SPDX-License-Identifier: Apache-2.0\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 package org.onap.dcaegen2.services.pmmapper.config;\r
21 \r
22 import org.onap.dcaegen2.services.pmmapper.exceptions.CBSConfigException;\r
23 import org.onap.dcaegen2.services.pmmapper.exceptions.CBSServerError;\r
24 import org.onap.dcaegen2.services.pmmapper.exceptions.EnvironmentConfigException;\r
25 import org.onap.dcaegen2.services.pmmapper.exceptions.MapperConfigException;\r
26 import org.onap.dcaegen2.services.pmmapper.model.EnvironmentConfig;\r
27 import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;\r
28 import org.onap.dcaegen2.services.pmmapper.utils.RequestSender;\r
29 import org.onap.dcaegen2.services.pmmapper.utils.RequiredFieldDeserializer;\r
30 \r
31 import org.onap.logging.ref.slf4j.ONAPLogAdapter;\r
32 import org.onap.logging.ref.slf4j.ONAPLogConstants;\r
33 import org.slf4j.LoggerFactory;\r
34 import com.google.gson.GsonBuilder;\r
35 \r
36 /**\r
37  * Handles the retrieval of the component spec-based PM-Mapper Configuration\r
38  * from DCAE.\r
39  */\r
40 \r
41 public class ConfigHandler {\r
42     private static final ONAPLogAdapter logger = new ONAPLogAdapter(LoggerFactory.getLogger(ConfigHandler.class));\r
43     private RequestSender sender;\r
44 \r
45     /**\r
46      * Creates a ConfigHandler.\r
47      */\r
48     public ConfigHandler() {\r
49         this(new RequestSender());\r
50     }\r
51 \r
52     /**\r
53      * @see ConfigHandler#ConfigHandler()\r
54      * @param sender A RequestSender\r
55      */\r
56     public ConfigHandler(RequestSender sender) {\r
57         this.sender = sender;\r
58     }\r
59 \r
60     /**\r
61      * Retrieves PM-Mapper Configuration from DCAE's ConfigBinding Service.\r
62      *\r
63      * @throws EnvironmentConfigException\r
64      * @throws ConsulServerError\r
65      * @throws CBSConfigException\r
66      * @throws CBSServerError\r
67      * @throws MapperConfigException\r
68      */\r
69     public MapperConfig getMapperConfig() throws EnvironmentConfigException,\r
70             CBSServerError, MapperConfigException {\r
71         String mapperConfigJson = "";\r
72         String cbsSocketAddress = EnvironmentConfig.getCBSHostName() + ":" + EnvironmentConfig.getCBSPort();\r
73         String requestURL = "http://" + cbsSocketAddress + "/service_component/" + EnvironmentConfig.getServiceName();\r
74         try {\r
75             logger.unwrap().info(ONAPLogConstants.Markers.ENTRY, "Fetching pm-mapper configuration from Configbinding Service");\r
76             mapperConfigJson = sender.send(requestURL);\r
77         } catch (Exception exception) {\r
78             throw new CBSServerError("Error connecting to Configbinding Service: ", exception);\r
79         } finally {\r
80             logger.unwrap().info(ONAPLogConstants.Markers.EXIT, "Received pm-mapper configuration from ConfigBinding Service:\n{}", mapperConfigJson);\r
81         }\r
82 \r
83         return convertMapperConfigToObject(mapperConfigJson);\r
84     }\r
85 \r
86     private MapperConfig convertMapperConfigToObject(String mapperConfigJson) throws MapperConfigException {\r
87         MapperConfig mapperConfig;\r
88         try {\r
89             mapperConfig = new GsonBuilder()\r
90                     .registerTypeAdapter(MapperConfig.class, new RequiredFieldDeserializer<MapperConfig>())\r
91                     .create()\r
92                     .fromJson(mapperConfigJson, MapperConfig.class);\r
93         } catch (Exception exception) {\r
94             throw new MapperConfigException("Error parsing mapper configuration:\n{}" + mapperConfigJson, exception);\r
95         }\r
96 \r
97         logger.unwrap().debug("Mapper configuration:\n{}", mapperConfig);\r
98         return mapperConfig;\r
99     }\r
100 }\r