package Ġorg . gradle . build eng . analysis . model Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġjava . time . Instant Ċ Ċ data Ġclass ĠBuild Event ( val Ġtype : ĠBuild EventType , Ġval Ġtimestamp : ĠInstant , Ġval Ġdata : ĠJsonNode ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper Ġ= ĠObjectMapper () ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Json ( json Node : ĠJsonNode ): ĠBuild Event ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! json Node . has (" type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" WARNING : ĠExpected ĠBuild Event Ġbut Ġgot Ġ${ mapper . writeValue AsString ( json Node )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuild Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild EventType . fromJson ( mapper . convert Value ( json Node . get (" type "), ĠJsonNode :: class . java )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . of Epoch Milli ( json Node . get (" timestamp "). as Long ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . convert Value ( json Node . get (" data "), ĠJsonNode :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠBuild EventType ( val ĠeventType : ĠString , Ġval Ġmajor Version : ĠInt , Ġval Ġminor Version : ĠInt ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Json ( json Node : ĠJsonNode ) Ġ= ĠBuild EventType ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node . get (" eventType "). as Text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node . get (" major Version "). as Int (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node . get (" minor Version "). as Int ()) ĊĠĠĠ Ġ} Ċ } Ċ