Skip to content
This repository was archived by the owner on Aug 1, 2025. It is now read-only.

Commit 9ff25a5

Browse files
committed
Add error handling for bad pagination RQs to avoid giant queries and errors
1 parent 1b06e85 commit 9ff25a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+245
-143
lines changed

src/main/java/org/brapi/test/BrAPITestServer/controller/germ/CrossesApiController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ public ResponseEntity<CrossesListResponse> crossesGet(
5959
validateSecurityContext(request, "ROLE_ANONYMOUS", "ROLE_USER");
6060
validateAcceptHeader(request);
6161
Metadata metadata = generateMetaDataTemplate(page, pageSize);
62-
List<Cross> data = crossService.findCrosses(crossingProjectDbId, crossingProjectName, crossDbId, crossName,
63-
commonCropName, programDbId, externalReferenceId, externalReferenceID, externalReferenceSource,
62+
List<Cross> data = crossService.findCrosses(crossingProjectDbId, crossDbId,
63+
externalReferenceID, externalReferenceSource,
6464
metadata);
6565
return responseOK(new CrossesListResponse(), new CrossesListResponseResult(), data, metadata);
6666
}

src/main/java/org/brapi/test/BrAPITestServer/controller/germ/CrossingProjectsApiController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public ResponseEntity<CrossingProjectsListResponse> crossingProjectsGet(
6060
validateAcceptHeader(request);
6161
Metadata metadata = generateMetaDataTemplate(page, pageSize);
6262
List<CrossingProject> data = crossingProjectService.findCrossingProjects(crossingProjectDbId,
63-
crossingProjectName, includePotentialParents, commonCropName, programDbId, externalReferenceId,
64-
externalReferenceID, externalReferenceSource, metadata);
63+
crossingProjectName, includePotentialParents, commonCropName, programDbId,
64+
externalReferenceID, externalReferenceSource, metadata);
6565
return responseOK(new CrossingProjectsListResponse(), new CrossingProjectsListResponseResult(), data, metadata);
6666
}
6767

src/main/java/org/brapi/test/BrAPITestServer/controller/germ/PlannedCrossesApiController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public ResponseEntity<PlannedCrossesListResponse> plannedCrossesGet(
6060
validateSecurityContext(request, "ROLE_ANONYMOUS", "ROLE_USER");
6161
validateAcceptHeader(request);
6262
Metadata metadata = generateMetaDataTemplate(page, pageSize);
63-
List<PlannedCross> data = crossService.findPlannedCrosses(crossingProjectDbId, crossingProjectName,
64-
plannedCrossDbId, plannedCrossName, status, commonCropName, programDbId, externalReferenceId,
63+
List<PlannedCross> data = crossService.findPlannedCrosses(crossingProjectDbId,
64+
plannedCrossDbId,
6565
externalReferenceID, externalReferenceSource, metadata);
6666
return responseOK(new PlannedCrossesListResponse(), new PlannedCrossesListResponseResult(), data, metadata);
6767
}

src/main/java/org/brapi/test/BrAPITestServer/controller/germ/SeedLotsApiController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public ResponseEntity<SeedLotListResponse> seedlotsGet(
6666
validateAcceptHeader(request);
6767
Metadata metadata = generateMetaDataTemplate(page, pageSize);
6868
List<SeedLot> data = seedLotService.findSeedLots(seedLotDbId, germplasmDbId, germplasmName, crossDbId,
69-
crossName, commonCropName, programDbId, externalReferenceId, externalReferenceID,
69+
crossName, commonCropName, programDbId, externalReferenceID,
7070
externalReferenceSource, metadata);
7171
return responseOK(new SeedLotListResponse(), new SeedLotListResponseResult(), data, metadata);
7272
}
@@ -156,7 +156,7 @@ public ResponseEntity<SeedLotTransactionListResponse> seedlotsTransactionsGet(
156156
validateAcceptHeader(request);
157157
Metadata metadata = generateMetaDataTemplate(page, pageSize);
158158
List<SeedLotTransaction> data = seedLotService.findSeedLotTransactions(transactionDbId, seedLotDbId,
159-
germplasmDbId, germplasmName, crossDbId, crossName, commonCropName, programDbId, externalReferenceId,
159+
germplasmDbId, germplasmName, crossDbId, crossName, commonCropName, programDbId,
160160
externalReferenceID, externalReferenceSource, metadata);
161161
return responseOK(new SeedLotTransactionListResponse(), new SeedLotTransactionListResponseResult(), data,
162162
metadata);

src/main/java/org/brapi/test/BrAPITestServer/exceptions/InvalidPagingException.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,18 @@
44

55
public class InvalidPagingException extends BrAPIServerException {
66
private static final long serialVersionUID = 6250184179200451757L;
7+
8+
private static final String pageNumExceedsTotalPages =
9+
"A page was requested which exceeds total amount of data available. Please make a RQ with page < totalPages - 1. " +
10+
"Page numbers start at 0, and you can find out totalPages by making a RQ with \"page\": 0";
711

812
public InvalidPagingException(String field) {
913
super(HttpStatus.BAD_REQUEST, "\'" + field + "\' value is invalid");
1014
}
15+
16+
// This constructor should only be used when the pageNum of the RQ exceeds the total number of pages available.
17+
public InvalidPagingException() {
18+
super(HttpStatus.BAD_REQUEST, pageNumExceedsTotalPages);
19+
}
1120

1221
}

src/main/java/org/brapi/test/BrAPITestServer/factory/BrAPIComponent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
import io.swagger.model.SearchRequest;
55
import io.swagger.model.core.BatchDeleteTypes;
66
import jakarta.validation.Valid;
7+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
78

89
import java.util.List;
910

1011
public interface BrAPIComponent<T, R extends SearchRequest> {
11-
List<T> findEntities(@Valid R request, Metadata metadata);
12+
List<T> findEntities(@Valid R request, Metadata metadata) throws BrAPIServerException;
1213
BatchDeleteTypes getBatchDeleteType();
1314
List<String> collectDbIds(List<T> entities);
1415
void deleteBatchDeleteData(List<String> dbIds);

src/main/java/org/brapi/test/BrAPITestServer/factory/core/ListComponent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.swagger.model.core.ListSearchRequest;
66
import io.swagger.model.core.ListSummary;
77
import jakarta.validation.Valid;
8+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
89
import org.brapi.test.BrAPITestServer.factory.BrAPIComponent;
910
import org.brapi.test.BrAPITestServer.service.core.ListService;
1011
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +24,8 @@ public ListComponent(ListService listService) {
2324
}
2425

2526
@Override
26-
public List<ListSummary> findEntities(@Valid ListSearchRequest request, Metadata metadata) {
27+
public List<ListSummary> findEntities(@Valid ListSearchRequest request, Metadata metadata)
28+
throws BrAPIServerException {
2729
return listService.findLists(request, metadata);
2830
}
2931

src/main/java/org/brapi/test/BrAPITestServer/factory/core/TrialComponent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.swagger.model.core.BatchDeleteTypes;
55
import io.swagger.model.core.Trial;
66
import io.swagger.model.core.TrialSearchRequest;
7+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
78
import org.brapi.test.BrAPITestServer.factory.BrAPIComponent;
89
import org.brapi.test.BrAPITestServer.service.core.TrialService;
910
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +23,8 @@ public TrialComponent(TrialService trialService) {
2223
}
2324

2425
@Override
25-
public List<Trial> findEntities(TrialSearchRequest request, Metadata metadata) {
26+
public List<Trial> findEntities(TrialSearchRequest request, Metadata metadata)
27+
throws BrAPIServerException {
2628
return trialService.findTrials(request, metadata);
2729
}
2830

src/main/java/org/brapi/test/BrAPITestServer/factory/geno/PlateComponent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.swagger.model.geno.Plate;
66
import io.swagger.model.geno.PlateSearchRequest;
77
import org.apache.commons.lang3.NotImplementedException;
8+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
89
import org.brapi.test.BrAPITestServer.factory.BrAPIComponent;
910
import org.brapi.test.BrAPITestServer.service.geno.PlateService;
1011
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +24,8 @@ public PlateComponent(PlateService plateService) {
2324
}
2425

2526
@Override
26-
public List<Plate> findEntities(PlateSearchRequest request, Metadata metadata) {
27+
public List<Plate> findEntities(PlateSearchRequest request, Metadata metadata)
28+
throws BrAPIServerException {
2729
return plateService.findPlates(request, metadata);
2830
}
2931

src/main/java/org/brapi/test/BrAPITestServer/factory/geno/SampleComponent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.swagger.model.core.BatchDeleteTypes;
55
import io.swagger.model.geno.Sample;
66
import io.swagger.model.geno.SampleSearchRequest;
7+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
78
import org.brapi.test.BrAPITestServer.factory.BrAPIComponent;
89
import org.brapi.test.BrAPITestServer.service.geno.SampleService;
910
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +23,8 @@ public SampleComponent(SampleService sampleService) {
2223
}
2324

2425
@Override
25-
public List<Sample> findEntities(SampleSearchRequest request, Metadata metadata) {
26+
public List<Sample> findEntities(SampleSearchRequest request, Metadata metadata)
27+
throws BrAPIServerException {
2628
return sampleService.findSamples(request, metadata);
2729
}
2830

0 commit comments

Comments
 (0)