package Ġnet . cord a . serialization . internal . amqp Ċ Ċ import Ġnet . cord a . core . serialization . Class Whitelist Ċ import Ġnet . cord a . core . serialization . C ord a Serializable Ċ import Ġnet . cord a . core . serialization . Serialized Bytes Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . Test Serialization Output Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . deserialize Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . deserialize And Return Envelope Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . serialize And Return Schema Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . test Default Factory No E volution Ċ import Ġnet . cord a . serialization . internal . amqp . test utils . test Name Ċ import Ġnet . cord a . serialization . internal . car p enter . Class C arp enter Impl Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . Test Ċ import Ġjava . io . Not Serializable Exception Ċ import Ġjava . time . DayOfWeek Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ Ċ class ĠEnum Tests Ġ{ ĊĠĠĠ Ġenum Ġclass ĠBr as Ġ{ ĊĠĠĠĠĠĠĠ ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠBR AL ET TE , ĠSTR AP LESS , ĠS PORTS , ĠBACK LESS , ĠPAD DED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ C ord a Serializable ĊĠĠĠ Ġenum Ġclass ĠAnnot ated Br as Ġ{ ĊĠĠĠĠĠĠĠ ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠBR AL ET TE , ĠSTR AP LESS , ĠS PORTS , ĠBACK LESS , ĠPAD DED ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġstate Ġof Ġthe ĠOld Br as Ġenum Ġwhen Ġthe Ġtests Ġin Ġchanged Enum 1 Ġwere Ġserial ised ĊĠĠĠ Ġ// ĠĠĠĠĠ Ġ- Ġuse Ġif Ġthe Ġtest Ġfile Ġneeds Ġre generating ĊĠĠĠ Ġ// enum Ġclass ĠOld Br as Ġ{ ĊĠĠĠ Ġ// ĠĠĠ ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠBR AL ET TE ĊĠĠĠ Ġ//} ĊĊĠĠĠ Ġ// Ġthe Ġnew Ġstate , ĠSP AC ER Ġhas Ġbeen Ġadded Ġto Ġchange Ġthe Ġord inality ĊĠĠĠ Ġenum Ġclass ĠOld Br as Ġ{ ĊĠĠĠĠĠĠĠ ĠSP AC ER , ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠBR AL ET TE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġstate Ġof Ġthe ĠOld Br as 2 Ġenum Ġwhen Ġthe Ġtests Ġin Ġchanged Enum 2 Ġwere Ġserial ised ĊĠĠĠ Ġ// ĠĠĠĠĠ Ġ- Ġuse Ġif Ġthe Ġtest Ġfile Ġneeds Ġre generating ĊĠĠĠ Ġ// enum Ġclass ĠOld Br as 2 Ġ{ ĊĠĠĠ Ġ// ĠĠĠ ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠBR AL ET TE ĊĠĠĠ Ġ//} ĊĊĠĠĠ Ġ// Ġthe Ġnew Ġstate , Ġnote Ġin Ġthe Ġtest Ġwe Ġserial ised Ġwith Ġvalue ĠUN DER WI RE Ġso Ġthe Ġsp acer ĊĠĠĠ Ġ// Ġoccur ring Ġafter Ġthis Ġwon 't Ġhave Ġchanged Ġthe Ġord inality Ġof Ġour Ġserial ised Ġvalue ĊĠĠĠ Ġ// Ġand Ġthus Ġshould Ġstill Ġbe Ġde serial izable ĊĠĠĠ Ġenum Ġclass ĠOld Br as 2 Ġ{ ĊĠĠĠĠĠĠĠ ĠT SH IRT , ĠUN DER WI RE , ĠP USH UP , ĠSP AC ER , ĠBR AL ET TE , ĠSP AC ER 2 ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġenum Ġclass ĠBr as With Init ( val Ġsome List : ĠList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ ĠT SH IRT ( emptyList ()), ĊĠĠĠĠĠĠĠ ĠUN DER WI RE ( listOf ( 1 , Ġ 2 , Ġ 3 )), ĊĠĠĠĠĠĠĠ ĠP USH UP ( listOf ( 1 0 0 , Ġ 2 0 0 )), ĊĠĠĠĠĠĠĠ ĠBR AL ET TE ( emptyList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbr as Test Name Ġ= Ġ"${ this . java Class . name }\ $ Br as " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto Ġsee Ġthe Ġschema Ġencoded Ġinto Ġthe Ġenvelope Ġafter Ġserial isation Ġchange Ġthis Ġto Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠVERBOSE Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ") ĊĠĠĠ Ġprivate Ġinline Ġfun Ġclass Test Name ( clazz : ĠString ) Ġ= Ġ"${ this . java Class . name }\ $ ${ test Name () }\ $$ clazz " ĊĊĠĠĠ Ġprivate Ġval Ġsf 1 Ġ= Ġtest Default Factory No E volution () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġserial ise Simple Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as ) ĊĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠTest Serialization Output ( VERBOSE , Ġsf 1 ). serialize And Return Schema ( C ( Br as . UNDER WI RE )). schema ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġschema . types . size ) ĊĠĠĠĠĠĠĠ Ġval Ġschema _ c Ġ= Ġschema . types . find Ġ{ Ġit . name Ġ== Ġclass Test Name (" C ") Ġ} Ġas ĠComposite Type ĊĠĠĠĠĠĠĠ Ġval Ġschema _ br as Ġ= Ġschema . types . find Ġ{ Ġit . name Ġ== Ġbr as Test Name Ġ} Ġas ĠRe stricted Type ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( schema _ c ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( schema _ br as ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġschema _ c . fields . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" c ", Ġschema _ c . fields . first (). name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( br as Test Name , Ġschema _ c . fields . first (). type ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġschema _ br as . choices . size ) ĊĠĠĠĠĠĠĠ ĠBr as . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ra Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( schema _ br as . choices . find Ġ{ Ġit . name Ġ== Ġb ra . name Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġde serial ise Simple Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as ) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj And Envelope Ġ= ĠDeserial ization Input ( sf 1 ). deserialize And Return Envelope ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Serialization Output ( VERBOSE , Ġsf 1 ). serialize ( C ( Br as . UNDER WI RE ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġobj And Envelope . obj ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= Ġobj And Envelope . envelope . schema ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġschema . types . size ) ĊĠĠĠĠĠĠĠ Ġval Ġschema _ c Ġ= Ġschema . types . find Ġ{ Ġit . name Ġ== Ġclass Test Name (" C ") Ġ} Ġas ĠComposite Type ĊĠĠĠĠĠĠĠ Ġval Ġschema _ br as Ġ= Ġschema . types . find Ġ{ Ġit . name Ġ== Ġbr as Test Name Ġ} Ġas ĠRe stricted Type ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġschema _ c . fields . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" c ", Ġschema _ c . fields . first (). name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( br as Test Name , Ġschema _ c . fields . first (). type ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġschema _ br as . choices . size ) ĊĠĠĠĠĠĠĠ ĠBr as . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ra Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( schema _ br as . choices . find Ġ{ Ġit . name Ġ== Ġb ra . name Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġthe Ġactual Ġde serial ised Ġobject ĊĠĠĠĠĠĠĠ ĠassertEquals ( obj . c , ĠBr as . UNDER WI RE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmulti Enum () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSupport ( val Ġtop : ĠBr as , Ġval Ġday : ĠDay OfWeek ) ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠWeek ly Support ( val Ġto ps : ĠList < Support >) ĊĊĠĠĠĠĠĠĠ Ġval Ġweek Ġ= ĠWeek ly Support ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSupport ( Br as . PUSH UP , ĠDay OfWeek . MON DAY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSupport ( Br as . UNDER WI RE , ĠDay OfWeek . W ED N ES DAY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSupport ( Br as . PAD DED , ĠDay OfWeek . S UND AY ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠDeserial ization Input ( sf 1 ). deserialize ( Test Serialization Output ( VERBOSE , Ġsf 1 ). serialize ( week )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 0 ]. top , Ġobj . tops [ 0 ]. top ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 0 ]. day , Ġobj . tops [ 0 ]. day ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 1 ]. top , Ġobj . tops [ 1 ]. top ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 1 ]. day , Ġobj . tops [ 1 ]. day ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 2 ]. top , Ġobj . tops [ 2 ]. top ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( week . tops [ 2 ]. day , Ġobj . tops [ 2 ]. day ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenum With Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as With Init ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠC ( Br as With Init . PUSH UP ) ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠDeserial ization Input ( sf 1 ). deserialize ( Test Serialization Output ( VERBOSE , Ġsf 1 ). serialize ( c )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( c . c , Ġobj . c ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠNot Serializable Exception :: class ) ĊĠĠĠ Ġfun Ġchanged Enum 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠEnum Tests :: class . java . getResource (" Enum Tests . changed Enum 1 ") ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġa : ĠOld Br as ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOriginal Ġversion Ġof Ġthe Ġclass Ġfor Ġthe Ġserial ised Ġversion Ġof Ġthis Ġclass ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġa Ġ= ĠOld Br as . T SH IRT ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġsc Ġ= ĠSerialization Output ( sf 1 ). serialize ( C ( a )) ĊĠĠĠĠĠĠĠ Ġ// Ġf . write Bytes ( sc . bytes ) ĊĠĠĠĠĠĠĠ Ġ// Ġprintln ( path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsc 2 Ġ= Ġurl . read Bytes () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġexpect Ġthis Ġto Ġthrow ĊĠĠĠĠĠĠĠ ĠDeserial ization Input ( sf 1 ). deserialize ( Serialized Bytes < C >( sc 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠNot Serializable Exception :: class ) ĊĠĠĠ Ġfun Ġchanged Enum 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠEnum Tests :: class . java . getResource (" Enum Tests . changed Enum 2 ") ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġa : ĠOld Br as 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDO ĠNOT ĠCHANGE ĠTHIS , Ġit 's Ġimportant Ġwe Ġserial ise Ġwith Ġa Ġvalue Ġthat Ġdoesn 't ĊĠĠĠĠĠĠĠ Ġ// Ġchange Ġposition Ġin Ġthe Ġup ated Ġenum Ġclass ĊĊĠĠĠĠĠĠĠ Ġ// ĠOriginal Ġversion Ġof Ġthe Ġclass Ġfor Ġthe Ġserial ised Ġversion Ġof Ġthis Ġclass ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġa Ġ= ĠOld Br as 2 . UNDER WI RE ĊĠĠĠĠĠĠĠ Ġ// Ġval Ġsc Ġ= ĠSerialization Output ( sf 1 ). serialize ( C ( a )) ĊĠĠĠĠĠĠĠ Ġ// Ġf . write Bytes ( sc . bytes ) ĊĠĠĠĠĠĠĠ Ġ// Ġprintln ( path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsc 2 Ġ= Ġurl . read Bytes () ĊĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġexpect Ġthis Ġto Ġthrow ĊĠĠĠĠĠĠĠ ĠDeserial ization Input ( sf 1 ). deserialize ( Serialized Bytes < C >( sc 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenum Not Wh itelisted Fails () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as ) ĊĊĠĠĠĠĠĠĠ Ġclass ĠW L ( val Ġallowed : ĠString ) Ġ: ĠClass Whitelist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas List ed ( type : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype . name Ġ== Ġallowed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwhitelist Ġ= ĠW L ( class Test Name (" C ")) ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠSerializer Factory Builder . build ( whitelist , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass C arp enter Impl ( whitelist , ĠClassLoader . getSystem ClassLoader ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat Thrown By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Serialization Output ( VERBOSE , Ġfactory ). serialize ( C ( Br as . UNDER WI RE )) ĊĠĠĠĠĠĠĠ Ġ}. isInstanceOf ( Not Serializable Exception :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenum Wh itelisted () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as ) ĊĊĠĠĠĠĠĠĠ Ġclass ĠW L Ġ: ĠClass Whitelist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas List ed ( type : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtype . name Ġ== Ġ" net . cord a . serialization . internal . amqp . Enum Tests \$ enum Wh itelisted \$ C " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . name Ġ== Ġ" net . cord a . serialization . internal . amqp . Enum Tests \$ Br as " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwhitelist Ġ= ĠW L () ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠSerializer Factory Builder . build ( whitelist , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass C arp enter Impl ( whitelist , ĠClassLoader . getSystem ClassLoader ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġif Ġit Ġall Ġworks , Ġthis Ġwon 't Ġexplode ĊĠĠĠĠĠĠĠ ĠTest Serialization Output ( VERBOSE , Ġfactory ). serialize ( C ( Br as . UNDER WI RE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġenum Annotated () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ C ord a Serializable Ġdata Ġclass ĠC ( val Ġc : ĠAnnot ated Br as ) ĊĊĠĠĠĠĠĠĠ Ġclass ĠW L Ġ: ĠClass Whitelist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas List ed ( type : ĠClass <* >) Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwhitelist Ġ= ĠW L () ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠSerializer Factory Builder . build ( whitelist , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass C arp enter Impl ( whitelist , ĠClassLoader . getSystem ClassLoader ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġif Ġit Ġall Ġworks , Ġthis Ġwon 't Ġexplode ĊĠĠĠĠĠĠĠ ĠTest Serialization Output ( VERBOSE , Ġfactory ). serialize ( C ( Annotated Br as . UNDER WI RE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdeserialize Non Wh it listed Enum () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠC ( val Ġc : ĠBr as ) ĊĊĠĠĠĠĠĠĠ Ġclass ĠW L ( val Ġallowed : ĠList < String >) Ġ: ĠClass Whitelist Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas List ed ( type : ĠClass <* >) Ġ= Ġtype . name Ġin Ġallowed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġfirst Ġserial ise Ġthe Ġclass Ġusing Ġa Ġcontext Ġin Ġwhich ĠBr as Ġare Ġwh itelisted ĊĠĠĠĠĠĠĠ Ġval Ġwhitelist Ġ= ĠW L ( listOf ( class Test Name (" C "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" net . cord a . serialization . internal . amqp . Enum Tests \$ Br as ")) ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠSerializer Factory Builder . build ( whitelist , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass C arp enter Impl ( whitelist , ĠClassLoader . getSystem ClassLoader ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠTest Serialization Output ( VERBOSE , Ġfactory ). serialize ( C ( Br as . UNDER WI RE )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġthen Ġtake Ġthat Ġserial ised Ġobject Ġand Ġattempt Ġto Ġdeserialize Ġit Ġin Ġa Ġcontext Ġthat ĊĠĠĠĠĠĠĠ Ġ// Ġdis allows Ġthe ĠBr as Ġenum ĊĠĠĠĠĠĠĠ Ġval Ġwhitelist 1 Ġ= ĠW L ( listOf ( class Test Name (" C "))) ĊĠĠĠĠĠĠĠ Ġval Ġfactory 2 Ġ= ĠSerializer Factory Builder . build ( whitelist 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass C arp enter Impl ( whitelist 1 , ĠClassLoader . getSystem ClassLoader ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat Thrown By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeserial ization Input ( factory 2 ). deserialize ( bytes ) ĊĠĠĠĠĠĠĠ Ġ}. isInstanceOf ( Not Serializable Exception :: class . java ) ĊĠĠĠ Ġ} Ċ }