Skip to content

Commit 1982b94

Browse files
authored
WIP: wip save point, converting to spring web + new lra client (#754)
update to use new microtx lra libary for spring boot 3 (jakarta, etc) --------- Signed-off-by: Mark Nelson <mark.x.nelson@oracle.com>
1 parent 3200b6c commit 1982b94

File tree

14 files changed

+286
-479
lines changed

14 files changed

+286
-479
lines changed

cloudbank-v2/spring-apps-spring3/account/pom.xml

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,12 @@
3030
<artifactId>spring-boot-starter-data-jpa</artifactId>
3131
</dependency>
3232
<dependency>
33-
<groupId>org.springframework.cloud</groupId>
34-
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
35-
<exclusions>
36-
<exclusion>
37-
<groupId>javax.ws.rs</groupId>
38-
<artifactId>jsr311-api</artifactId>
39-
</exclusion>
40-
<exclusion>
41-
<groupId>javax.servlet</groupId>
42-
<artifactId>servlet-api</artifactId>
43-
</exclusion>
44-
</exclusions>
33+
<groupId>org.springframework.boot</groupId>
34+
<artifactId>spring-boot-starter-web</artifactId>
4535
</dependency>
4636
<dependency>
47-
<groupId>org.springframework.boot</groupId>
48-
<artifactId>spring-boot-starter-jersey</artifactId>
37+
<groupId>org.springframework.cloud</groupId>
38+
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
4939
</dependency>
5040
<dependency>
5141
<groupId>com.oracle.database.spring</groupId>
@@ -65,19 +55,14 @@
6555
<version>${liquibase.version}</version>
6656
</dependency>
6757
<dependency>
68-
<groupId>org.eclipse.microprofile.lra</groupId>
69-
<artifactId>microprofile-lra-api</artifactId>
70-
<version>${microprofile-lra-api.version}</version>
71-
</dependency>
72-
<dependency>
73-
<groupId>org.jboss.narayana.rts</groupId>
74-
<artifactId>narayana-lra</artifactId>
75-
<version>${narayana-lra.version}</version>
58+
<groupId>com.oracle.microtx.lra</groupId>
59+
<artifactId>microtx-lra-spring-boot-starter-jakarta</artifactId>
60+
<version>0.0.1-SNAPSHOT</version>
7661
</dependency>
7762
<dependency>
78-
<groupId>jakarta.enterprise</groupId>
79-
<artifactId>jakarta.enterprise.cdi-api</artifactId>
80-
<version>${jakarta.enterprise.cdi-api.version}</version>
63+
<groupId>jakarta.inject</groupId>
64+
<artifactId>jakarta.inject-api</artifactId>
65+
<version>2.0.1</version>
8166
</dependency>
8267
</dependencies>
8368

cloudbank-v2/spring-apps-spring3/account/src/main/java/com/example/accounts/ApplicationConfig.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

cloudbank-v2/spring-apps-spring3/account/src/main/java/com/example/accounts/JerseyConfig.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

cloudbank-v2/spring-apps-spring3/account/src/main/java/com/example/accounts/services/AccountTransferDAO.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
package com.example.accounts.services;
55

6-
import javax.ws.rs.core.Response;
6+
import com.oracle.microtx.springboot.lra.annotation.ParticipantStatus;
77

8-
import org.eclipse.microprofile.lra.annotation.ParticipantStatus;
8+
import org.springframework.http.ResponseEntity;
99
import org.springframework.stereotype.Component;
1010

1111
import com.example.accounts.model.Account;
@@ -83,12 +83,12 @@ public void saveAccount(Account account) {
8383
accountRepository.save(account);
8484
}
8585

86-
public Response status(String lraId, String journalType) throws Exception {
86+
public ResponseEntity<ParticipantStatus> status(String lraId, String journalType) throws Exception {
8787
Journal journal = getJournalForLRAid(lraId, journalType);
8888
if (AccountTransferDAO.getStatusFromString(journal.getLraState()).equals(ParticipantStatus.Compensated)) {
89-
return Response.ok(ParticipantStatus.Compensated).build();
89+
return ResponseEntity.ok(ParticipantStatus.Compensated);
9090
} else {
91-
return Response.ok(ParticipantStatus.Completed).build();
91+
return ResponseEntity.ok(ParticipantStatus.Completed);
9292
}
9393
}
9494

cloudbank-v2/spring-apps-spring3/account/src/main/java/com/example/accounts/services/DepositService.java

Lines changed: 37 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,32 @@
33

44
package 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 javax.enterprise.context.RequestScoped;
11-
import javax.ws.rs.Consumes;
12-
import javax.ws.rs.GET;
13-
import javax.ws.rs.HeaderParam;
14-
import javax.ws.rs.POST;
15-
import javax.ws.rs.PUT;
16-
import javax.ws.rs.Path;
17-
import javax.ws.rs.Produces;
18-
import javax.ws.rs.QueryParam;
19-
import javax.ws.rs.core.MediaType;
20-
import javax.ws.rs.core.Response;
21-
22-
import org.eclipse.microprofile.lra.annotation.AfterLRA;
23-
import org.eclipse.microprofile.lra.annotation.Compensate;
24-
import org.eclipse.microprofile.lra.annotation.Complete;
25-
import org.eclipse.microprofile.lra.annotation.ParticipantStatus;
26-
import org.eclipse.microprofile.lra.annotation.Status;
27-
import org.eclipse.microprofile.lra.annotation.ws.rs.LRA;
28-
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;
2918

3019
import com.example.accounts.model.Account;
3120
import 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;
3227

3328
import lombok.extern.slf4j.Slf4j;
3429

35-
@RequestScoped
36-
@Path("/deposit")
37-
@Component
30+
@RestController
31+
@RequestMapping("/deposit")
3832
@Slf4j
3933
public class DepositService {
4034

@@ -44,13 +38,11 @@ public class DepositService {
4438
* Write journal entry re deposit amount.
4539
* Do not increase actual bank account amount
4640
*/
47-
@POST
48-
@Path("/deposit")
49-
@Produces(MediaType.APPLICATION_JSON)
41+
@PostMapping
5042
@LRA(value = LRA.Type.MANDATORY, end = false)
51-
public Response deposit(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
52-
@QueryParam("accountId") long accountId,
53-
@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) {
5446
log.info("...deposit " + depositAmount + " in account:" + accountId +
5547
" (lraId:" + lraId + ") finished (in pending state)");
5648
Account account = AccountTransferDAO.instance().getAccountForAccountId(accountId);
@@ -65,7 +57,7 @@ public Response deposit(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
6557
AccountTransferDAO.getStatusString(ParticipantStatus.Active)
6658
)
6759
);
68-
return Response.ok("deposit failed: account does not exist").build();
60+
return ResponseEntity.ok("deposit failed: account does not exist");
6961
}
7062
AccountTransferDAO.instance().saveJournal(
7163
new Journal(
@@ -76,18 +68,16 @@ public Response deposit(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
7668
AccountTransferDAO.getStatusString(ParticipantStatus.Active)
7769
)
7870
);
79-
return Response.ok("deposit succeeded").build();
71+
return ResponseEntity.ok("deposit succeeded");
8072
}
8173

8274
/**
8375
* Increase balance amount as recorded in journal during deposit call.
8476
* Update LRA state to ParticipantStatus.Completed.
8577
*/
86-
@PUT
87-
@Path("/complete")
88-
@Produces(MediaType.APPLICATION_JSON)
78+
@PutMapping("/complete")
8979
@Complete
90-
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 {
9181
log.info("deposit complete called for LRA : " + lraId);
9282

9383
// get the journal and account...
@@ -104,47 +94,41 @@ public Response completeWork(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId)
10494
AccountTransferDAO.instance().saveJournal(journal);
10595

10696
// set this LRA participant's status to complete...
107-
return Response.ok(ParticipantStatus.Completed.name()).build();
97+
return ResponseEntity.ok(ParticipantStatus.Completed.name());
10898
}
10999

110100
/**
111101
* Update LRA state to ParticipantStatus.Compensated.
112102
*/
113-
@PUT
114-
@Path("/compensate")
115-
@Produces(MediaType.APPLICATION_JSON)
103+
@PutMapping("/compensate")
116104
@Compensate
117-
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 {
118106
log.info("deposit compensate called for LRA : " + lraId);
119107
Journal journal = AccountTransferDAO.instance().getJournalForLRAid(lraId, DEPOSIT);
120108
journal.setLraState(AccountTransferDAO.getStatusString(ParticipantStatus.Compensated));
121109
AccountTransferDAO.instance().saveJournal(journal);
122-
return Response.ok(ParticipantStatus.Compensated.name()).build();
110+
return ResponseEntity.ok(ParticipantStatus.Compensated.name());
123111
}
124112

125113
/**
126114
* Return status
127115
*/
128-
@GET
129-
@Path("/status")
130-
@Produces(MediaType.TEXT_PLAIN)
116+
@GetMapping(value = "/status", produces = "text/plain")
131117
@Status
132-
public Response status(@HeaderParam(LRA_HTTP_CONTEXT_HEADER) String lraId,
133-
@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 {
134120
return AccountTransferDAO.instance().status(lraId, DEPOSIT);
135121
}
136122

137123
/**
138124
* Delete journal entry for LRA
139125
*/
140-
@PUT
141-
@Path("/after")
126+
@PutMapping(value = "/after", consumes = "text/plain")
142127
@AfterLRA
143-
@Consumes(MediaType.TEXT_PLAIN)
144-
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 {
145129
log.info("After LRA Called : " + lraId);
146130
AccountTransferDAO.instance().afterLRA(lraId, status, DEPOSIT);
147-
return Response.ok().build();
131+
return ResponseEntity.ok("");
148132
}
149133

150134
}

0 commit comments

Comments
 (0)