package Ġcom . fasterxml . jackson . module . kotlin . test . github Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Sub Types Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeInfo Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeName Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġorg . junit . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠTest Github D atab ind 1 3 2 8 Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Pol ymorphic With Enum () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmapper Ġ= Ġj ack son ObjectMapper () ĊĠĠĠĠĠĠĠ Ġval Ġinvite Ġ= Ġmapper . readValue < Invite >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" |{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ" kind ": Ġ" CONTACT ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ" to ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ" name ": Ġ" Foo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| } """. trim Margin () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( Invite Kind . CONTACT , Ġinvite . kind ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Foo ", Ġ( invite . to Ġas ĠInv ite To Contact ). name ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġdata Ġclass ĠInv ite ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkind : ĠInv ite Kind , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Json TypeInfo ( use Ġ= ĠJson TypeInfo . Id . NAME , Ġinclude Ġ= ĠJson TypeInfo . As . EXTERNAL _ PROPERTY , Ġproperty Ġ= Ġ" kind ", Ġvisible Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Json Sub Types ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Sub Types . Type ( Invite To Contact :: class ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Sub Types . Type ( Invite To User :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto : ĠInv ite To ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinterface ĠInv ite To ĊĊĠĠĠ Ġ@ Json TypeName (" CONTACT ") ĊĠĠĠ Ġdata Ġclass ĠInv ite To Contact ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠInv ite To ĊĊĠĠĠ Ġ@ Json TypeName (" USER ") ĊĠĠĠ Ġdata Ġclass ĠInv ite To User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser : ĠString ĊĠĠĠ Ġ): ĠInv ite To ĊĊĠĠĠ Ġenum Ġclass ĠInv ite Kind Ġ{ ĊĠĠĠĠĠĠĠ ĠCONT ACT , ĊĠĠĠĠĠĠĠ ĠUSER ĊĠĠĠ Ġ} Ċ }