/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . amazon . opend ist ro fore lastic search . commons . notifications . model Ċ Ċ import Ġcom . amazon . opend ist ro fore lastic search . commons . utils . logger Ċ import Ġcom . amazon . opend ist ro fore lastic search . commons . utils . string List Ċ import Ġcom . amazon . opend ist ro fore lastic search . commons . utils . valueOf Ċ import Ġorg . elasticsearch . common . Strings Ċ import Ġorg . elasticsearch . common . io . stream . Stream Input Ċ import Ġorg . elasticsearch . common . io . stream . Stream Output Ċ import Ġorg . elasticsearch . common . io . stream . Write able Ċ import Ġorg . elasticsearch . common . x content . To X Content Ċ import Ġorg . elasticsearch . common . x content . X Content Builder Ċ import Ġorg . elasticsearch . common . x content . X Content Parser Ċ import Ġorg . elasticsearch . common . x content . X Content Parser Utils Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠData Ġclass Ġrepresenting ĠNotification . Ċ Ġ*/ Ċ data Ġclass ĠNotification Info ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġreference Id : ĠString , ĊĠĠĠ Ġval Ġfeature : ĠFeature , ĊĠĠĠ Ġval Ġseverity : ĠSeverity Type Ġ= ĠSeverity Type . Info , ĊĠĠĠ Ġval Ġtags : ĠList < String > Ġ= ĠlistOf () Ċ ) Ġ: ĠBase Model Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire (! Strings . isNull OrEmpty ( title )) Ġ{ Ġ" name Ġis Ġnull Ġor Ġempty " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġby Ġlogger ( Notification Info :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTITLE _ TAG Ġ= Ġ" title " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREFER ENCE _ ID _ TAG Ġ= Ġ" reference Id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFEATURE _ TAG Ġ= Ġ" feature " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSE VER ITY _ TAG Ġ= Ġ" severity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG S _ TAG Ġ= Ġ" tags " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġreader Ġto Ġcreate Ġinstance Ġof Ġclass Ġfrom Ġwritable . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠWrite able . Reader Ġ{ ĠNotification Info ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreator Ġused Ġin ĠREST Ġcommunication . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparser ĠX Content Parser Ġto Ġdeserialize Ġdata Ġfrom . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( parser : ĠX Content Parser ): ĠNotification Info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreference Id : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfeature : ĠFeature ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġseverity : ĠSeverity Type Ġ= ĠSeverity Type . Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtags : ĠList < String > Ġ= Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠX Content Parser Utils . ensure Expected Token ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX Content Parser . Token . START _ OBJECT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser . current Token (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( parser . nextToken () Ġ!= ĠX Content Parser . Token . END _ OBJECT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfieldName Ġ= Ġparser . current Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser . nextToken () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fieldName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTITLE _ TAG Ġ-> Ġtitle Ġ= Ġparser . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREFER ENCE _ ID _ TAG Ġ-> Ġreference Id Ġ= Ġparser . text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFEATURE _ TAG Ġ-> Ġfeature Ġ= Ġvalue Of ( parser . text (), ĠFeature . None , Ġlog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSE VER ITY _ TAG Ġ-> Ġseverity Ġ= Ġvalue Of ( parser . text (), ĠSeverity Type . None , Ġlog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG S _ TAG Ġ-> Ġtags Ġ= Ġparser . string List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparser . skip Children () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Unexpected Ġfield : Ġ$ fieldName , Ġwhile Ġparsing ĠNotification Info ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ?: Ġthrow ĠIllegalArgumentException ("$ TITLE _ TAG Ġfield Ġabsent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreference Id Ġ?: Ġthrow ĠIllegalArgumentException ("$ REFERENCE _ ID _ TAG Ġfield Ġabsent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Ġ?: Ġthrow ĠIllegalArgumentException ("$ FEATURE _ TAG Ġfield Ġabsent ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNotification Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreference Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseverity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġused Ġin Ġtransport Ġaction Ġcommunication . ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠStream Input Ġstream Ġto Ġdeserialize Ġdata Ġfrom . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( input : ĠStream Input ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġinput . readString (), ĊĠĠĠĠĠĠĠ Ġreference Id Ġ= Ġinput . readString (), ĊĠĠĠĠĠĠĠ Ġfeature Ġ= Ġinput . read Enum ( Feature :: class . java ), ĊĠĠĠĠĠĠĠ Ġseverity Ġ= Ġinput . read Enum ( Severity Type :: class . java ), ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġinput . readString List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( output : ĠStream Output ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutput . writeString ( title ) ĊĠĠĠĠĠĠĠ Ġoutput . writeString ( reference Id ) ĊĠĠĠĠĠĠĠ Ġoutput . write Enum ( feature ) ĊĠĠĠĠĠĠĠ Ġoutput . write Enum ( severity ) ĊĠĠĠĠĠĠĠ Ġoutput . writeString Collection ( tags ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto X Content ( builder : ĠX Content Builder ?, Ġparams : ĠTo X Content . Params ?): ĠX Content Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder !! ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . start Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. field ( TITLE _ TAG , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. field ( REFERENCE _ ID _ TAG , Ġreference Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. field ( FEATURE _ TAG , Ġfeature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. field ( SEVER ITY _ TAG , Ġseverity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. field ( TAGS _ TAG , Ġtags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. end Object () ĊĠĠĠ Ġ} Ċ } Ċ