aboutsummaryrefslogtreecommitdiffstats
path: root/cps-rest
diff options
context:
space:
mode:
authorRuslan Kashapov <ruslan.kashapov@pantheon.tech>2020-11-30 09:45:09 +0200
committerRuslan Kashapov <ruslan.kashapov@pantheon.tech>2020-11-30 09:51:28 +0200
commit828136eb69a7b53939083b25f7c18a9ccb865376 (patch)
tree62ba4f9edac9ccb0ca209fd527a7f847b301fba0 /cps-rest
parente731118eca0540792a140803f18c298fb3be132d (diff)
REST level exception handling cleanup
- removed direct handling of persistence exceptions - error message model is now described via OpenAPI config Issue-ID: CPS-79 Change-Id: Ib460b020ae9c650e1f81b46ab01dab641c953170 Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Diffstat (limited to 'cps-rest')
-rwxr-xr-xcps-rest/docs/api/swagger/openapi.yml40
-rw-r--r--cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java31
-rw-r--r--cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java37
3 files changed, 31 insertions, 77 deletions
diff --git a/cps-rest/docs/api/swagger/openapi.yml b/cps-rest/docs/api/swagger/openapi.yml
index 0c7c83c561..56a012ffe0 100755
--- a/cps-rest/docs/api/swagger/openapi.yml
+++ b/cps-rest/docs/api/swagger/openapi.yml
@@ -364,18 +364,28 @@ paths:
description: Not Found
content: {}
components:
- schemas:
- Anchor:
- type: object
- title: Anchor
- required:
- - anchorName
- - namespace
- - revision
- properties:
- anchorName:
- type: string
- namespace:
- type: string
- revision:
- type: string \ No newline at end of file
+ schemas:
+ ErrorMessage:
+ type: object
+ title: Error
+ properties:
+ status:
+ type: string
+ message:
+ type: string
+ details:
+ type: string
+ Anchor:
+ type: object
+ title: Anchor
+ required:
+ - anchorName
+ - namespace
+ - revision
+ properties:
+ anchorName:
+ type: string
+ namespace:
+ type: string
+ revision:
+ type: string
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
index 9cf4935d4e..2b9ee51fa6 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
@@ -20,12 +20,11 @@
package org.onap.cps.rest.exceptions;
import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.hibernate.exception.ConstraintViolationException;
import org.onap.cps.exceptions.CpsException;
import org.onap.cps.exceptions.CpsNotFoundException;
import org.onap.cps.exceptions.CpsValidationException;
import org.onap.cps.rest.controller.CpsRestController;
-import org.springframework.dao.EmptyResultDataAccessException;
+import org.onap.cps.rest.model.ErrorMessage;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -45,25 +44,6 @@ public class CpsRestExceptionHandler {
return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception);
}
- /*
- TODO: Rid off extra dependencies.
-
- Generic exception handler and CpsException (incl. children) are the only
- exceptions to be handled here. All the other exceptions which require a special
- treatment should be rethrown as CpsException in the place of occurrence ->
- e.g. persistence exceptions are to be handled in cps-ri module.
- */
-
- @ExceptionHandler({ConstraintViolationException.class})
- public ResponseEntity<Object> handleBadRequestException(Exception exception) {
- return buildErrorResponse(HttpStatus.BAD_REQUEST, exception);
- }
-
- @ExceptionHandler({EmptyResultDataAccessException.class})
- public ResponseEntity<Object> handleNotFoundException(Exception exception) {
- return buildErrorResponse(HttpStatus.NOT_FOUND, exception);
- }
-
@ExceptionHandler({CpsException.class})
public ResponseEntity<Object> handleCpsException(CpsException exception) {
return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception.getMessage(), extractDetails(exception));
@@ -84,10 +64,11 @@ public class CpsRestExceptionHandler {
}
private static ResponseEntity<Object> buildErrorResponse(HttpStatus status, String message, String details) {
- return new ResponseEntity<>(
- ErrorMessage.builder().status(status.toString()).message(message).details(details).build(),
- status
- );
+ ErrorMessage errorMessage = new ErrorMessage();
+ errorMessage.setStatus(status.toString());
+ errorMessage.setMessage(message);
+ errorMessage.setDetails(details);
+ return new ResponseEntity<>(errorMessage, status);
}
private static String extractDetails(CpsException exception) {
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java
deleted file mode 100644
index 1f2a0b7860..0000000000
--- a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Pantheon.tech
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.rest.exceptions;
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * Temporary POJO class used as error response model.
- * TODO: To replace with model class generated from Open API specification.
- *
- */
-@Builder
-@Data
-public class ErrorMessage {
- private String status;
- private String message;
- private String details;
-}
-