2 * Copyright © 2017-2018 AT&T Intellectual Property.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package org.onap.ccsdk.apps.controllerblueprints;
\r
19 import com.att.eelf.configuration.EELFLogger;
\r
20 import com.att.eelf.configuration.EELFManager;
\r
21 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintException;
\r
22 import org.onap.ccsdk.apps.controllerblueprints.service.common.ErrorMessage;
\r
23 import org.springframework.http.HttpStatus;
\r
24 import org.springframework.http.ResponseEntity;
\r
25 import org.springframework.http.converter.HttpMessageNotReadableException;
\r
26 import org.springframework.security.authentication.BadCredentialsException;
\r
27 import org.springframework.security.web.csrf.InvalidCsrfTokenException;
\r
28 import org.springframework.web.HttpRequestMethodNotSupportedException;
\r
29 import org.springframework.web.bind.MethodArgumentNotValidException;
\r
30 import org.springframework.web.bind.annotation.ControllerAdvice;
\r
31 import org.springframework.web.bind.annotation.ExceptionHandler;
\r
32 import org.springframework.web.bind.annotation.ResponseStatus;
\r
33 import org.springframework.web.bind.annotation.RestController;
\r
34 import org.springframework.web.context.request.WebRequest;
\r
36 import javax.naming.AuthenticationException;
\r
37 import java.nio.file.AccessDeniedException;
\r
41 @SuppressWarnings("unused")
\r
42 public class ApplicationExceptionHandler {
\r
43 private static EELFLogger log = EELFManager.getInstance().getLogger(ApplicationExceptionHandler.class);
\r
45 @ExceptionHandler(Exception.class)
\r
46 public final ResponseEntity<ErrorMessage> handleAllExceptions(Exception ex, WebRequest request) {
\r
47 log.error("Application Exception", ex);
\r
48 ErrorMessage exceptionResponse = new ErrorMessage(ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getLocalizedMessage());
\r
49 return new ResponseEntity<>(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
\r
52 @ExceptionHandler({InvalidCsrfTokenException.class, AuthenticationException.class, BadCredentialsException.class, AccessDeniedException.class})
\r
53 @ResponseStatus(value = HttpStatus.UNAUTHORIZED)
\r
54 public final ResponseEntity<ErrorMessage> handleAuthenticationRequest(Exception ex, WebRequest request) {
\r
55 log.error("Authentication Exception", ex);
\r
56 ErrorMessage exceptionResponse = new ErrorMessage(ex.getMessage(), HttpStatus.UNAUTHORIZED.value(), ex.getLocalizedMessage());
\r
57 return new ResponseEntity<>(exceptionResponse, HttpStatus.UNAUTHORIZED);
\r
60 @ExceptionHandler({HttpMessageNotReadableException.class, MethodArgumentNotValidException.class,
\r
61 HttpRequestMethodNotSupportedException.class})
\r
62 public final ResponseEntity<ErrorMessage> handleBadRequest(Exception ex, WebRequest request) {
\r
63 log.error("Bad Request Exception", ex);
\r
64 ErrorMessage exceptionResponse = new ErrorMessage(ex.getMessage(), HttpStatus.BAD_REQUEST.value(), ex.getLocalizedMessage());
\r
65 return new ResponseEntity<>(exceptionResponse, HttpStatus.BAD_REQUEST);
\r
68 @ExceptionHandler(BluePrintException.class)
\r
69 public final ResponseEntity<ErrorMessage> handleBlueprintException(BluePrintException ex, WebRequest request) {
\r
70 log.error("Application Blueprint Exception", ex);
\r
71 ErrorMessage exceptionResponse = new ErrorMessage(ex.getMessage(), ex.getCode(), ex.getLocalizedMessage());
\r
72 return new ResponseEntity<>(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
\r