Skip to content

Commit 42a0ae4

Browse files
Cloudbank version 3 updates (#763)
* Native compile, test disabled * Updates * Graal pom changes and gitignore for nib files * native compile addition to pom.xml's * account pom.xml update * updates for new lra library Signed-off-by: Mark Nelson <mark.x.nelson@oracle.com> --------- Signed-off-by: Mark Nelson <mark.x.nelson@oracle.com> Co-authored-by: Mark Nelson <mark.x.nelson@oracle.com>
1 parent 75be618 commit 42a0ae4

File tree

26 files changed

+363
-480
lines changed

26 files changed

+363
-480
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,4 +515,7 @@ workshops/oracleAQ/qJava/.project
515515
.flutter*
516516
*pubspec*
517517
package*
518-
.dart*
518+
.dart*
519+
520+
# GraalVM stuff
521+
*.nib

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

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<narayana-lra.version>5.13.1.Final</narayana-lra.version>
2222
<jakarta.enterprise.cdi-api.version>4.0.1</jakarta.enterprise.cdi-api.version>
2323
<oracle-springboot-starter.version>3.1.0</oracle-springboot-starter.version>
24-
<liquibase.version>4.23.1</liquibase.version>
24+
<liquibase.version>4.24.0</liquibase.version>
2525
</properties>
2626

2727
<dependencies>
@@ -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>jakarta.ws.rs</groupId>
38-
<artifactId>jsr311-api</artifactId>
39-
</exclusion>
40-
<exclusion>
41-
<groupId>jakarta.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>
@@ -59,27 +49,20 @@
5949
<version>${oracle-springboot-starter.version}</version>
6050
<type>pom</type>
6151
</dependency>
62-
<!--
6352
<dependency>
6453
<groupId>org.liquibase</groupId>
6554
<artifactId>liquibase-core</artifactId>
6655
<version>${liquibase.version}</version>
6756
</dependency>
68-
-->
69-
<dependency>
70-
<groupId>org.eclipse.microprofile.lra</groupId>
71-
<artifactId>microprofile-lra-api</artifactId>
72-
<version>${microprofile-lra-api.version}</version>
73-
</dependency>
7457
<dependency>
75-
<groupId>org.jboss.narayana.rts</groupId>
76-
<artifactId>narayana-lra</artifactId>
77-
<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>
7861
</dependency>
7962
<dependency>
80-
<groupId>jakarta.enterprise</groupId>
81-
<artifactId>jakarta.enterprise.cdi-api</artifactId>
82-
<version>${jakarta.enterprise.cdi-api.version}</version>
63+
<groupId>jakarta.inject</groupId>
64+
<artifactId>jakarta.inject-api</artifactId>
65+
<version>2.0.1</version>
8366
</dependency>
8467
</dependencies>
8568

@@ -97,6 +80,16 @@
9780
</excludes>
9881
</configuration>
9982
</plugin>
83+
<plugin>
84+
<groupId>org.graalvm.buildtools</groupId>
85+
<artifactId>native-maven-plugin</artifactId>
86+
<configuration>
87+
<buildArgs combine.children="append">
88+
<buildArg>--bundle-create</buildArg>
89+
<buildArg>--dry-run</buildArg>
90+
</buildArgs>
91+
</configuration>
92+
</plugin>
10093
<plugin>
10194
<groupId>org.liquibase</groupId>
10295
<artifactId>liquibase-maven-plugin</artifactId>

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

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

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

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

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

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

44
package com.example.accounts.services;
55

6-
import jakarta.ws.rs.core.Response;
7-
import lombok.extern.slf4j.Slf4j;
8-
9-
import org.eclipse.microprofile.lra.annotation.ParticipantStatus;
6+
import org.springframework.http.ResponseEntity;
107
import org.springframework.stereotype.Component;
118

129
import com.example.accounts.model.Account;
1310
import com.example.accounts.model.Journal;
1411
import com.example.accounts.repository.AccountRepository;
1512
import com.example.accounts.repository.JournalRepository;
13+
import com.oracle.microtx.springboot.lra.annotation.ParticipantStatus;
14+
15+
import lombok.extern.slf4j.Slf4j;
1616

1717
@Component
1818
@Slf4j
@@ -82,12 +82,12 @@ public void saveAccount(Account account) {
8282
accountRepository.save(account);
8383
}
8484

85-
public Response status(String lraId, String journalType) throws Exception {
85+
public ResponseEntity<ParticipantStatus> status(String lraId, String journalType) throws Exception {
8686
Journal journal = getJournalForLRAid(lraId, journalType);
8787
if (AccountTransferDAO.getStatusFromString(journal.getLraState()).equals(ParticipantStatus.Compensated)) {
88-
return Response.ok(ParticipantStatus.Compensated).build();
88+
return ResponseEntity.ok(ParticipantStatus.Compensated);
8989
} else {
90-
return Response.ok(ParticipantStatus.Completed).build();
90+
return ResponseEntity.ok(ParticipantStatus.Completed);
9191
}
9292
}
9393

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

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +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 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

3119
import com.example.accounts.model.Account;
3220
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;
27+
28+
import lombok.extern.slf4j.Slf4j;
3329

34-
@RequestScoped
35-
@Path("/deposit")
36-
@Component
30+
@RestController
31+
@RequestMapping("/deposit")
3732
@Slf4j
3833
public 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

Comments
 (0)