Fix OSGi wiring issues
[ccsdk/features.git] / blueprints-processor / adaptors / rest-adaptor-provider / src / main / java / org / onap / ccsdk / features / rest / adaptor / service / SSLRestClientAdapterImpl.java
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\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 \r
18 package org.onap.ccsdk.features.rest.adaptor.service;\r
19 \r
20 import java.util.Map;\r
21 import java.util.UUID;\r
22 \r
23 import org.onap.ccsdk.features.rest.adaptor.ConfigRestAdaptorConstants;\r
24 import org.onap.ccsdk.features.rest.adaptor.ConfigRestAdaptorException;\r
25 import org.onap.ccsdk.features.rest.adaptor.data.RestResponse;\r
26 import org.springframework.http.HttpHeaders;\r
27 import org.springframework.http.MediaType;\r
28 import com.att.eelf.configuration.EELFLogger;\r
29 import com.att.eelf.configuration.EELFManager;\r
30 \r
31 public class SSLRestClientAdapterImpl extends AbstractConfigRestClientAdapter {\r
32 \r
33     private static EELFLogger logger = EELFManager.getInstance().getLogger(SSLRestClientAdapterImpl.class);\r
34     private String baseUrl = "";\r
35     private String application = "";\r
36 \r
37     public SSLRestClientAdapterImpl(Map<String, String> properties, String serviceSelector)\r
38             throws ConfigRestAdaptorException {\r
39         super(properties, serviceSelector);\r
40         init(serviceSelector);\r
41     }\r
42 \r
43     private void init(String serviceSelector) throws ConfigRestAdaptorException {\r
44         try {\r
45             if (isSSLServiceAdapaterEnabled) {\r
46 \r
47                 logger.info("Initializing SSL client for selector ({}), properties ({})", serviceSelector, properties);\r
48 \r
49                 String baseUrlProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
50                         + ConfigRestAdaptorConstants.SSL_SERVICE_BASEURL;\r
51                 String applicationProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
52                         + ConfigRestAdaptorConstants.SSL_SERVICE_APP;\r
53                 String keyStorePathProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
54                         + ConfigRestAdaptorConstants.SSL_SERVICE_KEY;\r
55                 String keyStorePassProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
56                         + ConfigRestAdaptorConstants.SSL_SERVICE_KEY_PSSWD;\r
57                 String trustStorePathProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
58                         + ConfigRestAdaptorConstants.SSL_SERVICE_TRUST;\r
59                 String trustStorePassProp = ConfigRestAdaptorConstants.REST_ADAPTOR_BASE_PROPERTY + serviceSelector\r
60                         + ConfigRestAdaptorConstants.SSL_SERVICE_TRUST_PSSWD;\r
61 \r
62                 baseUrl = properties.get(baseUrlProp);\r
63                 application = properties.get(applicationProp);\r
64 \r
65                 String keyStorePath = properties.get(keyStorePathProp);\r
66                 String trustStorePath = properties.get(trustStorePathProp);\r
67                 String keyStorePass = properties.get(keyStorePassProp);\r
68                 String trustStorePass = properties.get(trustStorePassProp);\r
69 \r
70                 initialiseSSL(keyStorePath, trustStorePath, keyStorePass, trustStorePass);\r
71                 logger.info("Initialised SSL Client Service adaptor service for selector ({})", serviceSelector);\r
72                 if (restTemplate == null) {\r
73                     throw new ConfigRestAdaptorException(\r
74                             "couldn't initialise SSL Client selector (" + serviceSelector + ")");\r
75                 }\r
76             } else {\r
77                 throw new ConfigRestAdaptorException("SSL Client selector (" + serviceSelector + ") is not enabled");\r
78             }\r
79 \r
80         } catch (Exception e) {\r
81             throw new ConfigRestAdaptorException("SSLRestClientAdapterImpl : " + e.getMessage(), e);\r
82         }\r
83     }\r
84 \r
85     @Override\r
86     public <T> T getResource(String path, Class<T> responseType) throws ConfigRestAdaptorException {\r
87         return super.getResource(formHttpHeaders(), constructUrl(baseUrl, path), responseType);\r
88     }\r
89 \r
90     @Override\r
91     public <T> T postResource(String path, Object request, Class<T> responseType) throws ConfigRestAdaptorException {\r
92         return super.postResource(formHttpHeaders(), constructUrl(baseUrl, path), request, responseType);\r
93     }\r
94 \r
95     @Override\r
96     public <T> T exchangeResource(String path, Object request, Class<T> responseType, String method)\r
97             throws ConfigRestAdaptorException {\r
98         return super.exchangeResource(formHttpHeaders(), constructUrl(baseUrl, path), request, responseType, method);\r
99     }\r
100 \r
101     @Override\r
102     public RestResponse getResource(String path) throws ConfigRestAdaptorException {\r
103         return super.getResource(formHttpHeaders(), constructUrl(baseUrl, path));\r
104     }\r
105 \r
106     @Override\r
107     public RestResponse postResource(String path, Object request) throws ConfigRestAdaptorException {\r
108         return super.postResource(formHttpHeaders(), constructUrl(baseUrl, path), request);\r
109     }\r
110 \r
111     @Override\r
112     public RestResponse exchangeResource(String path, Object request, String method) throws ConfigRestAdaptorException {\r
113         return super.exchangeResource(formHttpHeaders(), constructUrl(baseUrl, path), request, method);\r
114     }\r
115 \r
116     private HttpHeaders formHttpHeaders() {\r
117 \r
118         HttpHeaders headers = new HttpHeaders();\r
119 \r
120         headers.setContentType(MediaType.APPLICATION_JSON);\r
121         headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);\r
122         headers.add("X-FromAppId", application);\r
123         headers.add("X-TransactionId", generateUUID());\r
124 \r
125         return headers;\r
126     }\r
127 \r
128     private synchronized String generateUUID() {\r
129         return UUID.randomUUID().toString();\r
130     }\r
131 }\r