package Ġcom . h ml r . api . controllers Ċ Ċ import Ġcom . h ml r . api . SMS Dispatcher Ċ import Ġcom . h ml r . api . common . Vault Query Helper Consumer Ċ import Ġcom . h ml r . api . common . models .* Ċ import Ġcom . h ml r . api . key utils . Key Utils Ċ import Ġcom . h ml r . api . rpc Client . Node RPC Connection Ċ import Ġcom . h ml r . flows .* Ċ import Ġcom . h ml r . model .* Ċ import Ġcom . h ml r . states .* Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . node . services . Identity Service Ċ import Ġnet . cord a . core . utilities . logger For Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġjava . time . LocalDate ĊĊ Ċ @ Suppress (" unused ") Ċ @ RestController Ċ @ RequestMapping ("/ api ") Ċ class ĠApi Controller (@ Suppress (" Can Be Parameter ") Ġprivate Ġval Ġrpc : ĠNode RPC Connection ) Ġ: ĠVault Query Helper Consumer () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġrpc Ops Ġ= Ġrpc . proxy ĊĠĠĠ Ġoverride Ġval Ġmy Identity Ġ= Ġrpc Ops . node Info (). legal Id entities . first () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= Ġlogger For < Api Controller >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġnode 's Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ me ", Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġme () Ġ= Ġmap Of (" me " Ġto Ġmy Identity . to DTO WithName ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġall Ġparties Ġregistered Ġwith Ġthe Ġ[ Network Map Service ]. ĠThese Ġnames Ġcan Ġbe Ġused Ġto Ġlook Ġup Ġident ities ĊĠĠĠĠ Ġ* Ġusing Ġthe Ġ[ Identity Service ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ peers ", Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġpeers () Ġ= Ġmap Of (" peers " Ġto Ġrpc Ops . network Map Snapshot () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġnode Info Ġ-> Ġnode Info . legal Id entities . first () Ġ!= Ġmy Identity Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . legal Id entities . first (). to DTO WithName () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNon - common ĠD TO Ġfor Ġ[ y oti Sign in Request ]' s Ġrequest Ġbody . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠY oti Sign Request DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient _ phone _ number : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient _ full _ name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser _ callback _ url : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġa Ġcit izen Ġto Ġsign Ġinto ĠY oti ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ"/ y oti - signin - request ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsume s Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġy oti Sign in Request (@ RequestBody Ġinput : ĠY oti Sign Request DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" POST Ġ/ y oti - signin - request ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠSMS Dispatcher . send SMS Y oti Sign Request ( input . client _ phone _ number , Ġinput . client _ full _ name , Ġinput . user _ callback _ url ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ("{ \" result \": $ result }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġa Ġtitle Ġto Ġbe Ġissued Ġto Ġthe Ġledger ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ"/ titles /{ title - number }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġrequest Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString , Ġ@ RequestBody Ġinput : ĠTitle Owner DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" POST Ġ/ titles /$ title Number ") ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġtitle Ġissuer ĊĠĠĠĠĠĠĠ Ġval Ġh ml r Party Ġ= ĠX 5 0 0 Name DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganisation Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ ORG AN IS ATION ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal ity Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ LOCAL ITY ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ COUNTRY ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ STATE "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorgan is ational _ unit Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ ORG AN IS ATION AL _ UNIT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon _ name Ġ= ĠSystem . getenv (" H ML R _ PAR TY _ COMMON _ NAME ") ĊĠĠĠĠĠĠĠ Ġ). to Well Known Party () Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body (" H ML R Ġparty Ġinformation Ġis Ġinvalid .") ĊĊĠĠĠĠĠĠĠ Ġ// Get ĠH M RC Ġparty ĊĠĠĠĠĠĠĠ Ġval Ġhm rc Party Ġ= ĠX 5 0 0 Name DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganisation Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ ORG AN IS ATION ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal ity Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ LOCAL ITY ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ COUNTRY ") !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ STATE "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorgan is ational _ unit Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ ORG AN IS ATION AL _ UNIT "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon _ name Ġ= ĠSystem . getenv (" HM RC _ PAR TY _ COMMON _ NAME ") ĊĠĠĠĠĠĠĠ Ġ). to Well Known Party () Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body (" HM RC Ġparty Ġinformation Ġis Ġinvalid .") ĊĊĠĠĠĠĠĠĠ Ġ// Build Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġrequest Iss u ance State Ġ= ĠRequest Iss u ance State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh ml r Party , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhm rc Party , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Identity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . owner . to Custom Party ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation Of Identity Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= ĠKey Utils ( Key Utils . DEFAULT _ KEY _ PROPERTIES _ FILE ). read PublicKey (" seller "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Iss u ance Status . PENDING ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// start Ġflow Ġand Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Iss u ance Flow :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Iss u ance State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġtitle 's Ġsales Ġagreement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ titles /{ title - number }/ sales - agreement ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġget Sales Agreement (@ PathVariable (" title - number ") Ġtitle Number : ĠString ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" GET Ġ/ titles /$ title Number / sales - agreement ") ĊĊĠĠĠĠĠĠĠ Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġagreement State And Instant : ĠState And Instant < Land Agreement State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagreement State And Instant Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġpayment Ġset t ler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayment State And Inst ants : ĠList < State And Instant < Payment Confirmation State >> Ġ= Ġget States By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreferenced Payment State Ġ= Ġpayment State And Inst ants . first Ġ{ Ġit . state . land Agreement State Linear Id Ġ== Ġagreement State And Instant . state . linear Id . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayment Set t ler Ġ= Ġreferenced Payment State . state . set t ling Party ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Build Ġthe ĠD TO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsales Agreement DTO Ġ= Ġagreement State And Instant . state . to DTO ( payment Set t ler , Ġagreement State And Instant . instant ?. to LocalDateTime ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġthe ĠD TO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ( sales Agreement DTO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSign s Ġor Ġfinal ises Ġa Ġsales Ġagreement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Put Mapping ( value Ġ= Ġ"/ titles /{ title - number }/ sales - agreement ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsume s Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġupdate Sales Agreement (@ PathVariable (" title - number ") Ġtitle Number : ĠString , Ġ@ RequestBody Ġinput : ĠSales Agreement Sign DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" PUT Ġ/ titles /$ title Number / sales - agreement ") ĊĊĠĠĠĠĠĠĠ Ġval Ġagreement Ġ= Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġagreement State And Instant : ĠState And Instant < Land Agreement State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġagreement State And Instant ?. state Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 1 Ġif Ġun author ised ĊĠĠĠĠĠĠĠ Ġif Ġ( my Identity Ġ!= Ġagreement . buyer Convey ancer Ġ&& Ġmy Identity Ġ!= Ġagreement . seller Convey ancer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . UN AUTHORIZ ED ). build () ĊĊĠĠĠĠĠĠĠ Ġinput . sign atory Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . UN AUTHORIZ ED ). body (" Invalid Ġsign atory Ġis Ġnull !") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( my Identity . to DTO () Ġ== Ġinput . sign atory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// start Ġflow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( input . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" approve " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Ops . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppro ve Agreement Flow :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreement . linear Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sign " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input . sign atory _ individual Ġ== Ġagreement . seller . to DTO () Ġ&& Ġmy Identity Ġ== Ġagreement . seller Convey ancer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreement . sign (" seller ", Ġtitle Number , ĠS eller Sign Agreement Flow :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( input . sign atory _ individual Ġ== Ġagreement . buyer . to DTO () Ġ&& Ġmy Identity Ġ== Ġagreement . buyer Convey ancer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreement . sign (" buyer ", Ġtitle Number , ĠBu yer Sign Agreement Flow :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn ĠResponseEntity . status ( HttpStatus . UN AUTHORIZ ED ). body (" Invalid Ġsign atory _ individual .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠResponseEntity . bad Request (). body (" Invalid Ġaction .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġreturn ĠResponseEntity . status ( HttpStatus . UN AUTHORIZ ED ). body (" Invalid Ġsign atory !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSign Ġsales Ġagreement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠLand Agreement State . sign ( user : ĠString , Ġsign Message : ĠString , Ġflow : ĠClass < out ĠFlow Logic < T >> ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= ĠKey Utils ( Key Utils . DEFAULT _ KEY _ PROPERTIES _ FILE ). sign ( user , Ġsign Message ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrpc Ops . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . linear Id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDraft s Ġa Ġnew Ġsales Ġagreement ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ"/ titles /{ title - number }/ sales - agreement ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsume s Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġadd Sales Agreement To Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString , Ġ@ RequestBody Ġinput : ĠSales Agreement DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" POST Ġ/ titles /$ title Number / sales - agreement ") ĊĊĠĠĠĠĠĠĠ Ġval Ġagreement State Ġ= Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġdetails Ġof Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġland Title : ĠState And Instant < Land Title State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġland Title Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġbuy er Ġcon vey ancer Ġparty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuy er Convey ancer Party Ġ= Ġinput . buyer _ con vey ancer . to Well Known Party () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body (" Buyer Ġcon vey ancer Ġparty Ġinformation Ġis Ġinvalid .") // Get Ġbuy er Ġcon vey ancer Ġparty ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Build Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġland Title . state . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLand Agreement State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . buyer . to Custom Party ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Utils ( Key Utils . DEFAULT _ KEY _ PROPERTIES _ FILE ). read PublicKey (" buyer "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġland Title Properties . owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuy er Convey ancer Party , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Identity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . completion _ date . to Instant (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . contract _ rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Amount ( input . purchase _ price , Ġinput . purchase _ price _ currency _ code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Amount ( input . deposit , Ġinput . deposit _ currency _ code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Amount ( input . contents _ price , Ġinput . contents _ price _ currency _ code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Amount ( input . balance , Ġinput . balance _ currency _ code ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( input . gu arante e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" full " Ġ-> ĠTitle Gu arante e . FULL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" limited " Ġ-> ĠTitle Gu arante e . LIMIT ED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠResponseEntity . status ( HttpStatus . BAD _ REQUEST ). body (" Title Ġguarantee Ġis Ġinvalid .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAgreement Status . CREATED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpayment Set t ler Party Ġ= Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġpayment Ġset t ler Ġparty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . payment _ set t ler . to Well Known Party () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body (" Payment Ġset t ler Ġparty Ġinformation Ġis Ġinvalid .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDraft Agreement Flow :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreement State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreement State . buyer Convey ancer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Set t ler Party ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġrestrictions Ġon Ġa Ġtitle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ titles /{ title - number }/ re strictions ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġget Restrictions On Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ RequestParam (" type ", Ġrequired Ġ= Ġfalse ) Ġrestriction Type : ĠString ?): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" GET Ġ/ titles /$ title Number / re strictions ") ĊĊĠĠĠĠĠĠĠ Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get ĠState Ġand ĠInstant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharges And Restrictions State And Instant : ĠState And Instant < Pro posed Char ges And Restrictions State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestrictions Ġ= Ġcharges And Restrictions State And Instant . let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEither Ġreturn Ġrestrictions Ġor Ġempty Ġarray ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. state ?. re strictions Ġ?: Ġreturn ĠResponseEntity . ok (). body ( listOf < Unit >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġrestrictions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Filter Ġby Ġrestriction Ġtype Ġif Ġapplicable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( restriction Type Ġ== Ġnull ) Ġrestrictions Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestrictions . filter Ġ{ Ġrestriction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( restriction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharge Restriction Ġ-> Ġrestriction Type Ġ== ĠCharge Restriction DTO . RE STRI CTION _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ/* is ĠRe striction */ Ġ-> Ġrestriction Type Ġ== ĠRe striction DTO . RE STRI CTION _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return ĠRe strictions ĠD TO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ( re strictions . map Ġ{ Ġit . to DTO () Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġrestriction Ġto Ġthe Ġtitle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ"/ titles /{ title - number }/ re strictions ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsume s Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġadd Restrictions To Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString , Ġ@ RequestBody Ġinput : ĠRe striction DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" POST Ġ/ titles /$ title Number / re strictions ") ĊĊĠĠĠĠĠĠĠ Ġval Ġrestriction Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . to State Ġ{ Ġit . to Well Known Party () Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . status ( HttpStatus . NOT _ FOUND ). body ( e . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcharges And Restrictions State Ġ= Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġdetails Ġof Ġcharges Ġand Ġrestrictions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate And Instant : ĠState And Instant < Pro posed Char ges And Restrictions State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate And Instant Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate And Instant . state ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd New Charge Flow :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharges And Restrictions State . linear Id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( restriction ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of < Charge >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġcharge Ġon Ġa Ġtitle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ titles /{ title - number }/ charges ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġget Char ges On Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" GET Ġ/ titles /$ title Number / charges ") ĊĊĠĠĠĠĠĠĠ Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get ĠState Ġand ĠInstant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharges And Restrictions State And Instant : ĠState And Instant < Pro posed Char ges And Restrictions State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġempty Ġarray Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharges And Restrictions State And Instant Ġ?: Ġreturn ĠResponseEntity . ok (). body ( listOf < Unit >()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġcharges And Restrictions State And Instant . state ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharges Ġ= Ġstate . charges . toSet () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . re strictions . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Charge Restriction >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . charge Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Build Ġthe ĠD TO s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharges DTO Ġ= Ġcharges . map Ġ{ Ġit . to DTO () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġthe ĠD TO s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ( charges DTO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġdis charge ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Put Mapping ( value Ġ= Ġ"/ titles /{ title - number }/ charges ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsume s Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġupdate Char ges (@ PathVariable (" title - number ") Ġtitle Number : ĠString , Ġ@ RequestBody Ġinput : ĠChar ges Update DTO ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" PUT Ġ/ titles /$ title Number / charges ") ĊĊĠĠĠĠĠĠĠ Ġval Ġland Title Ġ= Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Get Ġdetails Ġof Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġland Title : ĠState And Instant < Land Title State >? Ġ= ĠgetState By Ġ{ Ġit . state . data . title ID Ġ== Ġtitle Number Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġland Title Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( input . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" request _ dis charge " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Entity From Flow Handle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Flow Dynamic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest For Dis charge Flow :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġland Title . state . linear Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠResponseEntity . status ( HttpStatus . NOT _ IMPLEMENTED ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġall Ġtitles ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ titles ", Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġget Titles (): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" GET Ġ/ titles ") ĊĊĠĠĠĠĠĠĠ Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Build ĠTitle ĠTransfer ĠD TO s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Transfer DTO Ġ= Ġbuild Title Transfer DTO s () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return ĠTitle ĠTransfer ĠD TO s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ( title Transfer DTO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġtitle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ"/ titles /{ title - number }", Ġproduces Ġ= ĠarrayOf ( MediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠ Ġfun Ġget Title (@ PathVariable (" title - number ") Ġtitle Number : ĠString ): ĠResponseEntity < Any ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" GET Ġ/ titles /$ title Number ") ĊĊĠĠĠĠĠĠĠ Ġvault Query Helper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Build ĠTitle ĠTransfer ĠD TO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Transfer DTO Ġ= Ġbuild Title Transfer DTO ( title Number ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return Ġ 4 0 4 Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Transfer DTO Ġ?: Ġreturn ĠResponseEntity . not Found (). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Return ĠTitle ĠTransfer ĠD TO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity . ok (). body ( title Transfer DTO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ