package Ġdk . l und og b ends en . demo . z plit ter . rest . resources Ċ Ċ import Ġdk . l und og b ends en . demo . z plit ter . dao . Person Repository Ċ import Ġdk . l und og b ends en . demo . z plit ter . model . Event Ċ import Ġdk . l und og b ends en . demo . z plit ter . model . Person Ċ import Ġdk . l und og b ends en . demo . z plit ter . rest . dto . Event Dto Ċ import Ġdk . l und og b ends en . demo . z plit ter . rest . dto . Person Dto Ċ import Ġdk . l und og b ends en . demo . z plit ter . rest . model . Event Model Ċ import Ġdk . l und og b ends en . demo . z plit ter . rest . model . Person Model Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . h ate o as . Link Ċ import Ġorg . springframework . h ate o as . server . mvc . Web Mvc Link Builder . link To Ċ import Ġorg . springframework . h ate o as . server . mvc . Web Mvc Link Builder . method On Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġorg . springframework . web . bind . annotation .* ĊĊ Ċ @ RestController Ċ @ RequestMapping (" api / persons ") Ċ open Ġclass ĠPers ons Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġrepo : ĠPerson Repository ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġ@ GetMapping ("/ { id }", Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ]) ĊĠĠĠ Ġopen Ġfun Ġfind ById (@ PathVariable (" id ") Ġid : ĠLong ): ĠResponseEntity < Person Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġrepo . findById ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! obj . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity < Person Model >( HttpStatus . NOT _ FOUND ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= Ġrepo . findById ( id ). get () ĊĊĠĠĠĠĠĠĠ Ġval Ġperson Model Ġ= ĠPerson Model ( person . id , Ġperson . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( person . id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink To Self Ġ= Ġlink To ( method On ( Pers ons :: class . java ). findById ( person . id )). with Self Rel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Model . add ( link To Self ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity < Person Model >( person Model , ĠHttpStatus . OK ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġ@ GetMapping ( pro duces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ]) ĊĠĠĠ Ġfun Ġlist (): ĠList < Person Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġrepo . findAll () ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . map Ġ{ Ġit Ġ-> Ġget Person Model ( it ?. id Ġ?: Ġ 0 , Ġit ?. name Ġ?: Ġ" n / a ") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġ@ PostMapping ( consume s Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ], Ġproduces Ġ= Ġ[ MediaType . APPLICATION _ JSON _ VALUE ]) ĊĠĠĠ Ġfun Ġcreate (@ RequestBody Ġperson : ĠPerson Dto ): ĠResponseEntity < Person Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( person . id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( HttpStatus . EXPECT ATION _ FAILED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsaved Ġ= Ġrepo . save ( Person ( null , Ġperson . name )) ĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( Person Model ( saved ), ĠHttpStatus . CREATED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Person Model ( id : ĠLong , Ġname : ĠString ): ĠPerson Model Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġperson Model Ġ= ĠPerson Model ( id , Ġname ) ĊĠĠĠĠĠĠĠ Ġval Ġlink To Self Ġ= Ġlink To ( method On ( Pers ons :: class . java ). findById ( id )). with Self Rel () ĊĠĠĠĠĠĠĠ Ġperson Model . add ( link To Self ) ĊĠĠĠĠĠĠĠ Ġreturn Ġperson Model ĊĠĠĠ Ġ} Ċ } ĊĊĊĊ