Uplift springboot, swagger
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / controllers / ErrorResponse.java
index 20e9f76..d423e19 100644 (file)
@@ -1,9 +1,9 @@
 /*-
  * ========================LICENSE_START=================================
- * ONAP : ccsdk oran
- * ======================================================================
- * Copyright (C) 2020 Nordix Foundation. All rights reserved.
- * ======================================================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2020 Nordix Foundation
+ * %%
  * 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
@@ -24,9 +24,9 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.annotations.SerializedName;
 
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
 
+import org.oransc.enrichment.exceptions.ServiceException;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -34,11 +34,12 @@ import org.springframework.http.ResponseEntity;
 import reactor.core.publisher.Mono;
 
 public class ErrorResponse {
-    private static Gson gson = new GsonBuilder() //
-        .create(); //
+    private static Gson gson = new GsonBuilder().create();
 
     // Returned as body for all failed REST calls
-    @ApiModel(value = "error_information", description = "Problem as defined in https://tools.ietf.org/html/rfc7807")
+    @Schema(
+        name = "ProblemDetails",
+        description = "A problem detail to carry details in a HTTP response according to RFC 7807")
     public static class ErrorInfo {
         @SerializedName("type")
         private String type = "about:blank";
@@ -60,35 +61,40 @@ public class ErrorResponse {
             this.status = status;
         }
 
-        @ApiModelProperty(
+        @Schema(
             example = "404",
-            value = "The HTTP status code generated by the origin server for this occurrence of the problem.")
+            description = "The HTTP status code generated by the origin server for this occurrence of the problem.")
         public Integer getStatus() {
             return status;
         }
 
-        @ApiModelProperty(
+        @Schema(
             example = "EI job type not found",
-            value = "A human-readable explanation specific to this occurrence of the problem.")
+            description = "A human-readable explanation specific to this occurrence of the problem.")
         public String getDetail() {
             return this.detail;
         }
     }
 
-    @ApiModelProperty(value = "message")
+    @Schema(name = "message")
     public final String message;
 
     ErrorResponse(String message) {
         this.message = message;
     }
 
-    public static Mono<ResponseEntity<Object>> createMono(Exception e, HttpStatus code) {
+    public static Mono<ResponseEntity<Object>> createMono(Throwable e, HttpStatus code) {
         return Mono.just(create(e, code));
     }
 
-    public static ResponseEntity<Object> create(Exception e, HttpStatus code) {
+    public static ResponseEntity<Object> create(Throwable e, HttpStatus code) {
         if (e instanceof RuntimeException) {
             code = HttpStatus.INTERNAL_SERVER_ERROR;
+        } else if (e instanceof ServiceException) {
+            ServiceException se = (ServiceException) e;
+            if (se.getHttpStatus() != null) {
+                code = se.getHttpStatus();
+            }
         }
         return create(e.toString(), code);
     }