package Ġio . fal u . android . exceptions Ċ Ċ import Ġorg . json . JSONException Ċ import Ġsoftware . ting le . api . Http ApiResponse Problem Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠA Ġbase Ġclass Ġfor ĠF alu - related Ġexceptions . Ċ Ġ*/ Ċ abstract Ġclass ĠF alu Exception ( ĊĠĠĠ Ġval Ġproblem : ĠHttp ApiResponse Problem ? Ġ= Ġnull , ĊĠĠĠ Ġval ĠstatusCode : ĠInt ? Ġ= Ġ 0 , ĊĠĠĠ Ġval ĠerrorCode : ĠString ? Ġ= Ġproblem ?. code , ĊĠĠĠ Ġcause : ĠThrowable ? Ġ= Ġnull , ĊĠĠĠ Ġmessage : ĠString ? Ġ= Ġproblem ?. description Ċ ) Ġ: ĠException ( message , Ġcause ) Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( problem , ĠstatusCode , ĠerrorCode , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtyped Equals ( ex : ĠF alu Exception ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproblem Ġ== Ġex . problem Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode Ġ== Ġex . statusCode Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ== Ġex . errorCode Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ== Ġex . message ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ=== Ġother Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġis ĠF alu Exception Ġ-> Ġtyped Equals ( other ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode . let Ġ{ Ġ" Response Ġcode : Ġ$ it " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode . let Ġ{ Ġ" Error ĠCode : Ġ$ it " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . let Ġ{ Ġ"$ it " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . toString () ĊĠĠĠĠĠĠĠ Ġ). join ToString ( separator Ġ= Ġ"\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( throwable : ĠThrowable ): ĠF alu Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( throwable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF alu Exception Ġ-> Ġthrowable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠJSON Exception Ġ-> ĠAPI Exception ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIOException Ġ-> ĠAPI Connection Exception . create ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAPI Exception ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }