/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 - 2 0 1 9 ĠHERE ĠEurope ĠB . V . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* ĠLicense - Filename : ĠLICENSE Ċ Ġ*/ Ċ Ċ package Ġorg . oss review toolkit . model Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Generator Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Deserialize Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Serialize Ċ import Ġcom . fasterxml . jackson . databind . de ser . std . Std Deserializer Ċ import Ġcom . fasterxml . jackson . databind . ser . std . Std Serializer Ċ Ċ import Ġorg . oss review toolkit . utils . log Ċ import Ġorg . oss review toolkit . utils . normalize Line Break s Ċ Ċ import Ġjava . time . Instant Ċ Ċ /** Ċ Ġ* ĠAn Ġissue Ġthat Ġoccurred Ġwhile Ġexecuting ĠOR T . Ċ Ġ*/ Ċ @ Json Deserialize ( using Ġ= ĠO rt Issue Deserializer :: class ) Ċ @ Json Serialize ( using Ġ= ĠO rt Issue Serializer :: class ) Ċ data Ġclass ĠO rt Issue ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtimestamp Ġof Ġthe Ġissue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtimestamp : ĠInstant Ġ= ĠInstant . now (), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġdescription Ġof Ġthe Ġissue Ġsource , Ġe . g . Ġthe Ġtool Ġthat Ġcaused Ġthe Ġissue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsource : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġissue 's Ġmessage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmessage : ĠString , ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġissue 's Ġseverity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġseverity : ĠSeverity Ġ= ĠSeverity . ERROR Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġif Ġ( timestamp Ġ== ĠInstant . EPOCH ) Ġ" Unknown Ġtime " Ġelse Ġtimestamp . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ time Ġ[$ severity ]: Ġ$ source Ġ- Ġ$ message " ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠO rt Issue Deserializer Ġ: ĠStd Deserializer < Or t Issue >( Or t Issue :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠO rt Issue Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġp . codec . read Tree < JsonNode >( p ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( node . has (" severity ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO rt Issue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . parse ( node . get (" timestamp "). text Value ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġnode . get (" source "). text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġnode . get (" message "). text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseverity Ġ= ĠSeverity . valueOf ( node . get (" severity "). text Value ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO rt Issue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . parse ( node . get (" timestamp "). text Value ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġnode . get (" source "). text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġnode . get (" message "). text Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠO rt Issue Serializer Ġ: ĠStd Serializer < Or t Issue >( Or t Issue :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠO rt Issue , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . write Start Object () ĊĠĠĠĠĠĠĠ Ġgen . write Object Field (" timestamp ", Ġvalue . timestamp ) ĊĠĠĠĠĠĠĠ Ġgen . writeString Field (" source ", Ġvalue . source ) ĊĠĠĠĠĠĠĠ Ġgen . writeString Field (" message ", Ġvalue . message . normalize Line Break s ()) ĊĠĠĠĠĠĠĠ Ġgen . writeString Field (" severity ", Ġvalue . severity . name ) ĊĠĠĠĠĠĠĠ Ġgen . write End Object () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġan Ġ[ Or t Issue ] Ġand Ġ[ log ] Ġthe Ġmessage . ĠThe Ġlog Ġlevel Ġis Ġaligned Ġwith Ġthe Ġ[ severity ]. Ċ Ġ*/ Ċ fun ĠAny . create And Log Issue ( source : ĠString , Ġmessage : ĠString , Ġseverity : ĠSeverity Ġ= ĠSeverity . ERROR ): ĠO rt Issue Ġ{ ĊĠĠĠ Ġlog . log ( severity . to Log 4 j Level (), Ġmessage ) ĊĠĠĠ Ġreturn ĠO rt Issue ( source Ġ= Ġsource , Ġmessage Ġ= Ġmessage , Ġseverity Ġ= Ġseverity ) Ċ } Ċ