This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new a75c59f1dd SCIM: fixing startIndex value in results
a75c59f1dd is described below
commit a75c59f1dd14c5e10a3f2f9ba3e2603ca98348d2
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Tue Jul 9 08:53:45 2024 +0200
SCIM: fixing startIndex value in results
---
.../apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java | 7 ++++---
.../src/test/java/org/apache/syncope/fit/core/SCIMITCase.java | 2 ++
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git
a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java
b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java
index f7007b1eae..8f91c33303 100644
---
a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java
+++
b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/AbstractSCIMService.java
@@ -155,9 +155,10 @@ abstract class AbstractSCIMService<R extends SCIMResource>
{
SearchCondVisitor visitor = new SearchCondVisitor(type,
confManager.get());
- int startIndex = request.getStartIndex() < 0
+ int page = request.getStartIndex() <= 0
? 0
: request.getStartIndex() / AnyDAO.DEFAULT_PAGE_SIZE;
+ int startIndex = request.getStartIndex() <= 1 ? 1 :
request.getStartIndex();
int itemsPerPage = request.getCount() <= 1 ? AnyDAO.DEFAULT_PAGE_SIZE
: request.getCount();
@@ -176,7 +177,7 @@ abstract class AbstractSCIMService<R extends SCIMResource> {
StringUtils.isBlank(request.getFilter())
? null
: SearchCondConverter.convert(visitor, request.getFilter()),
- PageRequest.of(startIndex, itemsPerPage, Sort.by(sort)),
+ PageRequest.of(page, itemsPerPage, Sort.by(sort)),
SyncopeConstants.ROOT_REALM,
true,
false);
@@ -185,7 +186,7 @@ abstract class AbstractSCIMService<R extends SCIMResource> {
throw new BadRequestException(ErrorType.tooMany, "Too many results
found");
}
- ListResponse<R> response = new
ListResponse<>(result.getTotalElements(), startIndex + 1, itemsPerPage);
+ ListResponse<R> response = new
ListResponse<>(result.getTotalElements(), startIndex, itemsPerPage);
result.forEach(anyTO -> {
SCIMResource resource = null;
diff --git
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
index 5bfc635687..33fc0e738e 100644
---
a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
+++
b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
@@ -322,6 +322,7 @@ public class SCIMITCase extends AbstractITCase {
response = webClient().path("Groups").
query("sortBy", "displayName").
+ query("startIndex", 2).
query("count", 11).
get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
@@ -333,6 +334,7 @@ public class SCIMITCase extends AbstractITCase {
});
assertNotNull(result);
assertTrue(result.getTotalResults() > 0);
+ assertEquals(2, result.getStartIndex());
assertEquals(11, result.getItemsPerPage());
assertFalse(result.getResources().isEmpty());