package Ġorg . z up z up . scroll ing demo . web . controller Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonInclude Ċ import Ġmu . K Logging Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestParam Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġorg . z up z up . scroll ing demo . web . data . User Ċ import Ġorg . z up z up . scroll ing demo . web . service . UserService Ċ import Ġjava . lang . RuntimeException Ċ Ċ @ JsonInclude ( JsonInclude . Include . NON _ NULL ) Ċ class ĠResult Data < out ĠT >( ĊĠĠĠ Ġval Ġdata : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġerror : ĠError DTO ? Ġ= Ġnull Ċ ) Ċ Ċ class ĠError DTO ( ĊĠĠĠ Ġval Ġmessage : ĠString Ċ ) Ċ Ċ data Ġclass ĠUser Scrolling DTO ( ĊĠĠĠĠĠĠĠ Ġval Ġscroll Param : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġusers : ĠList < User > Ċ ) Ċ Ċ fun Ġ< T > Ġcreate Success ( res : ĠT ): ĠResponseEntity < Result Data < T >> Ġ= ĊĠĠĠĠĠĠĠ ĠResponseEntity . ok ( Result Data ( res )) Ċ Ċ fun Ġ< T > Ġcreate Error ( errorMessage : ĠString ): ĠResponseEntity < Result Data < T >> Ġ= ĊĠĠĠĠĠĠĠ ĠResponseEntity . bad Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON _ UTF 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Result Data ( error Ġ= ĠError DTO ( message Ġ= ĠerrorMessage ))) Ċ Ċ class ĠUser Scroll Param NotFound In Cache Exception ( scroll Param : ĠString ): ĠRuntimeException ( ĊĠĠĠĠĠĠĠ Ġ" Unable Ġto Ġfind Ġscroll Param Ġ$ scroll Param Ġin Ġcache " Ċ ) Ċ Ċ @ RestController Ċ @ RequestMapping (" rest / v 1 / user ") Ċ class ĠScroll ing Controller ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠuserService : ĠUserService Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () ĊĊĠĠĠ Ġ@ GetMapping ("/ scroll ") ĊĠĠĠ Ġfun Ġlist Users ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam ( name Ġ= Ġ" scroll Param ", Ġrequired Ġ= Ġfalse ) Ġscroll Param : ĠString ? ĊĠĠĠ Ġ): ĠResponseEntity < Result Data < User Scrolling DTO >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠuserService . scroll Users ( scroll Param ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Success ( User Scrolling DTO ( scroll Param Ġ= Ġresult . scroll Param , Ġusers Ġ= Ġresult . users )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUser Scroll Param NotFound In Cache Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Error (" You Ġmust Ġprovide Ġan Ġactive Ġscroll Param , Ġthe Ġscroll Param Ġ`$ scroll Param ` Ġdoes Ġnot Ġexist ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }