This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/3_0_X by this push:
     new 0eed254fbd SCIM: fixing startIndex value in results
0eed254fbd is described below

commit 0eed254fbde0eb5f3ecca8cc5ae09b7c315773d0
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Tue Jul 9 08:53:45 2024 +0200

    SCIM: fixing startIndex value in results
---
 .../syncope/ext/scimv2/cxf/service/AbstractSCIMService.java       | 8 ++++----
 .../src/test/java/org/apache/syncope/fit/core/SCIMITCase.java     | 2 ++
 2 files changed, 6 insertions(+), 4 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 dddb12e687..268c006bd7 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() <= 1
+        int page = request.getStartIndex() <= 1
                 ? 1
                 : (request.getStartIndex() / AnyDAO.DEFAULT_PAGE_SIZE) + 1;
+        int startIndex = request.getStartIndex() <= 1 ? 1 : 
request.getStartIndex();
 
         int itemsPerPage = request.getCount() <= 1 ? AnyDAO.DEFAULT_PAGE_SIZE 
: request.getCount();
 
@@ -177,7 +178,7 @@ abstract class AbstractSCIMService<R extends SCIMResource> {
                 StringUtils.isBlank(request.getFilter())
                 ? null
                 : SearchCondConverter.convert(visitor, request.getFilter()),
-                startIndex,
+                page,
                 itemsPerPage,
                 sort,
                 SyncopeConstants.ROOT_REALM,
@@ -188,8 +189,7 @@ abstract class AbstractSCIMService<R extends SCIMResource> {
             throw new BadRequestException(ErrorType.tooMany, "Too many results 
found");
         }
 
-        ListResponse<R> response = new ListResponse<>(
-                result.getLeft(), startIndex == 1 ? 1 : startIndex - 1, 
itemsPerPage);
+        ListResponse<R> response = new ListResponse<>(result.getLeft(), 
startIndex, itemsPerPage);
 
         result.getRight().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 7d463b8dcb..f28bafd5b4 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());

Reply via email to