Skip to content

Commit 89fcf28

Browse files
Fixed conflicts with merged main-branch
1 parent 21d2c4e commit 89fcf28

4 files changed

Lines changed: 53 additions & 118 deletions

File tree

builder-api/src/main/java/org/acme/controller/BenefitResource.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.acme.controller;
22

33
import io.quarkus.logging.Log;
4+
import io.quarkus.security.identity.SecurityIdentity;
45
import jakarta.inject.Inject;
56
import jakarta.ws.rs.*;
6-
import jakarta.ws.rs.container.ContainerRequestContext;
77
import jakarta.ws.rs.core.Context;
88
import jakarta.ws.rs.core.MediaType;
99
import jakarta.ws.rs.core.Response;
@@ -28,8 +28,8 @@ public class BenefitResource {
2828

2929
@GET
3030
@Path("/benefit")
31-
public Response getAllBenefits(@Context ContainerRequestContext requestContext) {
32-
String userId = AuthUtils.getUserId(requestContext);
31+
public Response getAllBenefits(@Context SecurityIdentity identity) {
32+
String userId = AuthUtils.getUserId(identity);
3333
if (userId == null){
3434
return Response.status(Response.Status.UNAUTHORIZED).build();
3535
}
@@ -41,8 +41,9 @@ public Response getAllBenefits(@Context ContainerRequestContext requestContext)
4141

4242
@GET
4343
@Path("/benefit/{benefitId}")
44-
public Response getBenefit(@Context ContainerRequestContext requestContext, @PathParam("benefitId") String benefitId) {
45-
String userId = AuthUtils.getUserId(requestContext);
44+
public Response getBenefit(@Context SecurityIdentity identity,
45+
@PathParam("benefitId") String benefitId) {
46+
String userId = AuthUtils.getUserId(identity);
4647
if (userId == null){
4748
return Response.status(Response.Status.UNAUTHORIZED).build();
4849
}
@@ -65,8 +66,9 @@ public Response getBenefit(@Context ContainerRequestContext requestContext, @Pat
6566
// Get all of the full Eligibility Check Objects that have been added to a Public Benefit
6667
@GET
6768
@Path("/benefit/{benefitId}/check")
68-
public Response getBenefitChecks(@Context ContainerRequestContext requestContext, @PathParam("benefitId") String benefitId) {
69-
String userId = AuthUtils.getUserId(requestContext);
69+
public Response getBenefitChecks(@Context SecurityIdentity identity,
70+
@PathParam("benefitId") String benefitId) {
71+
String userId = AuthUtils.getUserId(identity);
7072
if (userId == null){
7173
return Response.status(Response.Status.UNAUTHORIZED).build();
7274
}
@@ -90,8 +92,9 @@ public Response getBenefitChecks(@Context ContainerRequestContext requestContext
9092
@PUT
9193
@Consumes(MediaType.APPLICATION_JSON)
9294
@Path("/benefit")
93-
public Response updateBenefit(@Context ContainerRequestContext requestContext, Benefit newBenefit) {
94-
String userId = AuthUtils.getUserId(requestContext);
95+
public Response updateBenefit(@Context SecurityIdentity identity,
96+
Benefit newBenefit) {
97+
String userId = AuthUtils.getUserId(identity);
9598
//TODO: Add validations for user provided data
9699

97100
newBenefit.setOwnerId(userId);
@@ -121,8 +124,9 @@ public Response updateBenefit(@Context ContainerRequestContext requestContext, B
121124
// Utility endpoint to create a public benefit
122125
@POST
123126
@Path("/benefit")
124-
public Response createBenefit(@Context ContainerRequestContext requestContext, Benefit newBenefit) {
125-
String userId = AuthUtils.getUserId(requestContext);
127+
public Response createBenefit(@Context SecurityIdentity identity,
128+
Benefit newBenefit) {
129+
String userId = AuthUtils.getUserId(identity);
126130

127131
//TODO: Add validations for user provided data
128132

builder-api/src/main/java/org/acme/controller/DecisionResource.java

Lines changed: 5 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.acme.controller;
22

33
import io.quarkus.logging.Log;
4+
import io.quarkus.security.identity.SecurityIdentity;
45
import jakarta.inject.Inject;
56
import jakarta.ws.rs.*;
6-
import jakarta.ws.rs.container.ContainerRequestContext;
77
import jakarta.ws.rs.core.Context;
88
import jakarta.ws.rs.core.MediaType;
99
import jakarta.ws.rs.core.Response;
@@ -12,20 +12,14 @@
1212
import org.acme.enums.OptionalBoolean;
1313
import org.acme.model.domain.Benefit;
1414
import org.acme.model.domain.CheckConfig;
15-
import org.acme.auth.AuthUtils;
16-
import org.acme.model.domain.Benefit;
1715
import org.acme.model.domain.EligibilityCheck;
1816
import org.acme.model.domain.Screener;
1917
import org.acme.persistence.BenefitRepository;
2018
import org.acme.persistence.EligibilityCheckRepository;
2119
import org.acme.persistence.ScreenerRepository;
2220
import org.acme.persistence.StorageService;
23-
import org.acme.service.DmnParser;
2421
import org.acme.service.DmnService;
2522

26-
import io.quarkus.logging.Log;
27-
28-
import java.time.Instant;
2923
import java.util.*;
3024

3125
@Path("/api")
@@ -46,78 +40,17 @@ public class DecisionResource {
4640
@Inject
4741
BenefitRepository benefitRepository;
4842

49-
@POST
50-
@Path("/decision")
51-
@Consumes(MediaType.APPLICATION_JSON)
52-
@Produces(MediaType.APPLICATION_JSON)
53-
public Response post(@QueryParam("screenerId") String screenerId, Map<String, Object> inputData) {
54-
if (screenerId == null || screenerId.isBlank()){
55-
return Response.status(Response.Status.BAD_REQUEST)
56-
.entity("Error: Missing required query parameter: screenerId")
57-
.build();
58-
}
59-
60-
if (inputData == null || inputData.isEmpty()){
61-
return Response.status(Response.Status.BAD_REQUEST)
62-
.entity("Error: Missing decision inputs")
63-
.build();
64-
}
65-
66-
return getScreenerResults(screenerId, inputData);
67-
}
68-
69-
private Response getScreenerResults(String screenerId, Map<String, Object> inputData) {
70-
Optional<Screener> screenerOptional = screenerRepository.getScreener(screenerId);
71-
72-
if (screenerOptional.isEmpty()){
73-
throw new NotFoundException(String.format("Form %s was not found", screenerId));
74-
}
75-
76-
Screener screener = screenerOptional.get();
77-
78-
try {
79-
if (isLastScreenerCompileOutOfDate(screener)){
80-
dmnService.compileWorkingDmnModel(screener);
81-
updateScreenerLastCompileTime(screenerId, screener.getDmnModel());
82-
}
83-
84-
Map <String, Object> result = dmnService.evaluateDecision(screener, inputData);
85-
86-
if (result.isEmpty()) return Response.ok().entity(Collections.emptyList()).build();
87-
88-
return Response.ok().entity(result).build();
89-
90-
} catch (Exception e){
91-
Log.error("Error evaluating decision: ", e);
92-
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
93-
}
94-
}
95-
96-
private static boolean isLastScreenerCompileOutOfDate(Screener screener) {
97-
return screener.getLastDmnCompile() == null || Instant.parse(screener.getLastDmnSave()).isAfter(Instant.parse(screener.getLastDmnCompile()));
98-
}
99-
100-
private void updateScreenerLastCompileTime(String screenerId, String dmnXml) throws Exception {
101-
Screener updateScreener = new Screener();
102-
updateScreener.setId(screenerId);
103-
updateScreener.setLastDmnCompile(Instant.now().toString());
104-
DmnParser dmnParser = new DmnParser(dmnXml);
105-
updateScreener.setWorkingDmnName(dmnParser.getName());
106-
updateScreener.setWorkingDmnNameSpace(dmnParser.getNameSpace());
107-
screenerRepository.updateScreener(updateScreener);
108-
}
109-
11043
@POST
11144
@Path("/decision/v2")
11245
@Consumes(MediaType.APPLICATION_JSON)
11346
@Produces(MediaType.APPLICATION_JSON)
11447
public Response evaluateScreener(
115-
@Context ContainerRequestContext requestContext,
48+
@Context SecurityIdentity identity,
11649
@QueryParam("screenerId") String screenerId,
11750
Map<String, Object> inputData
11851
) throws Exception {
11952
// Authorize user and get benefit
120-
String userId = AuthUtils.getUserId(requestContext);
53+
String userId = AuthUtils.getUserId(identity);
12154
if (screenerId.isEmpty() || !isUserAuthorizedToAccessScreenerByScreenerId(userId, screenerId)){
12255
return Response.status(Response.Status.UNAUTHORIZED).build();
12356
}
@@ -152,7 +85,7 @@ public Response evaluateScreener(
15285
@Consumes(MediaType.APPLICATION_JSON)
15386
@Produces(MediaType.APPLICATION_JSON)
15487
public Response evaluateBenefit(
155-
@Context ContainerRequestContext requestContext,
88+
@Context SecurityIdentity identity,
15689
@QueryParam("screenerId") String screenerId,
15790
@QueryParam("benefitId") String benefitId,
15891
Map<String, Object> inputData
@@ -169,7 +102,7 @@ public Response evaluateBenefit(
169102
}
170103

171104
// Authorize user and get benefit
172-
String userId = AuthUtils.getUserId(requestContext);
105+
String userId = AuthUtils.getUserId(identity);
173106
Optional<Benefit> benefitOpt = Optional.empty();
174107
if (!screenerId.isEmpty()){
175108
if (!isUserAuthorizedToAccessScreenerByScreenerId(userId, screenerId)){

builder-api/src/main/java/org/acme/controller/EligibilityCheckResource.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,18 @@
22

33

44
import io.quarkus.logging.Log;
5+
import io.quarkus.security.identity.SecurityIdentity;
56
import jakarta.inject.Inject;
67
import jakarta.ws.rs.*;
7-
import jakarta.ws.rs.container.ContainerRequestContext;
88
import jakarta.ws.rs.core.Context;
99
import jakarta.ws.rs.core.MediaType;
1010
import jakarta.ws.rs.core.Response;
1111
import org.acme.auth.AuthUtils;
1212
import org.acme.model.domain.EligibilityCheck;
13-
import org.acme.model.domain.Screener;
1413
import org.acme.model.dto.SaveDmnRequest;
1514
import org.acme.persistence.EligibilityCheckRepository;
1615
import org.acme.persistence.StorageService;
1716

18-
import java.time.Instant;
1917
import java.util.List;
2018
import java.util.Map;
2119
import java.util.Optional;
@@ -31,8 +29,8 @@ public class EligibilityCheckResource {
3129

3230
@GET
3331
@Path("/check")
34-
public Response getAllChecks(@Context ContainerRequestContext requestContext) {
35-
String userId = AuthUtils.getUserId(requestContext);
32+
public Response getAllChecks(@Context SecurityIdentity identity) {
33+
String userId = AuthUtils.getUserId(identity);
3634
if (userId == null) {
3735
return Response.status(Response.Status.UNAUTHORIZED).build();
3836
}
@@ -44,8 +42,8 @@ public Response getAllChecks(@Context ContainerRequestContext requestContext) {
4442

4543
@GET
4644
@Path("/check/{checkId}")
47-
public Response getCheck(@Context ContainerRequestContext requestContext, @PathParam("checkId") String checkId) {
48-
String userId = AuthUtils.getUserId(requestContext);
45+
public Response getCheck(@Context SecurityIdentity identity, @PathParam("checkId") String checkId) {
46+
String userId = AuthUtils.getUserId(identity);
4947
if (userId == null){
5048
return Response.status(Response.Status.UNAUTHORIZED).build();
5149
}
@@ -69,11 +67,11 @@ public Response getCheck(@Context ContainerRequestContext requestContext, @PathP
6967
// In the future seperate endpoints will need to be created for publishing public checks and creating private checks
7068
@POST
7169
@Path("/check")
72-
public Response createCheck(@Context ContainerRequestContext requestContext, EligibilityCheck newCheck) {
73-
String userId = AuthUtils.getUserId(requestContext);
70+
public Response createCheck(@Context SecurityIdentity identity,
71+
EligibilityCheck newCheck) {
72+
String userId = AuthUtils.getUserId(identity);
7473

7574
//TODO: Add validations for user provided data
76-
7775
newCheck.setOwnerId(userId);
7876
try {
7977
String checkId = eligibilityCheckRepository.saveNewCheck(newCheck);
@@ -88,8 +86,9 @@ public Response createCheck(@Context ContainerRequestContext requestContext, Eli
8886

8987
@PUT
9088
@Path("/check")
91-
public Response updateCheck(@Context ContainerRequestContext requestContext, EligibilityCheck updateCheck){
92-
String userId = AuthUtils.getUserId(requestContext);
89+
public Response updateCheck(@Context SecurityIdentity identity,
90+
EligibilityCheck updateCheck){
91+
String userId = AuthUtils.getUserId(identity);
9392

9493
// TODO: Add authorization to update check
9594
try {
@@ -105,7 +104,7 @@ public Response updateCheck(@Context ContainerRequestContext requestContext, Eli
105104
@POST
106105
@Consumes(MediaType.APPLICATION_JSON)
107106
@Path("/save-check-dmn")
108-
public Response updateCheckDmn(@Context ContainerRequestContext requestContext, SaveDmnRequest saveDmnRequest){
107+
public Response updateCheckDmn(@Context SecurityIdentity identity, SaveDmnRequest saveDmnRequest){
109108

110109
String checkId = saveDmnRequest.id;
111110
String dmnModel = saveDmnRequest.dmnModel;
@@ -115,7 +114,7 @@ public Response updateCheckDmn(@Context ContainerRequestContext requestContext,
115114
.build();
116115
}
117116

118-
String userId = AuthUtils.getUserId(requestContext);
117+
String userId = AuthUtils.getUserId(identity);
119118
Optional<EligibilityCheck> checkOpt = eligibilityCheckRepository.getCheck(checkId);
120119
if (checkOpt.isEmpty()){
121120
return Response.status(Response.Status.NOT_FOUND).build();

0 commit comments

Comments
 (0)