package Ġcom . by but ter . sis y ph us . dto . jackson Ċ Ċ import Ġcom . by but ter . sis y ph us . dto . Dto Meta Ċ import Ġcom . fasterxml . jackson . core . Json Generator Ċ import Ġcom . fasterxml . jackson . core . Json Stream Context Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġcom . fasterxml . jackson . databind . ser . Bean Property Writer Ċ import Ġcom . fasterxml . jackson . databind . ser . impl . ObjectId Writer Ċ import Ġcom . fasterxml . jackson . databind . ser . std . Bean Serializer Base Ċ Ċ internal Ġclass ĠModel Serializer Ġ: ĠBean Serializer Base Ġ{ ĊĠĠĠ Ġconstructor ( source : ĠBean Serializer Base ) Ġ: Ġsuper ( source ) ĊĊĠĠĠ Ġconstructor ( source : ĠModel Serializer , Ġobject Id Writer : ĠObjectId Writer ) Ġ: Ġsuper ( source , Ġobject Id Writer ) ĊĊĠĠĠ Ġconstructor ( source : ĠModel Serializer , Ġto Ignore : ĠMutable Set < String >) Ġ: Ġsuper ( source , Ġto Ignore ) ĊĊĠĠĠ Ġconstructor ( source : ĠModel Serializer , Ġobject Id Writer : ĠObjectId Writer , Ġfilter Id : ĠAny ?) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġsource , ĊĠĠĠĠĠĠĠ Ġobject Id Writer , ĊĠĠĠĠĠĠĠ Ġfilter Id ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġsource : ĠModel Serializer , ĊĠĠĠĠĠĠĠ Ġproperties : ĠArray < out ĠBean Property Writer > ?, ĊĠĠĠĠĠĠĠ Ġfiltered Properties : ĠArray < out ĠBean Property Writer >? ĊĠĠĠ Ġ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġsource , ĊĠĠĠĠĠĠĠ Ġproperties , Ġfiltered Properties ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġconstructor ( source : ĠModel Serializer , Ġto Ignore : ĠMutable Set < String > ?, Ġto Include : ĠMutable Set < String > ?) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġsource , ĊĠĠĠĠĠĠĠ Ġto Ignore , ĊĠĠĠĠĠĠĠ Ġto Include ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġwith ObjectId Writer ( objectId Writer : ĠObjectId Writer ): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel Serializer ( this , Ġobject Id Writer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Ign or als ( to Ignore : ĠMutable Set < String >): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel Serializer ( this , Ġto Ignore ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith ByName In clusion ( ĊĠĠĠĠĠĠĠ Ġto Ignore : ĠMutable Set < String > ?, ĊĠĠĠĠĠĠĠ Ġto Include : ĠMutable Set < String >? ĊĠĠĠ Ġ): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel Serializer ( this , Ġto Ignore , Ġto Include ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġas Array Serializer (): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Unsupported Ġarray Ġserializer Ġfor ĠD to Model .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Properties ( ĊĠĠĠĠĠĠĠ Ġproperties : ĠArray < out ĠBean Property Writer > ?, ĊĠĠĠĠĠĠĠ Ġfiltered Properties : ĠArray < out ĠBean Property Writer >? ĊĠĠĠ Ġ): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel Serializer ( this , Ġproperties , Ġfiltered Properties ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Filter Id ( filter Id : ĠAny ?): ĠBean Serializer Base Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠModel Serializer ( this , Ġ_ objectId Writer , Ġfilter Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( bean : ĠAny , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . current Value Ġ= Ġbean ĊĊĠĠĠĠĠĠĠ Ġgen . write Start Object () ĊĠĠĠĠĠĠĠ Ġserialize Fields ( bean , Ġgen , Ġprovider ) ĊĠĠĠĠĠĠĠ Ġgen . write End Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize Fields ( bean : ĠAny , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġserialize TypeInfo ( bean , Ġgen , Ġprovider ) ĊĠĠĠĠĠĠĠ Ġsuper . serialize Fields ( bean , Ġgen , Ġprovider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize Fields Filtered ( bean : ĠAny , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġserialize TypeInfo ( bean , Ġgen , Ġprovider ) ĊĠĠĠĠĠĠĠ Ġsuper . serialize Fields Filtered ( bean , Ġgen , Ġprovider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġserialize TypeInfo ( bean : ĠAny , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . current Value Ġ= Ġbean Ġas ĠD to Meta ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠgetParent Context ( gen . output Context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġoutput Type Ġ= Ġ( context . current Value Ġas ? ĠD to Meta )?. `$ output Type ` Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( output Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString Field ("\ $ type ", Ġbean .` $ type `. typeName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetParent Context ( context : ĠJson Stream Context ): ĠJson Stream Context Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . parent ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠgetParent Context ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( root . current Value Ġ! is ĠD to Meta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġcontext ĊĠĠĠ Ġ} Ċ } Ċ