/* Ċ * ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠN ST DA Ċ * ĠĠ ĠNational ĠScience Ġand ĠTechnology ĠDevelopment ĠAg ency , ĠTh ail and Ċ * Ċ * Ġ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 Ġn std a . h ii . web service . app Ċ Ċ import Ġcom . fat boy ind ustrial . gson jav atime .* Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjak arta . ws . rs . BadRequest Exception Ċ import Ġjak arta . ws . rs . Cons umes Ċ import Ġjak arta . ws . rs . Produces Ċ import Ġjak arta . ws . rs . Web ApplicationException Ċ import Ġjak arta . ws . rs . core . MediaType Ċ import Ġjak arta . ws . rs . core . Mult ival ued Map Ċ import Ġjak arta . ws . rs . ext . Message Body Reader Ċ import Ġjak arta . ws . rs . ext . Message Body Writer Ċ import Ġjak arta . ws . rs . ext . Provider Ċ import Ġn std a . h ii . web service . app . Gson J ersey Provider . Companion . h ii Gson Ċ import Ġn std a . h ii . web service . getLogger Ċ import Ġjava . io .* Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . time .* Ċ Ċ /** Ċ Ġ* Ġ à¸ķ à¸± à¹ī à¸ĩ à¸Ħ à¹Ī à¸²à¸ ķ à¸± à¸§ à¹ģ à¸Ľ à¸¥ à¸ĩ ĠObject Ġ à¸Ĺ à¸µà¹Ī à¹ĥ à¸Ĭ à¹ī à¸£à¸° à¸« à¸§ à¹Ī à¸²à¸ĩ à¸ģà¸²à¸£ à¸ª à¹Ī à¸ĩ à¸Ĥ à¹ī à¸Ń à¸¡ à¸¹ à¸¥ à¹Ħ à¸Ľ ĠClient Ġ à¹ĥ à¸« à¹ī à¸ģ à¸¥ à¸²à¸¢ à¹Ģ à¸Ľ à¹ĩ à¸Ļ ĠJSON Ċ Ġ*/ Ċ @ Provider Ċ @ Produces ( MediaType . APPLICATION _ JSON , Ġ" application / vnd . geo + json ") Ċ @ Cons umes ( MediaType . APPLICATION _ JSON , Ġ" application / vnd . geo + json ") Ċ class ĠGson J ersey Provider Ġ: ĠMessage Body Writer < Any >, ĠMessage Body Reader < Any > Ġ{ ĊĠĠĠ Ġval Ġlogger Ġ= Ġget Logger () ĊĠĠĠ Ġoverride Ġfun Ġis Readable ( ĊĠĠĠĠĠĠĠ Ġtype : ĠClass < *> ?, ĊĠĠĠĠĠĠĠ Ġgeneric Type : ĠType ?, ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < out ĠAnnotation > ?, ĊĠĠĠĠĠĠĠ Ġmedia Type : ĠMediaType ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġread From ( ĊĠĠĠĠĠĠĠ Ġtype : ĠClass < Any >, ĊĠĠĠĠĠĠĠ Ġgeneric Type : ĠType , ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠ Ġmedia Type : ĠMediaType , ĊĠĠĠĠĠĠĠ Ġhttp Headers : ĠMult ival ued Map < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġentity Stream : ĠInputStream ĊĠĠĠ Ġ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInputStreamReader ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Stream , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUTF _ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġh ii Gson . fromJson < Any >( it , Ġgeneric Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : Ġjava . lang . Number FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Json Ġerror Ġ${ ex . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror mess Ġ= ĠBadRequest Exception (" JSON Ġerror Ġ${ ex . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror mess . stack Trace Ġ= Ġex . stack Trace ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġerror mess ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġcom . google . gson . Json Syntax Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġexception ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Write able ( ĊĠĠĠĠĠĠĠ Ġtype : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġgeneric Type : ĠType , ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠ Ġmedia Type : ĠMediaType ĊĠĠĠ Ġ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget Size ( ĊĠĠĠĠĠĠĠ Ġ` object `: ĠAny , ĊĠĠĠĠĠĠĠ Ġtype : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġgeneric Type : ĠType , ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠ Ġmedia Type : ĠMediaType ĊĠĠĠ Ġ): ĠLong Ġ= Ġ- 1 ĊĊĠĠĠ Ġ@ Throws ( IOException :: class , ĠWeb ApplicationException :: class ) ĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( ĊĠĠĠĠĠĠĠ Ġ` object `: ĠAny , ĊĠĠĠĠĠĠĠ Ġtype : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġgeneric Type : ĠType , ĊĠĠĠĠĠĠĠ Ġannotations : ĠArray < Annotation >, ĊĠĠĠĠĠĠĠ Ġmedia Type : ĠMediaType , ĊĠĠĠĠĠĠĠ Ġhttp Headers : ĠMult ival ued Map < String , ĠAny >, ĊĠĠĠĠĠĠĠ Ġentity Stream : ĠOutputStream ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOutputStream Writer ( entity Stream , ĠUTF _ 8 ). use Ġ{ Ġwriter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh ii Gson . toJson (` object `, Ġgeneric Type , Ġwriter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠUTF _ 8 Ġ= Ġ" UTF - 8 " ĊĠĠĠĠĠĠĠ Ġval Ġh ii Gson : ĠGson Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGson Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < LocalDate >( LocalDate Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < LocalDateTime >( LocalDateTime Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < Local Time >( Local Time Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < Offset DateTime >( Offset DateTime Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < Offset Time >( Offset Time Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < Z onedDateTime >( Z onedDateTime Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. adapter For < Instant >( Instant Converter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġinline Ġfun Ġ< re ified ĠT > ĠGson Builder . adapter For ( adapter : ĠAny ): ĠGson Builder Ġ{ ĊĠĠĠ Ġreturn Ġregister Type Adapter ( type Token Of < T >(), Ġadapter ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > Ġtype Token Of (): ĠType Ġ= Ġobject Ġ: ĠType Token < T >() Ġ{} . type Ċ Ċ fun ĠAny . toJson (): ĠString Ġ= Ġh ii Gson . toJson ( this ) Ċ