Chore: Fix typo in INFO
[externalapi/nbi.git] / src / main / java / org / onap / nbi / exceptions / ApiExceptionHandler.java
1 /**
2  *     Copyright (c) 2018 Orange
3  *
4  *     Licensed under the Apache License, Version 2.0 (the "License");
5  *     you may not use this file except in compliance with the License.
6  *     You may obtain a copy of the License at
7  *
8  *         http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *     Unless required by applicable law or agreed to in writing, software
11  *     distributed under the License is distributed on an "AS IS" BASIS,
12  *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *     See the License for the specific language governing permissions and
14  *     limitations under the License.
15  */
16
17 package org.onap.nbi.exceptions;
18
19 import com.fasterxml.jackson.core.JsonProcessingException;
20 import org.springframework.http.HttpStatus;
21 import org.springframework.http.ResponseEntity;
22 import org.springframework.web.bind.annotation.ControllerAdvice;
23 import org.springframework.web.bind.annotation.ExceptionHandler;
24 import org.springframework.web.bind.annotation.ResponseBody;
25 import org.springframework.web.client.RestClientException;
26
27 @ControllerAdvice
28 public class ApiExceptionHandler {
29
30     @ExceptionHandler(BackendFunctionalException.class)
31     @ResponseBody
32     public ResponseEntity<ApiError> backendExceptionHandler(final BackendFunctionalException exception) {
33         ApiError apiError =
34                 new ApiError(String.valueOf(exception.getHttpStatus().value()), exception.getMessage(), "", "");
35         return new ResponseEntity<>(apiError, exception.getHttpStatus());
36     }
37
38     @ExceptionHandler(TechnicalException.class)
39     @ResponseBody
40     public ResponseEntity<ApiError> technicalExceptionHandler(final TechnicalException exception) {
41         ApiError apiError =
42                 new ApiError(String.valueOf(exception.getHttpStatus().value()), exception.getMessage(), "", "");
43         return new ResponseEntity<>(apiError, exception.getHttpStatus());
44     }
45
46     @ExceptionHandler(RestClientException.class)
47     @ResponseBody
48     public ResponseEntity<ApiError> restClientExceptionHandler(final RestClientException exception) {
49         ApiError apiError = new ApiError("500", HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase(),
50                 "Unable to " + "reach ONAP services", "");
51         return new ResponseEntity<>(apiError, HttpStatus.INTERNAL_SERVER_ERROR);
52     }
53
54     @ExceptionHandler(ValidationException.class)
55     @ResponseBody
56     public ResponseEntity<ApiError> validationExceptionHandler(final ValidationException exception) {
57         ApiError apiError = new ApiError("400", HttpStatus.BAD_REQUEST.getReasonPhrase(), exception.getMessages(), "");
58         return new ResponseEntity<>(apiError, HttpStatus.BAD_REQUEST);
59     }
60
61     @ExceptionHandler(JsonProcessingException.class)
62     @ResponseBody
63     public ResponseEntity<ApiError> validationExceptionHandler(final JsonProcessingException exception) {
64         ApiError apiError = new ApiError(HttpStatus.BAD_REQUEST.name(), HttpStatus.BAD_REQUEST.getReasonPhrase(), "Request data is invalid!", "");
65         return new ResponseEntity<>(apiError, HttpStatus.BAD_REQUEST);
66     }
67 }