@ file : Jvm Name (" Adapters ") Ċ Ċ package Ġcom . ap ol log raph ql . apollo 3 . api Ċ Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . internal . json . Map Json Reader . Companion . buffer Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . internal . json . Map Json Writer Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . internal . json . Utils Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . internal . json . Utils . read Re cursively Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . json . Json Reader Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . json . Json Writer Ċ import Ġkotlin . jvm . Jvm Field Ċ import Ġkotlin . jvm . Jvm Name Ċ import Ġkotlin . jvm . Jvm Suppress W ild cards Ċ import Ġkotlin . native . concurrent . Shared Immutable Ċ Ċ /** Ċ Ġ* ĠThis Ġfile Ġcontains Ġa Ġlist Ġof Ġ[ Adapter ] Ġfor Ġstandard Ġtypes Ċ Ġ* Ċ Ġ* ĠThey Ġare Ġmostly Ġused Ġfrom Ġthe Ġgenerated Ġcode Ġbut Ġcould Ġbe Ġuseful Ġin Ġany Ġother Ġsituations Ġthat Ġrequires Ġad ap ting Ġfrom Ċ Ġ* ĠGraphQL Ġto ĠKotlin . Ċ Ġ* ĠIn Ġparticular , Ġ[ Any Adapter ] Ġcan Ġbe Ġused Ġto Ġread / write Ġa ĠKotlin Ġrepresentation Ġfrom / to ĠJson . Ċ Ġ*/ Ċ class ĠList Adapter < T >( private Ġval Ġwrapped Adapter : ĠAdapter < T >) Ġ: ĠAdapter < List < @ Jvm Suppress W ild cards ĠT >> Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠList < T > Ġ{ ĊĠĠĠ Ġreader . begin Array () ĊĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < T >() ĊĠĠĠ Ġwhile Ġ( reader . hasNext ()) Ġ{ ĊĠĠĠĠĠ Ġlist . add ( wrapped Adapter . fromJson ( reader , Ġcustom Scalar Adapters )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreader . end Array () ĊĠĠĠ Ġreturn Ġlist ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠList < T >) Ġ{ ĊĠĠĠ Ġwriter . begin Array () ĊĠĠĠ Ġvalue . forEach Ġ{ ĊĠĠĠĠĠ Ġwrapped Adapter . toJson ( writer , Ġcustom Scalar Adapters , Ġit ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwriter . end Array () ĊĠ Ġ} Ċ } Ċ Ċ class ĠNullable Adapter < T Ġ: ĠAny >( private Ġval Ġwrapped Adapter : ĠAdapter < T >) Ġ: ĠAdapter < @ Jvm Suppress W ild cards ĠT ?> Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġcheck ( wrapped Adapter Ġ! is ĠNullable Adapter <* >) Ġ{ ĊĠĠĠĠĠ Ġ" The Ġadapter Ġis Ġalready Ġnullable " ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠT ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( reader . peek () Ġ== ĠJson Reader . Token . NULL ) Ġ{ ĊĠĠĠĠĠ Ġreader . skip Value () ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġwrapped Adapter . fromJson ( reader , Ġcustom Scalar Adapters ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠT ?) Ġ{ ĊĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġwriter . null Value () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġwrapped Adapter . toJson ( writer , Ġcustom Scalar Adapters , Ġvalue ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠResponse Adapters Ġcan Ġonly Ġexpress Ġsomething Ġthat 's Ġpresent . ĠAbs ent Ġvalues Ġare Ġhandled Ġoutside Ġof Ġthe Ġadapter Ċ Ġ*/ Ċ class ĠOptional Adapter < T >( private Ġval Ġwrapped Adapter : ĠAdapter < T >) Ġ: ĠAdapter < Optional . Present < @ Jvm Suppress W ild cards ĠT >> Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠOptional . Present < T > Ġ{ ĊĠĠĠ Ġreturn ĠOptional . Present ( wrapped Adapter . fromJson ( reader , Ġcustom Scalar Adapters )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠOptional . Present < T >) Ġ{ ĊĠĠĠ Ġwrapped Adapter . toJson ( writer , Ġcustom Scalar Adapters , Ġvalue . value ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠString Adapter Ġ: ĠAdapter < String > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġreader . next String () !! ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠString ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠInt Adapter Ġ: ĠAdapter < Int > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġreader . nextInt () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠDouble Adapter Ġ: ĠAdapter < Double > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġreader . next Double () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠDouble ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Adapter ] Ġthat Ġconverts Ġto / from Ġa Ġ[ Long ] Ċ Ġ* Ċ Ġ* ĠIf Ġthe ĠJson Ġnumber Ġdoes Ġnot Ġfit Ġin Ġa Ġ[ Long ], Ġan Ġexception Ġwill Ġbe Ġthrown Ċ Ġ*/ Ċ object ĠLong Adapter : ĠAdapter < Long > Ġ Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġreader . next Long () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠLong ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠBoolean Adapter Ġ: ĠAdapter < Boolean > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġreader . next Boolean () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠAny Adapter Ġ: ĠAdapter < Any > Ġ{ ĊĠ Ġfun Ġfrom Json ( reader : ĠJson Reader ): ĠAny Ġ{ ĊĠĠĠ Ġreturn Ġreader . read Re cursively () !! ĊĠ Ġ} ĊĊĠ Ġfun ĠtoJson ( writer : ĠJson Writer , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠ ĠUtils . write ToJson ( value , Ġwriter ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠAny Ġ{ ĊĠĠĠ Ġreturn Ġfrom Json ( reader ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠAny ) Ġ{ ĊĠĠĠ ĠtoJson ( writer , Ġvalue ) ĊĠ Ġ} Ċ } Ċ Ċ object ĠUpload Adapter Ġ: ĠAdapter < Upload > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠUpload Ġ{ ĊĠĠĠ Ġerror (" File ĠUpload Ġused Ġin Ġoutput Ġposition ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠUpload ) Ġ{ ĊĠĠĠ Ġwriter . value ( value ) ĊĠ Ġ} Ċ } Ċ Ċ class ĠObject Adapter < T >( ĊĠĠĠ Ġprivate Ġval Ġwrapped Adapter : ĠAdapter < T >, ĊĠĠĠ Ġprivate Ġval Ġbuffered : ĠBoolean , Ċ ) Ġ: ĠAdapter < @ Jvm Suppress W ild cards ĠT > Ġ{ ĊĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters ): ĠT Ġ{ ĊĠĠĠ Ġval Ġactual Reader Ġ= Ġif Ġ( buffered ) Ġ{ ĊĠĠĠĠĠ Ġreader . buffer () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġreader ĊĠĠĠ Ġ} ĊĠĠĠ Ġactual Reader . begin Object () ĊĠĠĠ Ġreturn Ġwrapped Adapter . fromJson ( actual Reader , Ġcustom Scalar Adapters ). also Ġ{ ĊĠĠĠĠĠ Ġactual Reader . end Object () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , Ġvalue : ĠT ) Ġ{ ĊĠĠĠ Ġif Ġ( buffered Ġ&& Ġwriter Ġ! is ĠMap Json Writer ) Ġ{ ĊĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠ Ġ* ĠConvert Ġto Ġa ĠMap Ġfirst ĊĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠ Ġval Ġmap Writer Ġ= ĠMap Json Writer () ĊĠĠĠĠĠ Ġmap Writer . begin Object () ĊĠĠĠĠĠ Ġwrapped Adapter . toJson ( map Writer , Ġcustom Scalar Adapters , Ġvalue ) ĊĠĠĠĠĠ Ġmap Writer . end Object () ĊĊĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠ Ġ* ĠAnd Ġwrite Ġto Ġthe Ġoriginal Ġwriter ĊĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠ ĠUtils . write ToJson ( map Writer . root () !! , Ġwriter ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġwriter . begin Object () ĊĠĠĠĠĠ Ġwrapped Adapter . toJson ( writer , Ġcustom Scalar Adapters , Ġvalue ) ĊĠĠĠĠĠ Ġwriter . end Object () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠAdapter < T >. nullable () Ġ= ĠNullable Adapter ( this ) Ċ fun Ġ< T > ĠAdapter < T >. list () Ġ= ĠList Adapter ( this ) Ċ fun Ġ< T > ĠAdapter < T >. obj ( buffered : ĠBoolean Ġ= Ġfalse ) Ġ= ĠObject Adapter ( this , Ġbuffered ) Ċ fun Ġ< T > ĠAdapter < T >. optional () Ġ= ĠOptional Adapter ( this ) Ċ Ċ /** Ċ Ġ* ĠGlobal Ġinstances Ġof Ġnullable Ġadapters Ġfor Ġbuilt - in Ġscalar Ġtypes Ċ Ġ*/ Ċ @ Shared Immutable Ċ @ Jvm Field Ċ val ĠNullable String Adapter Ġ= ĠString Adapter . nullable () Ċ @ Shared Immutable Ċ @ Jvm Field Ċ val ĠNullable Double Adapter Ġ= ĠDouble Adapter . nullable () Ċ @ Shared Immutable Ċ @ Jvm Field Ċ val ĠNullable Int Adapter Ġ= ĠInt Adapter . nullable () Ċ @ Shared Immutable Ċ @ Jvm Field Ċ val ĠNullable Boolean Adapter Ġ= ĠBoolean Adapter . nullable () Ċ @ Shared Immutable Ċ @ Jvm Field Ċ val ĠNullable Any Adapter Ġ= ĠAny Adapter . nullable () ĊĊ