Java 17 Upgrade
[policy/models.git] / models-base / src / main / java / org / onap / policy / models / base / PfModelRuntimeException.java
index c4684bc..44e9db9 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019, 2021, 2023 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.policy.models.base;
 
-import javax.ws.rs.core.Response;
-
+import jakarta.ws.rs.core.Response;
+import java.io.Serial;
 import lombok.Getter;
 import lombok.ToString;
+import org.onap.policy.models.errors.concepts.ErrorResponse;
+import org.onap.policy.models.errors.concepts.ErrorResponseInfo;
+import org.onap.policy.models.errors.concepts.ErrorResponseUtils;
 
 /**
- * This class is a base model run time exception from which all model run time exceptions are sub
- * classes.
+ * This class is a base model run time exception from which all model run time exceptions are subclasses.
  */
 @Getter
 @ToString
-public class PfModelRuntimeException extends RuntimeException {
+public class PfModelRuntimeException extends RuntimeException implements ErrorResponseInfo {
+    @Serial
     private static final long serialVersionUID = -8507246953751956974L;
 
-    // The return code on the exception
-    private final Response.Status statusCode;
+    // The error response of the exception
+    private final ErrorResponse errorResponse = new ErrorResponse();
 
     // The object on which the exception was thrown
     private final transient Object object;
@@ -44,7 +47,7 @@ public class PfModelRuntimeException extends RuntimeException {
      * Instantiates a new model runtime exception.
      *
      * @param statusCode the return code for the exception
-     * @param message the message on the exception
+     * @param message    the message on the exception
      */
     public PfModelRuntimeException(final Response.Status statusCode, final String message) {
         this(statusCode, message, null);
@@ -54,47 +57,52 @@ public class PfModelRuntimeException extends RuntimeException {
      * Instantiates a new model runtime exception.
      *
      * @param statusCode the return code for the exception
-     * @param message the message on the exception
-     * @param object the object that the exception was thrown on
+     * @param message    the message on the exception
+     * @param object     the object that the exception was thrown on
      */
     public PfModelRuntimeException(final Response.Status statusCode, final String message, final Object object) {
         super(message);
         this.object = object;
-        this.statusCode = statusCode;
+        errorResponse.setResponseCode(statusCode);
+        ErrorResponseUtils.getExceptionMessages(errorResponse, this);
     }
 
     /**
      * Instantiates a new model runtime exception.
      *
      * @param statusCode the return code for the exception
-     * @param message the message on the exception
-     * @param exception the exception that caused this model exception
+     * @param message    the message on the exception
+     * @param exception  the exception that caused this model exception
      */
     public PfModelRuntimeException(final Response.Status statusCode, final String message, final Exception exception) {
         this(statusCode, message, exception, null);
     }
 
     /**
-     * Instantiates a new model runtime exception.
+     * Instantiates a new model runtime exception from a PfModelException instance.
      *
-     * @param statusCode the return code for the exception
-     * @param message the message on the exception
      * @param exception the exception that caused this model exception
-     * @param object the object that the exception was thrown on
      */
-    public PfModelRuntimeException(final Response.Status statusCode, final String message, final Exception exception,
-            final Object object) {
-        super(message, exception);
-        this.object = object;
-        this.statusCode = statusCode;
+    public PfModelRuntimeException(final PfModelException exception) {
+        super(exception.getMessage(), exception);
+        this.object = exception.getObject();
+        errorResponse.setResponseCode(exception.getErrorResponse().getResponseCode());
+        ErrorResponseUtils.getExceptionMessages(errorResponse, this);
     }
 
     /**
-     * Get the message from this exception and its causes.
+     * Instantiates a new model runtime exception.
      *
-     * @return the message of this exception and all the exceptions that caused this exception
+     * @param statusCode the return code for the exception
+     * @param message    the message on the exception
+     * @param exception  the exception that caused this model exception
+     * @param object     the object that the exception was thrown on
      */
-    public String getCascadedMessage() {
-        return PfModelException.buildCascadedMessage(this);
+    public PfModelRuntimeException(final Response.Status statusCode, final String message, final Exception exception,
+                                   final Object object) {
+        super(message, exception);
+        this.object = object;
+        errorResponse.setResponseCode(statusCode);
+        ErrorResponseUtils.getExceptionMessages(errorResponse, this);
     }
 }