55cdca40b55c901914cf49d50f66fa47ee46a80a
[ccsdk/features.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * \r
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except\r
5  * in compliance with the License. You may obtain a copy of the License at\r
6  * \r
7  * http://www.apache.org/licenses/LICENSE-2.0\r
8  * \r
9  * Unless required by applicable law or agreed to in writing, software distributed under the License\r
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r
11  * or implied. See the License for the specific language governing permissions and limitations under\r
12  * the License.\r
13  */\r
14 \r
15 package org.onap.ccsdk.config.rest.adaptor.service;\r
16 \r
17 import java.util.Map;\r
18 import java.util.UUID;\r
19 import org.apache.commons.lang3.StringUtils;\r
20 import org.onap.ccsdk.config.rest.adaptor.ConfigRestAdaptorConstants;\r
21 import org.onap.ccsdk.config.rest.adaptor.ConfigRestAdaptorException;\r
22 import org.onap.ccsdk.config.rest.adaptor.data.RestResponse;\r
23 import org.springframework.http.HttpHeaders;\r
24 import org.springframework.http.MediaType;\r
25 import com.att.eelf.configuration.EELFLogger;\r
26 import com.att.eelf.configuration.EELFManager;\r
27 \r
28 public class GenericRestClientAdapterImpl extends AbstractConfigRestClientAdapter {\r
29     \r
30     private static EELFLogger logger = EELFManager.getInstance().getLogger(GenericRestClientAdapterImpl.class);\r
31     private String baseUrl = "";\r
32     \r
33     public GenericRestClientAdapterImpl(Map<String, String> properties, String serviceSelector)\r
34             throws ConfigRestAdaptorException {\r
35         super(properties, serviceSelector);\r
36         init(serviceSelector);\r
37     }\r
38     \r
39     private void init(String serviceSelector) throws ConfigRestAdaptorException {\r
40         try {\r
41             if (isRestClientServiceAdapaterEnabled) {\r
42                 String baseUrlProperty = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
43                         + ConfigRestAdaptorConstants.SERVICE_BASEURL_PROPERTY;\r
44                 String userProperty = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
45                         + ConfigRestAdaptorConstants.SERVICE_USER_PROPERTY;\r
46                 String passProperty = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
47                         + ConfigRestAdaptorConstants.SERVICE_PSSWD_PROPERTY;\r
48                 \r
49                 baseUrl = properties.get(baseUrlProperty);\r
50                 String userId = properties.get(userProperty);\r
51                 String pass = properties.get(passProperty);\r
52                 \r
53                 initialise(userId, pass);\r
54                 logger.info("Initialised restconf adaptor service for selector ({})", serviceSelector);\r
55                 if (restTemplate == null) {\r
56                     throw new ConfigRestAdaptorException("couldn't initialise rest selector (" + serviceSelector + ")");\r
57                 }\r
58             } else {\r
59                 throw new ConfigRestAdaptorException("rest selector (" + serviceSelector + ") is not enabled");\r
60             }\r
61             \r
62         } catch (Exception e) {\r
63             throw new ConfigRestAdaptorException("GenericRestClientServiceAdapter : " + e.getMessage(), e);\r
64         }\r
65     }\r
66     \r
67     @Override\r
68     public <T> T getResource(String path, Class<T> responseType) throws ConfigRestAdaptorException {\r
69         return super.getResource(formHttpHeaders(), constructUrl(baseUrl, path), responseType);\r
70     }\r
71     \r
72     @Override\r
73     public <T> T postResource(String path, Object request, Class<T> responseType) throws ConfigRestAdaptorException {\r
74         return super.postResource(formHttpHeaders(), constructUrl(baseUrl, path), request, responseType);\r
75     }\r
76     \r
77     @Override\r
78     public <T> T exchangeResource(String path, Object request, Class<T> responseType, String method)\r
79             throws ConfigRestAdaptorException {\r
80         return super.exchangeResource(formHttpHeaders(), constructUrl(baseUrl, path), request, responseType, method);\r
81     }\r
82     \r
83     @Override\r
84     public RestResponse getResource(String path) throws ConfigRestAdaptorException {\r
85         return super.getResource(formHttpHeaders(), constructUrl(baseUrl, path));\r
86     }\r
87     \r
88     @Override\r
89     public RestResponse postResource(String path, Object request) throws ConfigRestAdaptorException {\r
90         return super.postResource(formHttpHeaders(), constructUrl(baseUrl, path), request);\r
91     }\r
92     \r
93     @Override\r
94     public RestResponse exchangeResource(String path, Object request, String method) throws ConfigRestAdaptorException {\r
95         return super.exchangeResource(formHttpHeaders(), constructUrl(baseUrl, path), request, method);\r
96     }\r
97     \r
98     private HttpHeaders formHttpHeaders() {\r
99         \r
100         HttpHeaders headers = new HttpHeaders();\r
101         \r
102         headers.setContentType(MediaType.APPLICATION_JSON);\r
103         headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);\r
104         headers.add("X-TransactionId", generateUUID());\r
105         headers.add("X-ECOMP-RequestID", headers.getFirst("X-TransactionId"));\r
106         \r
107         String appIDPath = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
108                 + ConfigRestAdaptorConstants.SERVICE_APPID_PROPERTY;\r
109         String environmentPath = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
110                 + ConfigRestAdaptorConstants.SERVICE_ENV_PROPERTY;\r
111         String clientAuthPath = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
112                 + ConfigRestAdaptorConstants.SERVICE_CLIENTAUTH_PROPERTY;\r
113         String authorizationPath = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
114                 + ConfigRestAdaptorConstants.SERVICE_AUTHORIZATION_PROPERTY;\r
115         \r
116         if (StringUtils.isNotBlank(properties.get(appIDPath))) {\r
117             headers.add("X-FromAppId", properties.get(appIDPath));\r
118         }\r
119         if (StringUtils.isNotBlank(properties.get(clientAuthPath))) {\r
120             headers.add("ClientAuth", properties.get(clientAuthPath));\r
121         }\r
122         if (StringUtils.isNotBlank(properties.get(authorizationPath))) {\r
123             headers.add("Authorization", properties.get(authorizationPath));\r
124         }\r
125         if (StringUtils.isNotBlank(properties.get(environmentPath))) {\r
126             headers.add("Environment", properties.get(environmentPath));\r
127         }\r
128         \r
129         return headers;\r
130     }\r
131     \r
132     private synchronized String generateUUID() {\r
133         return UUID.randomUUID().toString();\r
134     }\r
135     \r
136 }\r