33
44package com .example .accounts .services ;
55
6- import static org . eclipse . microprofile . lra .annotation . ws . rs .LRA .LRA_HTTP_CONTEXT_HEADER ;
7- import static org . eclipse . microprofile . lra .annotation . ws . rs .LRA .LRA_HTTP_ENDED_CONTEXT_HEADER ;
8- import static org . eclipse . microprofile . lra .annotation . ws . rs .LRA .LRA_HTTP_PARENT_CONTEXT_HEADER ;
6+ import static com . oracle . microtx . springboot . lra .annotation .LRA .LRA_HTTP_CONTEXT_HEADER ;
7+ import static com . oracle . microtx . springboot . lra .annotation .LRA .LRA_HTTP_ENDED_CONTEXT_HEADER ;
8+ import static com . oracle . microtx . springboot . lra .annotation .LRA .LRA_HTTP_PARENT_CONTEXT_HEADER ;
99
10- import jakarta .enterprise .context .RequestScoped ;
11- import jakarta .ws .rs .Consumes ;
12- import jakarta .ws .rs .GET ;
13- import jakarta .ws .rs .HeaderParam ;
14- import jakarta .ws .rs .POST ;
15- import jakarta .ws .rs .PUT ;
16- import jakarta .ws .rs .Path ;
17- import jakarta .ws .rs .Produces ;
18- import jakarta .ws .rs .QueryParam ;
19- import jakarta .ws .rs .core .MediaType ;
20- import jakarta .ws .rs .core .Response ;
21- import lombok .extern .slf4j .Slf4j ;
22-
23- import org .eclipse .microprofile .lra .annotation .AfterLRA ;
24- import org .eclipse .microprofile .lra .annotation .Compensate ;
25- import org .eclipse .microprofile .lra .annotation .Complete ;
26- import org .eclipse .microprofile .lra .annotation .ParticipantStatus ;
27- import org .eclipse .microprofile .lra .annotation .Status ;
28- import org .eclipse .microprofile .lra .annotation .ws .rs .LRA ;
29- import org .springframework .stereotype .Component ;
10+ import org .springframework .http .ResponseEntity ;
11+ import org .springframework .web .bind .annotation .GetMapping ;
12+ import org .springframework .web .bind .annotation .PostMapping ;
13+ import org .springframework .web .bind .annotation .PutMapping ;
14+ import org .springframework .web .bind .annotation .RequestHeader ;
15+ import org .springframework .web .bind .annotation .RequestMapping ;
16+ import org .springframework .web .bind .annotation .RequestParam ;
17+ import org .springframework .web .bind .annotation .RestController ;
3018
3119import com .example .accounts .model .Account ;
3220import com .example .accounts .model .Journal ;
21+ import com .oracle .microtx .springboot .lra .annotation .AfterLRA ;
22+ import com .oracle .microtx .springboot .lra .annotation .Compensate ;
23+ import com .oracle .microtx .springboot .lra .annotation .Complete ;
24+ import com .oracle .microtx .springboot .lra .annotation .LRA ;
25+ import com .oracle .microtx .springboot .lra .annotation .ParticipantStatus ;
26+ import com .oracle .microtx .springboot .lra .annotation .Status ;
27+
28+ import lombok .extern .slf4j .Slf4j ;
3329
34- @ RequestScoped
35- @ Path ("/deposit" )
36- @ Component
30+ @ RestController
31+ @ RequestMapping ("/deposit" )
3732@ Slf4j
3833public class DepositService {
3934
@@ -43,13 +38,11 @@ public class DepositService {
4338 * Write journal entry re deposit amount.
4439 * Do not increase actual bank account amount
4540 */
46- @ POST
47- @ Path ("/deposit" )
48- @ Produces (MediaType .APPLICATION_JSON )
41+ @ PostMapping
4942 @ LRA (value = LRA .Type .MANDATORY , end = false )
50- public Response deposit (@ HeaderParam (LRA_HTTP_CONTEXT_HEADER ) String lraId ,
51- @ QueryParam ("accountId" ) long accountId ,
52- @ QueryParam ("amount" ) long depositAmount ) {
43+ public ResponseEntity < String > deposit (@ RequestHeader (LRA_HTTP_CONTEXT_HEADER ) String lraId ,
44+ @ RequestParam ("accountId" ) long accountId ,
45+ @ RequestParam ("amount" ) long depositAmount ) {
5346 log .info ("...deposit " + depositAmount + " in account:" + accountId +
5447 " (lraId:" + lraId + ") finished (in pending state)" );
5548 Account account = AccountTransferDAO .instance ().getAccountForAccountId (accountId );
@@ -64,7 +57,7 @@ public Response deposit(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
6457 AccountTransferDAO .getStatusString (ParticipantStatus .Active )
6558 )
6659 );
67- return Response .ok ("deposit failed: account does not exist" ). build ( );
60+ return ResponseEntity .ok ("deposit failed: account does not exist" );
6861 }
6962 AccountTransferDAO .instance ().saveJournal (
7063 new Journal (
@@ -75,18 +68,16 @@ public Response deposit(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
7568 AccountTransferDAO .getStatusString (ParticipantStatus .Active )
7669 )
7770 );
78- return Response .ok ("deposit succeeded" ). build ( );
71+ return ResponseEntity .ok ("deposit succeeded" );
7972 }
8073
8174 /**
8275 * Increase balance amount as recorded in journal during deposit call.
8376 * Update LRA state to ParticipantStatus.Completed.
8477 */
85- @ PUT
86- @ Path ("/complete" )
87- @ Produces (MediaType .APPLICATION_JSON )
78+ @ PutMapping ("/complete" )
8879 @ Complete
89- public Response completeWork (@ HeaderParam (LRA_HTTP_CONTEXT_HEADER ) String lraId ) throws Exception {
80+ public ResponseEntity < String > completeWork (@ RequestHeader (LRA_HTTP_CONTEXT_HEADER ) String lraId ) throws Exception {
9081 log .info ("deposit complete called for LRA : " + lraId );
9182
9283 // get the journal and account...
@@ -103,47 +94,41 @@ public Response completeWork(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId)
10394 AccountTransferDAO .instance ().saveJournal (journal );
10495
10596 // set this LRA participant's status to complete...
106- return Response .ok (ParticipantStatus .Completed .name ()). build ( );
97+ return ResponseEntity .ok (ParticipantStatus .Completed .name ());
10798 }
10899
109100 /**
110101 * Update LRA state to ParticipantStatus.Compensated.
111102 */
112- @ PUT
113- @ Path ("/compensate" )
114- @ Produces (MediaType .APPLICATION_JSON )
103+ @ PutMapping ("/compensate" )
115104 @ Compensate
116- public Response compensateWork (@ HeaderParam (LRA_HTTP_CONTEXT_HEADER ) String lraId ) throws Exception {
105+ public ResponseEntity < String > compensateWork (@ RequestHeader (LRA_HTTP_CONTEXT_HEADER ) String lraId ) throws Exception {
117106 log .info ("deposit compensate called for LRA : " + lraId );
118107 Journal journal = AccountTransferDAO .instance ().getJournalForLRAid (lraId , DEPOSIT );
119108 journal .setLraState (AccountTransferDAO .getStatusString (ParticipantStatus .Compensated ));
120109 AccountTransferDAO .instance ().saveJournal (journal );
121- return Response .ok (ParticipantStatus .Compensated .name ()). build ( );
110+ return ResponseEntity .ok (ParticipantStatus .Compensated .name ());
122111 }
123112
124113 /**
125114 * Return status
126115 */
127- @ GET
128- @ Path ("/status" )
129- @ Produces (MediaType .TEXT_PLAIN )
116+ @ GetMapping (value = "/status" , produces = "text/plain" )
130117 @ Status
131- public Response status (@ HeaderParam (LRA_HTTP_CONTEXT_HEADER ) String lraId ,
132- @ HeaderParam (LRA_HTTP_PARENT_CONTEXT_HEADER ) String parentLRA ) throws Exception {
118+ public ResponseEntity < ParticipantStatus > status (@ RequestHeader (LRA_HTTP_CONTEXT_HEADER ) String lraId ,
119+ @ RequestHeader (LRA_HTTP_PARENT_CONTEXT_HEADER ) String parentLRA ) throws Exception {
133120 return AccountTransferDAO .instance ().status (lraId , DEPOSIT );
134121 }
135122
136123 /**
137124 * Delete journal entry for LRA
138125 */
139- @ PUT
140- @ Path ("/after" )
126+ @ PutMapping (value = "/after" , consumes = "text/plain" )
141127 @ AfterLRA
142- @ Consumes (MediaType .TEXT_PLAIN )
143- public Response afterLRA (@ HeaderParam (LRA_HTTP_ENDED_CONTEXT_HEADER ) String lraId , String status ) throws Exception {
128+ public ResponseEntity <String > afterLRA (@ RequestHeader (LRA_HTTP_ENDED_CONTEXT_HEADER ) String lraId , String status ) throws Exception {
144129 log .info ("After LRA Called : " + lraId );
145130 AccountTransferDAO .instance ().afterLRA (lraId , status , DEPOSIT );
146- return Response .ok (). build ( );
131+ return ResponseEntity .ok ("" );
147132 }
148133
149134}
0 commit comments