Add basic model object concepts
[policy/models.git] / models-base / src / main / java / org / onap / policy / models / base / PfModelRuntimeException.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.models.base;
22
23 /**
24  * This class is a base model run time exception from which all model run time exceptions are sub
25  * classes.
26  */
27 public class PfModelRuntimeException extends RuntimeException {
28     private static final long serialVersionUID = -8507246953751956974L;
29
30     // The object on which the exception was thrown
31     private final transient Object object;
32
33     /**
34      * Instantiates a new model runtime exception.
35      *
36      * @param message the message on the exception
37      */
38     public PfModelRuntimeException(final String message) {
39         this(message, null);
40     }
41
42     /**
43      * Instantiates a new model runtime exception.
44      *
45      * @param message the message on the exception
46      * @param object the object that the exception was thrown on
47      */
48     public PfModelRuntimeException(final String message, final Object object) {
49         super(message);
50         this.object = object;
51     }
52
53     /**
54      * Instantiates a new model runtime exception.
55      *
56      * @param message the message on the exception
57      * @param exception the exception that caused this model exception
58      */
59     public PfModelRuntimeException(final String message, final Exception exception) {
60         this(message, exception, null);
61     }
62
63     /**
64      * Instantiates a new model runtime exception.
65      *
66      * @param message the message on the exception
67      * @param exception the exception that caused this model exception
68      * @param object the object that the exception was thrown on
69      */
70     public PfModelRuntimeException(final String message, final Exception exception, final Object object) {
71         super(message, exception);
72         this.object = object;
73     }
74
75     /**
76      * Get the message from this exception and its causes.
77      *
78      * @return the message of this exception and all the exceptions that caused this exception
79      */
80     public String getCascadedMessage() {
81         return PfModelException.buildCascadedMessage(this);
82     }
83
84     /**
85      * Get the object on which the exception was thrown.
86      *
87      * @return The object
88      */
89     public Object getObject() {
90         return object;
91     }
92 }