Skip to content

Commit 031e0e8

Browse files
chore: Added validation to DTOs used by CustomBenefit Resource.
1 parent e60f637 commit 031e0e8

5 files changed

Lines changed: 30 additions & 33 deletions

File tree

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

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.quarkus.logging.Log;
44
import io.quarkus.security.identity.SecurityIdentity;
55
import jakarta.inject.Inject;
6+
import jakarta.validation.Valid;
67
import jakarta.ws.rs.*;
78
import jakarta.ws.rs.core.Context;
89
import jakarta.ws.rs.core.MediaType;
@@ -74,29 +75,22 @@ public Response getCustomBenefits(
7475
public Response createCustomBenefit(
7576
@Context SecurityIdentity identity,
7677
@PathParam("screenerId") String screenerId,
77-
CreateCustomBenefitRequest request
78+
@Valid CreateCustomBenefitRequest request
7879
) {
7980
String userId = AuthUtils.getUserId(identity);
8081

81-
// Validate request
82-
if (request.name == null || request.name.isBlank()) {
83-
return Response.status(Response.Status.BAD_REQUEST)
84-
.entity(Map.of("error", "Name is required"))
85-
.build();
86-
}
87-
8882
// Create new Benefit with server-generated ID
8983
String newBenefitId = UUID.randomUUID().toString();
9084
Benefit newBenefit = new Benefit(
9185
newBenefitId,
92-
request.name,
93-
request.description,
86+
request.name(),
87+
request.description(),
9488
userId,
9589
Collections.emptyList()
9690
);
9791

9892
// Create corresponding BenefitDetail
99-
BenefitDetail benefitDetail = new BenefitDetail(newBenefitId, request.name, request.description);
93+
BenefitDetail benefitDetail = new BenefitDetail(newBenefitId, request.name(), request.description());
10094

10195
try {
10296
// Check to make sure screener exists
@@ -159,7 +153,7 @@ public Response updateCustomBenefit(
159153
@Context SecurityIdentity identity,
160154
@PathParam("screenerId") String screenerId,
161155
@PathParam("benefitId") String benefitId,
162-
UpdateCustomBenefitRequest request
156+
@Valid UpdateCustomBenefitRequest request
163157
) {
164158
String userId = AuthUtils.getUserId(identity);
165159

@@ -271,17 +265,10 @@ public Response addCheckToBenefit(
271265
@Context SecurityIdentity identity,
272266
@PathParam("screenerId") String screenerId,
273267
@PathParam("benefitId") String benefitId,
274-
AddCheckRequest request
268+
@Valid AddCheckRequest request
275269
) {
276270
String userId = AuthUtils.getUserId(identity);
277271

278-
// Validate request
279-
if (request.checkId == null || request.checkId.isBlank()) {
280-
return Response.status(Response.Status.BAD_REQUEST)
281-
.entity(Map.of("error", "checkId is required"))
282-
.build();
283-
}
284-
285272
if (!isUserAuthorizedForScreener(userId, screenerId)) {
286273
return Response.status(Response.Status.UNAUTHORIZED).build();
287274
}
@@ -296,9 +283,11 @@ public Response addCheckToBenefit(
296283
}
297284

298285
// Find the EligibilityCheck - first try user's custom checks, then library checks
299-
Optional<EligibilityCheck> checkOpt = eligibilityCheckRepository.getPublishedCustomCheck(userId, request.checkId);
286+
Optional<EligibilityCheck> checkOpt = (
287+
eligibilityCheckRepository.getPublishedCustomCheck(userId, request.checkId())
288+
);
300289
if (checkOpt.isEmpty()) {
301-
checkOpt = libraryApiMetadataService.getById(request.checkId);
290+
checkOpt = libraryApiMetadataService.getById(request.checkId());
302291
}
303292

304293
if (checkOpt.isEmpty()) {
@@ -440,7 +429,7 @@ public Response updateCheckParameters(
440429
List<CheckConfig> checkListAfterUpdate = new ArrayList<>();
441430
for (CheckConfig check : checks) {
442431
if (check.getCheckId().equals(checkId)) {
443-
check.setParameters(request.parameters != null ? request.parameters : new HashMap<>());
432+
check.setParameters(request.parameters() != null ? request.parameters() : new HashMap<>());
444433
checkUpdated = true;
445434
}
446435
checkListAfterUpdate.add(check);
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.acme.model.dto.CustomBenefit;
22

3-
public class AddCheckRequest {
4-
public String checkId;
5-
}
3+
import org.acme.api.validation.AtLeastOneProvided;
4+
5+
@AtLeastOneProvided(fields = {"checkId"})
6+
public record AddCheckRequest(String checkId) {}
7+
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.acme.model.dto.CustomBenefit;
22

3-
public class CreateCustomBenefitRequest {
4-
public String name;
5-
public String description;
6-
}
3+
import jakarta.validation.constraints.NotBlank;
4+
5+
public record CreateCustomBenefitRequest(
6+
@NotBlank(message = "Custom Benefit name must be provided.") String name,
7+
String description
8+
) {}

builder-api/src/main/java/org/acme/model/dto/CustomBenefit/UpdateCheckParametersRequest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Map;
44

5-
public class UpdateCheckParametersRequest {
6-
public Map<String, Object> parameters;
7-
}
5+
import org.acme.api.validation.AtLeastOneProvided;
6+
7+
@AtLeastOneProvided(fields = {"parameters"})
8+
public record UpdateCheckParametersRequest(Map<String, Object> parameters) {}

builder-api/src/main/java/org/acme/model/dto/CustomBenefit/UpdateCustomBenefitRequest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.acme.model.dto.CustomBenefit;
22

3+
import org.acme.api.validation.AtLeastOneProvided;
4+
5+
@AtLeastOneProvided(fields = {"name", "description"})
36
public class UpdateCustomBenefitRequest {
47
public String name;
58
public String description;

0 commit comments

Comments
 (0)