package Ġcom . example 1 . customers Ċ Ċ import Ġcom . example 1 . core . customer . Customer Event Ċ import Ġcom . example 1 . core . customer . customer Json Ċ import Ġio . github . cr ab zilla . core . DOMAIN _ EVENT _ SERIAL IZER Ċ import Ġio . mic ronaut . context . annotation . Context Ċ import Ġio . vertx . core . Abstract Vert icle Ċ import Ġio . vertx . core . Future Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . util . UUID Ċ import Ġjavax . inject . Named Ċ Ċ @ Context Ċ class ĠCustomer Project or Vert icle (@ Named (" sc y lla - style ") Ġprivate Ġval Ġrepo : ĠCustomer Write Dao ) Ġ: ĠAbstract Vert icle () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( Customer Project or Vert icle :: class . java ) ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEND POINT Ġ= Ġ" customer . projection " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġvert x . event Bus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. consumer < JsonObject >( ENDPOINT ) Ġ{ Ġmsg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġas Json Ġ= Ġmsg . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaggregate Id Ġ= ĠUUID . fromString ( as Json . getString (" aggregate Id ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġuse Ġcache Ġfor Ġide mpot ency Ġval Ġevent Id Ġ= Ġas Json . getLong (" eventId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent As Json Ġ= Ġas Json . get JsonObject (" event As j Json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ( aggregate Id , Ġevent As Json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Failure Ġ{ Ġmsg . fail ( 5 0 0 , Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġmsg . reply ( true )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlog . info (" Started Ġon Ġendpoint Ġ[$ ENDPOINT ]") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproject ( id : ĠUUID , Ġevent As Json : ĠJsonObject ): ĠFuture < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġcustomer Json . decode FromString ( DOMAIN _ EVENT _ SERIAL IZER , Ġevent As Json . toString ()) Ġas ĠCustomer Event ĊĠĠĠĠĠĠĠ Ġ// Ġif Ġ( log . isDebugEnabled ) Ġlog . debug (" Will Ġproject Ġevent Ġ$ event Ġto Ġread Ġmodel ") ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCustomer Event . Customer Registered Ġ-> Ġrepo . upsert ( id , Ġevent . name , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCustomer Event . Customer Activated Ġ-> Ġrepo . update Status ( id , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCustomer Event . Customer De activated Ġ-> Ġrepo . update Status ( id , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }