0fcc4654e24fec54a49ba36bc7b46e880453f833
[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.utils;\r
16 \r
17 import java.io.BufferedReader;\r
18 import java.io.IOException;\r
19 import java.io.InputStreamReader;\r
20 import org.springframework.http.HttpRequest;\r
21 import org.springframework.http.client.ClientHttpRequestExecution;\r
22 import org.springframework.http.client.ClientHttpRequestInterceptor;\r
23 import org.springframework.http.client.ClientHttpResponse;\r
24 import com.att.eelf.configuration.EELFLogger;\r
25 import com.att.eelf.configuration.EELFManager;\r
26 \r
27 public class LoggingRequestInterceptor implements ClientHttpRequestInterceptor {\r
28     \r
29     private static EELFLogger logger = EELFManager.getInstance().getLogger(LoggingRequestInterceptor.class);\r
30     \r
31     @Override\r
32     public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)\r
33             throws IOException {\r
34         traceRequest(request, body);\r
35         ClientHttpResponse response = execution.execute(request, body);\r
36         traceResponse(response);\r
37         return response;\r
38     }\r
39     \r
40     @SuppressWarnings({"squid:S2629", "squid:S3457"})\r
41     private void traceRequest(HttpRequest request, byte[] body) throws IOException {\r
42         logger.info("===========================request begin================================================");\r
43         logger.info("URI         : {}", request.getURI());\r
44         logger.info("Method      : {}", request.getMethod());\r
45         logger.info("Headers     : {}", request.getHeaders());\r
46         logger.info("Request body: {}", new String(body, "UTF-8"));\r
47         logger.debug("==========================request end================================================");\r
48     }\r
49     \r
50     @SuppressWarnings({"squid:S2629", "squid:S3457"})\r
51     private void traceResponse(ClientHttpResponse response) throws IOException {\r
52         StringBuilder inputStringBuilder = new StringBuilder();\r
53         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody(), "UTF-8"));\r
54         String line = bufferedReader.readLine();\r
55         while (line != null) {\r
56             inputStringBuilder.append(line);\r
57             inputStringBuilder.append('\n');\r
58             line = bufferedReader.readLine();\r
59         }\r
60         logger.info("============================response begin==========================================");\r
61         logger.info("Status code  : {}", response.getStatusCode());\r
62         logger.info("Status text  : {}", response.getStatusText());\r
63         logger.info("Headers      : {}", response.getHeaders());\r
64         logger.debug("Response body: {}", inputStringBuilder.toString());\r
65         logger.debug("=======================response end=================================================");\r
66     }\r
67     \r
68 }\r