1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package Torello.JSON;

import static javax.json.JsonValue.ValueType.OBJECT;

import javax.json.*;

import Torello.JSON.JsonBindingObjException;

/**
 * Used to indicate that one of the properties within a {@link JsonObject} was a parsed or valid
 * {@link JsonObject}, but a User-Provided Builder-Function, or a
 * {@code JsonObject}-Constructor, has failed to build a POJO instance (using the extracted
 * {@code JsonObject}) and has thrown instead.
 * 
 * <EMBED CLASS=globalDefs DATA-STRUCT=JsonObject DATA-TYPE=Object DATA-TYPE_ABBREV=Obj>
 * <EMBED CLASS='external-html' DATA-FILE-ID=JE_FIELD_OBJ>
 * <EMBED CLASS='external-html' DATA-FILE-ID=JE_MSG>
 * <EMBED CLASS='external-html' DATA-FILE-ID=JE_MSG_JBPOEX>
 */
@Torello.JavaDoc.Annotations.JDHeaderBackgroundImg(EmbedTagFileID="JE_BP_UL")
@Torello.JavaDoc.Annotations.CSSLinks(FileNames="JSONExceptions.css")
public class JsonBuildPOJOObjException extends JsonBindingObjException
{
    /** <EMBED CLASS='external-html' DATA-FILE-ID=SVUIDEX>  */
    public static final long serialVersionUID = 1;

    /**
     * Constructs a {@code JsonBuildPOJOObjException} with no specified detail messsage,
     * and the user-provided convenience-field values.
     * 
     * @param cause The exception thrown by the user-provided constructor or builder function
     * @param errorSourceJsonObject <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_ESJO>
     * @param propertyName          <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_PN>
     * @param joRetrieved           <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_JO_RETRIEVED>
     * @param methodReturnJavaType  <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_MRJT>
     */
    public JsonBuildPOJOObjException(
            Throwable   cause,
            JsonObject  errorSourceJsonObject,
            String      propertyName,
            JsonObject  joRetrieved,
            Class<?>    methodReturnJavaType
        )
    {
        super(
            cause,
            errorSourceJsonObject,  // Source JsonObject
            propertyName,           // JsonObject Property Name
            OBJECT,                 // Expected Type
            joRetrieved,            // Encountered JsonObject which failed to build
            methodReturnJavaType,   // User Requested POJO Type

            "Constructing a POJO instance from a JsonArray-Element has thrown an exception"
        );
    }

    /**
     * Constructs a {@code JsonBuildPOJOObjException} with the specified detail message, and
     * user-provided convenience-field values.
     * 
     * @param message the detail message.
     * @param cause The exception thrown by the user-provided constructor or builder function
     * @param errorSourceJsonObject <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_ESJO>
     * @param propertyName          <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_PN>
     * @param joRetrieved           <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_JO_RETRIEVED>
     * @param methodReturnJavaType  <EMBED CLASS='external-html' DATA-FILE-ID=JBEX_MRJT>
     */
    public JsonBuildPOJOObjException(
            String      message,
            Throwable   cause,
            JsonObject  errorSourceJsonObject,
            String      propertyName,
            JsonObject  joRetrieved,
            Class<?>    methodReturnJavaType
        )
    {
        super(
            message, 
            cause,
            errorSourceJsonObject,  // Source JsonObject
            propertyName,           // JsonObject Property Name
            OBJECT,                 // Expected Type
            joRetrieved,            // Encountered JsonObject which failed to build
            methodReturnJavaType    // User Requested POJO Type
        );
    }
}