package Ġbr . com . gui ab ol so . hyper loop . validation Ċ Ċ import Ġbr . com . gui ab ol so . hyper loop . exceptions . Invalid Input Exception Ċ import Ġcom . google . gson . Json Primitive Ċ import Ġjava . text . ParseException Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ enum Ġclass ĠPrimitive Types Ġ{ ĊĠĠĠ ĠSTRING Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! element . isString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġa Ġstring Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠLONG Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . as Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġa Ġlong Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠINT Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . as Int ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġan Ġint Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠFLOAT Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . as Float ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġa Ġfloat Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠDOUBLE Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . as Double ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġa Ġdouble Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠBOOLEAN Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! element . is Boolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Input Ġ$ element Ġis Ġnot Ġa Ġboolean Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠDAT ETIME Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Formatter . ISO _ INST ANT . parse ( element . asString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Input Exception (" Date ĠElement Ġ'${ element . asString }' Ġis Ġnot Ġa ĠINST ANT ĠDATE Ġon Ġnode key Ġ$ node Key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}; ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġvalue Of OrNull ( value : ĠString ): ĠPrimitive Types ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimitive Types . valueOf ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġverify Type ( element : ĠJson Primitive , Ġnode Key : ĠString ) Ċ } Ċ