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

Commit 2526b1e

Browse files
committed
Add configurable default page size and max allowed page size
Additionally make these configurable vars consistent and usable across BrAPIController and PagingUtility, which both utilize them.
1 parent 9ff25a5 commit 2526b1e

File tree

3 files changed

+53
-30
lines changed

3 files changed

+53
-30
lines changed

src/main/java/org/brapi/test/BrAPITestServer/controller/core/BrAPIController.java

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import io.swagger.model.core.BatchDeletesListResponseResult;
1212
import org.brapi.test.BrAPITestServer.auth.AuthDetails;
1313
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
14-
import org.brapi.test.BrAPITestServer.exceptions.InvalidPagingException;
14+
import org.brapi.test.BrAPITestServer.service.PagingUtility;
1515
import org.slf4j.Logger;
1616
import org.slf4j.LoggerFactory;
1717
import org.springframework.http.HttpStatus;
@@ -33,29 +33,14 @@
3333

3434
public class BrAPIController {
3535
private static final Logger log = LoggerFactory.getLogger(ServerInfoApiController.class);
36-
37-
protected Metadata generateMetaDataTemplateForSearch(Integer originalRequestedPage, Integer newRequestedPage,
38-
Integer originalRequestedPageSize, Integer newRequestedPageSize) throws BrAPIServerException {
39-
Integer page = newRequestedPage;
40-
Integer pageSize = newRequestedPageSize;
41-
42-
if (page == null) {
43-
page = originalRequestedPage;
44-
}
45-
if (pageSize == null) {
46-
pageSize = originalRequestedPageSize;
47-
}
48-
49-
return generateMetaDataTemplate(page, pageSize);
50-
}
5136

5237
protected Metadata generateMetaDataTemplate(SearchRequest request) throws BrAPIServerException {
5338
return generateMetaDataTemplate(request.getPage(), request.getPageSize());
5439
}
5540

5641
protected Metadata generateMetaDataTemplate(String pageToken, Integer pageSize) {
5742
if (pageSize == null) {
58-
pageSize = 1000;
43+
pageSize = PagingUtility.getDefaultPageSize();
5944
}
6045

6146
Metadata metaData = generateEmptyMetadataToken();
@@ -65,14 +50,14 @@ protected Metadata generateMetaDataTemplate(String pageToken, Integer pageSize)
6550
}
6651

6752
protected Metadata generateMetaDataTemplate(Integer page, Integer pageSize) throws BrAPIServerException {
68-
validatePaging(page, pageSize);
53+
PagingUtility.validatePaging(page, pageSize);
6954

7055
// defaults
7156
if (page == null) {
7257
page = 0;
7358
}
7459
if (pageSize == null) {
75-
pageSize = 1000;
60+
pageSize = PagingUtility.getDefaultPageSize();
7661
}
7762

7863
Metadata metaData = generateEmptyMetadata();
@@ -81,16 +66,6 @@ protected Metadata generateMetaDataTemplate(Integer page, Integer pageSize) thro
8166
return metaData;
8267
}
8368

84-
private void validatePaging(Integer page, Integer pageSize) throws BrAPIServerException {
85-
boolean pageValid = (page == null) || (page >= 0);
86-
if (!pageValid)
87-
throw new InvalidPagingException("page");
88-
boolean pageSizeValid = (pageSize == null) || (pageSize >= 1);
89-
if (!pageSizeValid)
90-
throw new InvalidPagingException("pageSize");
91-
92-
}
93-
9469
protected Metadata generateEmptyMetadata() {
9570
Metadata metaData = new Metadata();
9671
metaData.setDatafiles(new ArrayList<>());

src/main/java/org/brapi/test/BrAPITestServer/service/PagingUtility.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,59 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6+
import org.brapi.test.BrAPITestServer.exceptions.BrAPIServerException;
7+
import org.brapi.test.BrAPITestServer.exceptions.InvalidPagingException;
8+
import org.springframework.beans.factory.annotation.Value;
69
import org.springframework.data.domain.Page;
710
import org.springframework.data.domain.PageRequest;
811
import org.springframework.data.domain.Pageable;
912
import org.springframework.data.domain.Sort;
1013

1114
import io.swagger.model.IndexPagination;
1215
import io.swagger.model.Metadata;
16+
import org.springframework.stereotype.Component;
1317

18+
import javax.annotation.PostConstruct;
19+
20+
@Component
1421
public class PagingUtility {
22+
@Value("${paging.page-size.default:1000}")
23+
private int defaultPageSize;
24+
@Value("${paging.page-size.max-allowed:65000}")
25+
private int maxAllowablePageSize;
26+
27+
private static int defaultPageSizeStatic;
28+
private static int maxAllowablePageSizeStatic;
29+
30+
@PostConstruct
31+
private void init() {
32+
// Java made me do this - JL
33+
defaultPageSizeStatic = defaultPageSize;
34+
maxAllowablePageSizeStatic = maxAllowablePageSize;
35+
}
36+
1537
public static void calculateMetaData(Metadata metaData) {
1638
int totalCount = metaData.getPagination().getTotalCount();
1739
int pageSize = metaData.getPagination().getPageSize();
1840
metaData.getPagination().setTotalPages((totalCount / pageSize) + Integer.signum( totalCount % pageSize));
1941
}
2042

43+
public static void validatePaging(Integer page, Integer pageSize) throws BrAPIServerException {
44+
boolean pageValid = (page == null) || (page >= 0);
45+
if (!pageValid)
46+
throw new InvalidPagingException("page");
47+
boolean pageSizeValid = (pageSize == null) || (pageSize >= 1);
48+
if (!pageSizeValid)
49+
throw new InvalidPagingException("pageSize");
50+
if (pageSize != null && pageSize > maxAllowablePageSizeStatic) {
51+
throw new InvalidPagingException("pageSize [Over maximum allowable page size of [" + maxAllowablePageSizeStatic + "]] ");
52+
}
53+
}
54+
55+
public static int getDefaultPageSize() {
56+
return defaultPageSizeStatic;
57+
}
58+
2159
public static Pageable getPageRequest(Metadata metaData) {
2260
if (metaData == null) {
2361
metaData = new Metadata();
@@ -34,7 +72,7 @@ public static Pageable getPageRequest(Metadata metaData, Sort sort) {
3472
page = metaData.getPagination().getCurrentPage();
3573
}
3674

37-
int pageSize = 1000;
75+
int pageSize = defaultPageSizeStatic;
3876
if (metaData.getPagination().getPageSize() != null && metaData.getPagination().getPageSize() > 0) {
3977
pageSize = metaData.getPagination().getPageSize();
4078
}

src/main/resources/application.properties.template

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,13 @@ spring.mvc.dispatch-options-request=true
1919

2020
security.oidc_discovery_url=https://example.com/auth/.well-known/openid-configuration
2121
security.enabled=true
22+
security.issuer_url=http://example.com/issuerurl
23+
24+
# This should either be set in accordance with a maximum number of SQL parameters (on JOIN FETCHES of collections,
25+
# if there is more than one collection the IDs of each entity need to be passed through as parameters, and there is a SQL
26+
# maximum of 65535. See GermplasmService.findGermplasmEntities()),
27+
# whatever returns in a reasonable amount of time,
28+
# or if you want to limit for the sake of server efficiency.
29+
paging.page-size.max-allowed=65000
30+
31+
paging.page-size.default=1000

0 commit comments

Comments
 (0)