package Ġim . actor . bots . framework . persistence Ċ Ċ import Ġakka . util . Timeout Ċ import Ġcom . fasterxml . jackson . module . kotlin .* Ċ import Ġshard akka . key value . Simple KeyValue Java Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ fun Ġ< T > ĠServer KeyValue . setData Class ( key : ĠString , Ġobj : ĠT ?) Ġ{ ĊĠĠĠ Ġif Ġ( obj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset StringValue ( key , Ġnull ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= Ġj ack son ObjectMapper (). get Factory (). create Generator ( output ) ĊĠĠĠĠĠĠĠ Ġgenerator . write Object ( obj ) ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= ĠString ( output . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġset StringValue ( key , Ġstr ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT : ĠAny > ĠServer KeyValue . getData Class ( key : ĠString ): ĠT ? Ġ{ ĊĠĠĠ Ġval Ġstr Ġ= Ġget StringValue ( key ) ĊĠĠĠ Ġif Ġ( str Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġj ack son ObjectMapper (). readValue < T >( str ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T > ĠSimple KeyValue Java < T >. get ( key : ĠString ): ĠT ? Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġsync Get ( key , ĠTimeout . apply ( 1 0 , ĠTimeUnit . SECONDS )) ĊĠĠĠ Ġif Ġ( res . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġres . get () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }