package Ġorg . gener ous g . fr u ity lib . serial izable Ċ Ċ import Ġorg . gener ous g . fr u ity lib . reflect . Constructor Access Ċ import Ġorg . gener ous g . fr u ity lib . util . io . I StreamReader Ċ import Ġorg . gener ous g . fr u ity lib . util . io . I Stream Serializer Ċ import Ġjava . io . Data Input Ċ import Ġjava . io . Data Output ĊĊ Ċ class ĠSerializer Adapters Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġcreate From Factory ( factory : ĠI Instance Factory < T >): ĠI Stream Serializer < T > Ġwhere ĠT Ġ: ĠI Stream Readable , ĠT : I Stream Writable Ġ= Ġobject Ġ: ĠI Stream Serializer < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread From Stream ( input : ĠData Input ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġfactory . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance . read From Stream ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo Stream ( o : ĠT , Ġoutput : ĠData Output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo . writeTo Stream ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġ< T : ĠI Stream Writable > Ġcreate From Reader ( reader : ĠI StreamReader < T >): ĠI Stream Serializer < T > Ġ= Ġobject Ġ: ĠI Stream Serializer < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread From Stream ( input : ĠData Input ): ĠT Ġ= Ġreader . read From Stream ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo Stream ( o : ĠT , Ġoutput : ĠData Output ) Ġ= Ġo . writeTo Stream ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġcreate From Object Serializer ( factory : ĠI Instance Factory < T >, Ġserializer : ĠI Object Serializer < T >): ĠI Stream Serializer < T > Ġ= Ġobject Ġ: ĠI Stream Serializer < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread From Stream ( input : ĠData Input ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġfactory . create () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer . read From Stream ( obj , Ġinput ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo Stream ( o : ĠT , Ġoutput : ĠData Output ) Ġ= Ġserializer . writeTo Stream ( o , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġcreate From Object Serializer ( cls : ĠClass < out ĠT >, Ġserializer : ĠI Object Serializer < T >): ĠI Stream Serializer < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠConstructor Access . create ( cls ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate From Object Serializer ( factory , Ġserializer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }