Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cursor based pagination for SCIM resources effort 2 #5982

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -385,6 +385,8 @@ private EventProperty(){}
public static final String LIMIT = "LIMIT";
public static final String AUTHENTICATION_RESULT = "AUTHENTICATION_RESULT";
public static final String OFFSET = "OFFSET";
public static final String CURSOR = "CURSOR";
public static final String DIRECTION = "DIRECTION";
public static final String SORT_BY = "SORT_BY";
public static final String SORT_ORDER = "SORT_ORDER";
public static final String USER = "USER";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1047,6 +1047,27 @@ public boolean doPreGetUserList(Condition condition, String domain, String profi
return true;
}

@Override
public boolean doPreGetUserList(Condition condition, String domain, String profileName, int limit, String cursor,
UserCoreConstants.PaginationDirection direction, String sortBy, String sortOrder,
UserStoreManager userStoreManager)
throws UserStoreException {

if (!isEnable()) {
return true;
}
for (UserOperationEventListener listener : getUserStoreManagerListeners()) {
if (isNotAResolverListener(listener)) {
if (!((UniqueIDUserOperationEventListener) listener)
.doPreGetUserListWithID(condition, domain, profileName, limit, cursor, direction, sortBy,
sortOrder, userStoreManager)) {
return false;
}
}
}
return true;
}

@Override
public boolean doPreGetUserList(String claimUri, String claimValue, int limit, int offset,
List<String> returnUserNameList, UserStoreManager userStoreManager)
Expand Down Expand Up @@ -1142,6 +1163,29 @@ public boolean doPostGetUserList(Condition condition, String domain, String prof
return true;
}

@Override
public boolean doPostGetUserList(Condition condition, String domain, String profileName, int limit, String cursor,
UserCoreConstants.PaginationDirection direction, String sortBy, String sortOrder,
String[] returnUserNameList, UserStoreManager userStoreManager)
throws UserStoreException {

if (!isEnable()) {
return true;
}
List<User> returnUsersList = getUsersFromNames((AbstractUserStoreManager) userStoreManager,
Arrays.asList(returnUserNameList));
for (UserOperationEventListener listener : getUserStoreManagerListeners()) {
if (isNotAResolverListener(listener)) {
if (!((UniqueIDUserOperationEventListener) listener)
.doPostGetUserListWithID(condition, domain, profileName, limit, cursor, direction, sortBy,
sortOrder, returnUsersList, userStoreManager)) {
return false;
}
}
}
return true;
}

private List<User> getUsersFromNames(AbstractUserStoreManager userStoreManager, List<String> userList)
throws UserStoreException {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1060,6 +1060,26 @@ public boolean doPreGetUserListWithID(Condition condition, String domain, String
return true;
}

@Override
public boolean doPreGetUserListWithID(Condition condition, String domain, String profileName, int limit,
String cursor, UserCoreConstants.PaginationDirection direction, String sortBy,
String sortOrder, UserStoreManager userStoreManager)
throws UserStoreException {

if (!isEnable()) {
return true;
}
for (UserOperationEventListener listener : getUserStoreManagerListeners()) {
if (isNotAResolverListener(listener)) {
if (!listener.doPreGetUserList(condition, domain, profileName, limit, cursor, direction, sortBy,
sortOrder, userStoreManager)) {
return false;
}
}
}
return true;
}

@Override
public boolean doPostGetUserListWithID(Condition condition, String domain, String profileName, int limit,
int offset, String sortBy, String sortOrder, List<User> users,
Expand All @@ -1084,6 +1104,27 @@ public boolean doPostGetUserListWithID(Condition condition, String domain, Strin
return true;
}

@Override
public boolean doPostGetUserListWithID(Condition condition, String domain, String profileName, int limit,
String cursor, UserCoreConstants.PaginationDirection direction, String sortBy, String sortOrder,
List<User> users, UserStoreManager userStoreManager)
throws UserStoreException {

if (!isEnable()) {
return true;
}
List<String> userNamesList = users.stream().map(User::getUsername).collect(Collectors.toList());
String[] userNames = userNamesList.toArray(new String[0]);
for (UserOperationEventListener listener : getUserStoreManagerListeners()) {
if (isNotAResolverListener(listener)) {
return listener
.doPostGetUserList(condition, domain, profileName, limit, cursor, direction, sortBy, sortOrder,
userNames, userStoreManager);
}
}
return true;
}

@Override
public boolean doPostGetUserListOfRoleWithID(String roleName, List<User> userList,
UserStoreManager userStoreManager) throws UserStoreException {
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1831,7 +1831,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- Carbon kernel version -->
<carbon.kernel.version>4.10.10</carbon.kernel.version>
<carbon.kernel.version>4.10.17-SNAPSHOT</carbon.kernel.version>
<carbon.kernel.feature.version>4.7.0</carbon.kernel.feature.version>
<carbon.kernel.package.import.version.range>[4.5.0, 5.0.0)</carbon.kernel.package.import.version.range>
<carbon.kernel.registry.imp.pkg.version>[1.0.1, 2.0.0)</carbon.kernel.registry.imp.pkg.version>
Expand Down