DCAE-D be initial commit
[sdc/dcae-d/dt-be-main.git] / dcaedt_catalog / asdc / src / main / java / org / onap / sdc / dcae / utils / SDCResponseErrorHandler.java
1 package org.onap.sdc.dcae.utils;
2
3 import com.google.gson.Gson;
4 import org.onap.sdc.dcae.catalog.asdc.ASDCException;
5 import org.onap.sdc.dcae.errormng.RequestError;
6 import org.onap.sdc.dcae.errormng.ResponseFormat;
7 import org.springframework.http.client.ClientHttpResponse;
8 import org.springframework.web.client.DefaultResponseErrorHandler;
9 import org.springframework.web.client.HttpClientErrorException;
10 import org.springframework.web.client.ResponseErrorHandler;
11
12 import java.io.IOException;
13
14 public class SDCResponseErrorHandler implements ResponseErrorHandler {
15
16         private ResponseErrorHandler errorHandler = new DefaultResponseErrorHandler();
17
18         private static Gson gson = new Gson();
19
20         public void handleError(ClientHttpResponse response) throws IOException {
21                 try{
22                         errorHandler.handleError(response);
23                 } catch (HttpClientErrorException e) {
24                         RequestError re = extractRequestError(e);
25                         throw null == re ? e : new ASDCException(e.getStatusCode(), re);
26                 }
27         }
28
29         public boolean hasError(ClientHttpResponse response) throws IOException{
30                 return errorHandler.hasError(response);
31         }
32
33         private RequestError extractRequestError(HttpClientErrorException error) {
34                 try {
35                         String body = error.getResponseBodyAsString();
36                         ResponseFormat responseFormat = gson.fromJson(body, ResponseFormat.class);
37                         return responseFormat.getRequestError();
38                 } catch (Exception e) {
39                         return null;
40                 }
41         }
42
43 }