package Ġgl u cos ense . org Ċ Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . Json Reader Ċ import Ġcom . squareup . mos hi . Json Writer Ċ import Ġcom . squareup . mos hi . M oshi Ċ // import Ġtim ber . log . Tim ber Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . reflect . Type Ċ Ċ class ĠDefault On Data Mismatch Adapter < T > Ġprivate Ġconstructor ( private Ġval Ġdelegate : ĠJson Adapter < T >, Ġprivate Ġval ĠdefaultValue : ĠT ?) Ġ: ĠJson Adapter < T >() Ġ{ ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġfrom Json ( reader : ĠJson Reader ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . fromJson Value ( reader . read JsonValue ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Tim ber . w (" Wrong ful Ġcontent Ġ- Ġcould Ġnot Ġparse Ġdelegate Ġ" Ġ+ Ġdelegate . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun ĠtoJson ( writer : ĠJson Writer , Ġvalue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelegate . toJson ( writer , Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġ< T > Ġnew Factory ( type : ĠClass < T >, ĠdefaultValue : ĠT ?): ĠJson Adapter . Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠJson Adapter . Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate ( requested Type : ĠType , Ġannotations : ĠSet < Annotation >, Ġm oshi : ĠM oshi ): ĠJson Adapter < *> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ!= Ġrequested Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġm oshi . next Adapter < T >( this , Ġtype , Ġannotations ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDefault On Data Mismatch Adapter ( delegate , ĠdefaultValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }