Simulating producer errors
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / controllers / ErrorResponse.java
index edaa3bb..4e68c1a 100644 (file)
@@ -27,6 +27,7 @@ import com.google.gson.annotations.SerializedName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import org.oransc.enrichment.exceptions.ServiceException;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -61,7 +62,7 @@ public class ErrorResponse {
         }
 
         @ApiModelProperty(
-            example = "503",
+            example = "404",
             value = "The HTTP status code generated by the origin server for this occurrence of the problem.")
         public Integer getStatus() {
             return status;
@@ -73,7 +74,6 @@ public class ErrorResponse {
         public String getDetail() {
             return this.detail;
         }
-
     }
 
     @ApiModelProperty(value = "message")
@@ -83,16 +83,25 @@ public class ErrorResponse {
         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();
+            }
         }
-        ErrorInfo p = new ErrorInfo(e.toString(), code.value());
-        String json = gson.toJson(p);
+        return create(e.toString(), code);
+    }
+
+    public static ResponseEntity<Object> create(String str, HttpStatus code) {
+        ErrorInfo errorInfo = new ErrorInfo(str, code.value());
+        String json = gson.toJson(errorInfo);
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_PROBLEM_JSON);
         return new ResponseEntity<>(json, headers, code);