package Ġy t . jav i . spring . examples . spring events . user . domain . services . user . register Ċ Ċ import Ġy t . jav i . spring . examples . spring events . user . domain . ActionEvent Ċ import Ġy t . jav i . spring . examples . spring events . user . domain . model . user . User Ċ import Ġy t . jav i . spring . examples . spring events . user . domain . model . user . User Event Ċ import Ġy t . jav i . spring . examples . spring events . user . domain . model . user . User Event Publisher Ċ import Ġy t . jav i . spring . examples . spring events . user . domain . model . user . UserRepository Ċ Ċ data Ġclass ĠRegister UserRequest ( val Ġusername : ĠString , Ġval Ġemail : ĠString ) Ċ Ċ class ĠRegister UserService ( private Ġval Ġrepository : ĠUser Repository , Ġprivate Ġval Ġevent Publisher : ĠUser Event Publisher ) Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( request : ĠRegister UserRequest ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġrequest . username , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġrequest . email ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrepository . save ( user ) ĊĠĠĠĠĠĠĠ Ġevent Publisher . publish Event ( user . to Event ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠUser . to Event () Ġ= ĠUser Event ( ĊĠĠĠĠĠĠĠ ĠuserId Ġ= ĠuserId . toString (), ĊĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername . toString (), ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail . toString (), ĊĠĠĠĠĠĠĠ Ġaction Ġ= ĠAction Event . CREATE ĊĠĠĠ Ġ) Ċ }