/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠPro Si eben Sat 1 . Digital ĠGmbH . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġde . pro si eb ens at 1 digital . oasis js bridge Ċ Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġorg . json . JSON Tok ener Ċ import Ġtim ber . log . Tim ber Ċ Ċ interface ĠPayload Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Json String ( json String : ĠString ?): ĠPayload ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json String . isNull OrEmpty () Ġ|| Ġjson String Ġ== Ġ" null " Ġ|| Ġjson String Ġ== Ġ" undefined ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJSON . stringify ( null ) Ġ== Ġstring Ġwith Ġ" null " Ġcontents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġnext Value Ġ= ĠJSON Tok ener ( json String ). next Value ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĠJSONObject . NULL Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJSONObject Ġ-> ĠPayload Object . from JsonObject ( next Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJSONArray Ġ-> ĠPayload Array . fromJson Array ( next Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> ĠPayload String ( next Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> ĠPayload Number ( next Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> ĠPayload Number ( next Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" WARNING : Ġinvalid ĠJSON : Ġ$ json String ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Js String ( order Alphabet ically : ĠBoolean Ġ= Ġfalse ): ĠString ĊĠĠĠ Ġfun ĠtoJson String ( order Alphabet ically : ĠBoolean Ġ= Ġfalse ): ĠString ĊĊĠĠĠ Ġfun Ġstring Value () Ġ= Ġ( this Ġas ? ĠPayload String )?. value ĊĠĠĠ Ġfun Ġint Value () Ġ= Ġ( this Ġas ? ĠPayload Number )?. value ?. toInt () ĊĠĠĠ Ġfun Ġdouble Value () Ġ= Ġ( this Ġas ? ĠPayload Number )?. value ?. toDouble () ĊĠĠĠ Ġfun Ġis Null () Ġ= Ġ( this Ġas ? ĠPayload Null ) Ġ!= Ġnull Ċ } Ċ Ċ inline Ġclass ĠPayload String ( val Ġvalue : ĠString ): ĠPayload Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġto Js String ( order Alphabet ically : ĠBoolean ) Ġ= Ġ"\" ${ escape ( value )}\ "" ĊĠĠĠ Ġoverride Ġfun ĠtoJson String ( order Alphabet ically : ĠBoolean ) Ġ= Ġto Js String ( order Alphabet ically ) Ċ } Ċ Ċ inline Ġclass ĠPayload Number ( val Ġvalue : ĠNumber ): ĠPayload Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġto Js String ( order Alphabet ically : ĠBoolean ) Ġ= Ġ"$ value " ĊĠĠĠ Ġoverride Ġfun ĠtoJson String ( order Alphabet ically : ĠBoolean ) Ġ= Ġ"$ value " Ċ } Ċ Ċ class ĠPayload Null : ĠPayload Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġto Js String ( order Alphabet ically : ĠBoolean ) Ġ= Ġ" null " ĊĠĠĠ Ġoverride Ġfun ĠtoJson String ( order Alphabet ically : ĠBoolean ) Ġ= Ġ" null " Ċ } ĊĊ Ċ // ĠJsonObject Wrapper Ġextensions : Ċ // Ġ--- Ċ Ċ fun ĠJsonObject Wrapper . to Payload () Ġ= ĠPayload . fromJson String ( this . json String ) Ċ fun ĠJsonObject Wrapper . to Payload Object () Ġ= ĠPayload Object . fromJson String ( this . json String ) Ċ fun ĠJsonObject Wrapper . to Payload Array () Ġ= ĠPayload Array . fromJson String ( this . json String ) ĊĊ Ċ // ĠString Ġextensions Ċ // Ġ--- Ċ Ċ fun ĠString . to Payload () Ġ= ĠPayload . fromJson String ( this ) Ċ fun ĠString . to Payload Object () Ġ= ĠPayload Object . fromJson String ( this ) Ċ fun ĠString . to Payload Array () Ġ= ĠPayload Array . fromJson String ( this ) ĊĊ Ċ // ĠHelper Ġfunctions Ċ // Ġ--- Ċ Ċ internal Ġfun Ġget Int From Any ( value : ĠAny ?): ĠInt ? Ġ{ ĊĠĠĠ Ġ// ĠNumber Ġ-> ĠInt ĊĠĠĠ Ġ( value Ġas ? ĠNumber ?) ?. toInt ()?. let Ġ{ Ġreturn Ġit Ġ} ĊĊĠĠĠ Ġ// ĠString Ġ-> ĠInt ĊĠĠĠ Ġreturn Ġ( value Ġas ? ĠString )?. toInt OrNull () Ċ } Ċ Ċ internal Ġfun Ġget Double From Any ( value : ĠAny ?): ĠDouble ? Ġ{ ĊĠĠĠ Ġ// ĠNumber Ġ-> ĠDouble ĊĠĠĠ Ġ( value Ġas ? ĠNumber ?) ?. toDouble ()?. let Ġ{ Ġreturn Ġit Ġ} ĊĊĠĠĠ Ġ// ĠString Ġ-> ĠDouble ĊĠĠĠ Ġreturn Ġ( value Ġas ? ĠString )?. toDouble OrNull () Ċ } Ċ Ċ internal Ġfun Ġjson Value To Payload Value ( json Value : ĠAny ?): ĠAny ? Ġ= Ġwhen Ġ( json Value ) Ġ{ ĊĠĠĠ Ġnull , ĠJSONObject . NULL Ġ-> Ġnull ĊĠĠĠ Ġis ĠString , Ġis ĠNumber , Ġis ĠBoolean Ġ-> Ġjson Value ĊĠĠĠ Ġis ĠJSONObject Ġ-> ĠPayload Object . from JsonObject ( json Value ) ĊĠĠĠ Ġis ĠJSONArray Ġ-> ĠPayload Array . fromJson Array ( json Value ) ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . w (" WARNING : Ġunsupported ĠJSONObject Ġvalue : Ġ$ json Value !") ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġvalue To Js String ( value : ĠAny ?): ĠString Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠ Ġnull Ġ-> Ġ" null " ĊĠĠĠ Ġis ĠString Ġ-> Ġ"\" ${ escape ( value )}\ "" ĊĠĠĠ Ġis ĠNumber Ġ-> Ġ"$ value " ĊĠĠĠ Ġis ĠBoolean Ġ-> Ġ"$ value " ĊĠĠĠ Ġis ĠPayload Object Ġ-> Ġvalue . to Js String () ĊĠĠĠ Ġis ĠPayload Array Ġ-> Ġvalue . to Js String () ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException (" Unsupported Ġvalue : Ġ$ value ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġvalue ToJson String ( value : ĠAny ?): ĠString Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠ Ġnull Ġ-> Ġ" null " ĊĠĠĠ Ġis ĠString Ġ-> Ġ"\" ${ escape ( value )}\ "" ĊĠĠĠ Ġis ĠNumber Ġ-> Ġ"$ value " ĊĠĠĠ Ġis ĠBoolean Ġ-> Ġ"$ value " ĊĠĠĠ Ġis ĠPayload Object Ġ-> Ġvalue . toJson String () ĊĠĠĠ Ġis ĠPayload Array Ġ-> Ġvalue . toJson String () ĊĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠException (" Unsupported Ġvalue : Ġ$ value ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġescape ( s : ĠString ): ĠString Ġ= Ġs . replace (" \"", Ġ"\\ \" ") Ċ