package Ġcom . ref erral . api čĊč Ċ import Ġcom . ref erral . contract . Ref erral Contract č Ċ import Ġcom . ref erral . contract . Ref erral State č Ċ import Ġcom . ref erral . model . Ref erral č Ċ import Ġcom . ref erral . flow . Ref erral Flow č Ċ import Ġcom . ref erral . flow . Ref erral Flow Result č Ċ import Ġcom . ref erral . logic . Com mission Evaluator č Ċ import Ġcom . ref erral . model . Deal Criteria č Ċ import Ġcom . ref erral . model . Ref erral Status č Ċ import Ġnet . cord a . core . contracts . State And Ref č Ċ import Ġnet . cord a . core . node . Service Hub č Ċ import Ġnet . cord a . core . node . services . linear Head s OfType č Ċ import Ġjavax . ws . rs .* č Ċ import Ġjavax . ws . rs . core . MediaType č Ċ import Ġjavax . ws . rs . core . Response čĊčĊč Ċ // ĠThis ĠAPI Ġis Ġaccessible Ġfrom Ġ/ api / example . ĠAll Ġpaths Ġspecified Ġbelow Ġare Ġrelative Ġto Ġit . č Ċ @ Path (" ref erral ") č Ċ class ĠRef erral Api ( val Ġservices : ĠService Hub ) Ġ{ čĊĠĠĠ Ġval Ġme : ĠString Ġ= Ġservices . my Info . legal Identity . name čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġparty Ġname Ġof Ġthe Ġnode Ġproviding Ġthis Ġend - point . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ GET čĊĠĠĠ Ġ@ Path (" me ") čĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ JSON ) čĊĠĠĠ Ġfun Ġwho ami () Ġ= Ġmap Of (" me " Ġto Ġme ) čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠReturns Ġall Ġparties Ġregistered Ġwith Ġthe Ġ[ Network Map Service ], Ġthe Ġnames Ġcan Ġbe Ġused Ġto Ġlook - up Ġident ities čĊĠĠĠĠ Ġ* Ġby Ġusing Ġthe Ġ[ Identity Service ]. čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ GET čĊĠĠĠ Ġ@ Path (" peers ") čĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ JSON ) čĊĠĠĠ Ġfun Ġget Peers () Ġ= Ġmap Of (" peers " Ġto Ġservices . network Map Cache . party Nodes čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . legal Identity . name Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġme Ġ&& Ġit Ġ!= Ġ" Controller " Ġ}) čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDisplays Ġall Ġpurchase Ġorder Ġstates Ġthat Ġexist Ġin Ġthe Ġvault . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ GET čĊĠĠĠ Ġ@ Path ("") čĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ JSON ) čĊĠĠĠ Ġfun Ġget Ref err als (@ QueryParam (" status ") Ġstatus Ġ: ĠString ?): ĠList < Ref erral > Ġ{ čĊĠĠĠĠĠĠĠ Ġif ( status Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values . map Ġ{ Ġit Ġ-> Ġit . state . data . ref erral Ġ}. toList () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values . filter Ġ{ Ġit . state . data . ref erral . status . name . equals ( status ) Ġ}. map Ġ{ Ġit Ġ-> Ġit . state . data . ref erral Ġ}. toList () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDisplays Ġall Ġpurchase Ġorder Ġstates Ġthat Ġexist Ġin Ġthe Ġvault . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ GET čĊĠĠĠ Ġ@ Path ("{ ref erral Id }") čĊĠĠĠ Ġ@ Produces ( MediaType . APPLICATION _ JSON ) čĊĠĠĠ Ġfun Ġget Ref erral (@ Path Param (" ref erral Id ") Ġref erral Id Ġ: ĠString ): ĠRef erral ? Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġmatching Ref erral Ġ: ĠState And Ref < Ref erral State >? Ġ Ġ= Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values . find Ġ{ Ġit . state . data . ref erral . ref erral Id . equals ( ref erral Id ) Ġ} čĊĠĠĠĠĠĠĠ Ġif ( matching Ref erral Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmatching Ref erral . state . data . ref erral čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġnull čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠThis Ġshould Ġonly Ġbe Ġcalled Ġfrom Ġthe Ġ' buyer ' Ġnode . ĠIt Ġiniti ates Ġa Ġflow Ġto Ġagree Ġa Ġref erral Ġwith Ġa čĊĠĠĠĠ Ġ* Ġpartner . ĠOnce Ġthe Ġflow Ġfinishes Ġit Ġwill Ġhave Ġwritten Ġthe Ġref erral Ġto Ġledger . ĠBoth Ġthe Ġbuy er Ġand Ġthe čĊĠĠĠĠ Ġ* Ġsell er Ġwill Ġbe Ġable Ġto Ġsee Ġit Ġwhen Ġcalling Ġ/ api / ref erral / ref err als Ġon Ġtheir Ġrespective Ġnodes . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* ĠThis Ġend - point Ġtakes Ġa ĠParty Ġname Ġparameter Ġas Ġpart Ġof Ġthe Ġpath . ĠIf Ġthe Ġserving Ġnode Ġcan 't Ġfind Ġthe Ġother Ġparty čĊĠĠĠĠ Ġ* Ġin Ġits Ġnetwork Ġmap Ġcache , Ġit Ġwill Ġreturn Ġan ĠHTTP Ġbad Ġrequest . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* ĠThe Ġflow Ġis Ġinvoked Ġasynchronously . ĠIt Ġreturns Ġa Ġfuture Ġwhen Ġthe Ġflow 's Ġcall () Ġmethod Ġreturns . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġ@ POST čĊĠĠĠ Ġ@ Path ("{ party }") čĊĠĠĠ Ġfun Ġcreate Ref erral ( ref erral : ĠRef erral , Ġ@ Path Param (" party ") Ġparty Name : ĠString ): ĠResponse Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġother Party Ġ= Ġservices . identity Service . party FromName ( party Name ) čĊĠĠĠĠĠĠĠ Ġif Ġ( other Party Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠRef erral State ( ref erral , Ġservices . my Info . legal Identity , Ġother Party , ĠRef erral Contract ()) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġline Ġbelow Ġblocks Ġand Ġwaits Ġfor Ġthe Ġfuture Ġto Ġresolve . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠRef erral Flow Result Ġ= Ġservices . invoke Flow Async ( Ref erral Flow . Init iator :: class . java , Ġstate , Ġother Party ). result Future . get () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Success Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . CREATED ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Failure Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . BAD _ REQUEST ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . status ( Response . Status . BAD _ REQUEST ). build () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ PUT čĊĠĠĠ Ġ@ Path ("{ ref erral Id }/{ deal Criteria }/{ party }") čĊĠĠĠ Ġfun Ġref erral Customer Appro ves (@ Path Param (" ref erral Id ") Ġref erral Id : ĠString , Ġ@ Path Param (" deal Criteria ") Ġdeal Criteria : ĠDe al Criteria , Ġ@ Path Param (" party ") Ġparty Name : ĠString ): ĠResponse Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġother Party Ġ= Ġservices . identity Service . party FromName ( party Name ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġstates And References Ġ: ĠCollection < State And Ref < Ref erral State >> Ġ= Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values čĊĠĠĠĠĠĠĠ Ġval Ġstate And Ref Ġ= Ġstates And References . find Ġ{ Ġit . state . data . ref . equals ( ref erral Id ) Ġ} čĊčĊĠĠĠĠĠĠĠ Ġvar Ġref erral State Ġ: ĠRef erral State ? Ġ= Ġstate And Ref ?. state ?. data čĊčĊĠĠĠĠĠĠĠ Ġref erral State ?. ref erral ?. status Ġ= ĠRef erral Status . CLOSED čĊĠĠĠĠĠĠĠ Ġref erral State ?. ref erral ?. deal Criteria Ġ= Ġdeal Criteria čĊčĊĠĠĠĠĠĠĠ Ġref erral State ?. ref erral ?. comp ensation Ġ= ĠCom mission Evaluator . determine Comp ensation ( ref erral State ?. ref erral ?. deal Criteria , Ġref erral State ?. ref erral ?. customer Size ) čĊčĊĠĠĠĠĠĠĠ Ġif ( other Party Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġline Ġbelow Ġblocks Ġand Ġwaits Ġfor Ġthe Ġfuture Ġto Ġresolve . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠRef erral Flow Result Ġ= Ġservices . invoke Flow Async ( Ref erral Flow . Init iator :: class . java , Ġref erral State , Ġother Party ). result Future . get () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Success Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . CREATED ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Failure Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . BAD _ REQUEST ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . status ( Response . Status . BAD _ REQUEST ). build () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ DELETE čĊĠĠĠ Ġ@ Path ("{ ref erral Id }/{ party }") čĊĠĠĠ Ġfun Ġref erral Customer Decl ined (@ Path Param (" ref erral Id ") Ġref erral Id : ĠString , Ġ@ Path Param (" party ") Ġparty Name : ĠString ): ĠResponse Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġother Party Ġ= Ġservices . identity Service . party FromName ( party Name ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġstates And References Ġ: ĠCollection < State And Ref < Ref erral State >> Ġ= Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values čĊĠĠĠĠĠĠĠ Ġval Ġstate And Ref Ġ= Ġstates And References . find Ġ{ Ġit . state . data . ref . equals ( ref erral Id ) Ġ} čĊčĊĠĠĠĠĠĠĠ Ġvar Ġref erral State Ġ: ĠRef erral State ? Ġ= Ġstate And Ref ?. state ?. data čĊčĊĠĠĠĠĠĠĠ Ġref erral State ?. ref erral ?. status Ġ= ĠRef erral Status . DECL IN ED čĊčĊĠĠĠĠĠĠĠ Ġif ( other Party Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġline Ġbelow Ġblocks Ġand Ġwaits Ġfor Ġthe Ġfuture Ġto Ġresolve . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠRef erral Flow Result Ġ= Ġservices . invoke Flow Async ( Ref erral Flow . Init iator :: class . java , Ġref erral State , Ġother Party ). result Future . get () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Success Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . CREATED ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Failure Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . BAD _ REQUEST ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . status ( Response . Status . BAD _ REQUEST ). build () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ PUT čĊĠĠĠ Ġ@ Path ("{ ref erral Id }/{ party }") čĊĠĠĠ Ġfun Ġref erral Customer Accepted (@ Path Param (" ref erral Id ") Ġref erral Id : ĠString , Ġ@ Path Param (" party ") Ġparty Name : ĠString ): ĠResponse Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġother Party Ġ= Ġservices . identity Service . party FromName ( party Name ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġstates And References Ġ: ĠCollection < State And Ref < Ref erral State >> Ġ= Ġservices . vault Service . linear Head s OfType < Ref erral State >(). values čĊĠĠĠĠĠĠĠ Ġval Ġstate And Ref Ġ= Ġstates And References . find Ġ{ Ġit . state . data . ref . equals ( ref erral Id ) Ġ} čĊčĊĠĠĠĠĠĠĠ Ġvar Ġref erral State Ġ: ĠRef erral State ? Ġ= Ġstate And Ref ?. state ?. data čĊčĊĠĠĠĠĠĠĠ Ġref erral State ?. ref erral ?. status Ġ= ĠRef erral Status . PENDING čĊčĊĠĠĠĠĠĠĠ Ġif ( other Party Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġline Ġbelow Ġblocks Ġand Ġwaits Ġfor Ġthe Ġfuture Ġto Ġresolve . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult : ĠRef erral Flow Result Ġ= Ġservices . invoke Flow Async ( Ref erral Flow . Init iator :: class . java , Ġref erral State , Ġother Party ). result Future . get () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Success Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . CREATED ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRef erral Flow Result . Failure Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. status ( Response . Status . BAD _ REQUEST ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. entity ( result . message ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResponse . status ( Response . Status . BAD _ REQUEST ). build () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ } čĊ