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