Merge "REST level exception handling cleanup"
authorToine Siebelink <toine.siebelink@est.tech>
Tue, 1 Dec 2020 15:34:10 +0000 (15:34 +0000)
committerGerrit Code Review <gerrit@onap.org>
Tue, 1 Dec 2020 15:34:10 +0000 (15:34 +0000)
cps-rest/docs/api/swagger/openapi.yml
cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java [deleted file]

index 0c7c83c..56a012f 100755 (executable)
@@ -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
index 9cf4935..2b9ee51 100644 (file)
 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 (file)
index 1f2a0b7..0000000
+++ /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;
-}
-