Skip to content

Commit bd07897

Browse files
authored
Merge pull request #426 from BojithaPiyathilake/returnTypeChange
Changing the response type of GET and POST/.Search
2 parents e6fcca9 + 40dae25 commit bd07897

File tree

10 files changed

+143
-172
lines changed

10 files changed

+143
-172
lines changed

components/org.wso2.carbon.identity.scim2.common/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<groupId>org.wso2.carbon.identity.inbound.provisioning.scim2</groupId>
2222
<artifactId>identity-inbound-provisioning-scim2</artifactId>
2323
<relativePath>../../pom.xml</relativePath>
24-
<version>1.6.20-SNAPSHOT</version>
24+
<version>2.0.0-SNAPSHOT</version>
2525
</parent>
2626

2727
<modelVersion>4.0.0</modelVersion>

components/org.wso2.carbon.identity.scim2.common/src/main/java/org/wso2/carbon/identity/scim2/common/impl/SCIMRoleManager.java

+18-29
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.wso2.charon3.core.objects.Group;
3939
import org.wso2.charon3.core.objects.Role;
4040
import org.wso2.charon3.core.objects.User;
41+
import org.wso2.charon3.core.objects.plainobjects.RolesGetResponse;
4142
import org.wso2.charon3.core.utils.codeutils.ExpressionNode;
4243
import org.wso2.charon3.core.utils.codeutils.Node;
4344
import org.wso2.charon3.core.utils.codeutils.OperationNode;
@@ -175,13 +176,13 @@ public void deleteRole(String roleID) throws CharonException, NotFoundException,
175176
}
176177

177178
@Override
178-
public List<Object> listRolesWithGET(Node rootNode, Integer startIndex, Integer count, String sortBy,
179-
String sortOrder) throws CharonException, NotImplementedException, BadRequestException {
179+
public RolesGetResponse listRolesWithGET(Node rootNode, Integer startIndex, Integer count, String sortBy,
180+
String sortOrder) throws CharonException, NotImplementedException, BadRequestException {
180181

181182
if (sortBy != null || sortOrder != null) {
182183
throw new NotImplementedException("Sorting is not supported.");
183184
} else if (count != null && count == 0) {
184-
return Collections.emptyList();
185+
return new RolesGetResponse(0, Collections.emptyList());
185186
} else if (rootNode != null) {
186187
return filterRoles(rootNode, count, startIndex, sortBy, sortOrder);
187188
} else {
@@ -200,7 +201,7 @@ public List<Object> listRolesWithGET(Node rootNode, Integer startIndex, Integer
200201
* @return Detailed user list.
201202
* @throws CharonException Error filtering the roles.
202203
*/
203-
private List<Object> filterRoles(Node node, Integer count, Integer startIndex, String sortBy, String sortOrder)
204+
private RolesGetResponse filterRoles(Node node, Integer count, Integer startIndex, String sortBy, String sortOrder)
204205
throws CharonException, NotImplementedException, BadRequestException {
205206

206207
// Handle single attribute search.
@@ -225,7 +226,7 @@ private List<Object> filterRoles(Node node, Integer count, Integer startIndex, S
225226
* @return Filtered roles.
226227
* @throws CharonException Error filtering the roles.
227228
*/
228-
private List<Object> filterRolesBySingleAttribute(ExpressionNode node, Integer count, Integer startIndex,
229+
private RolesGetResponse filterRolesBySingleAttribute(ExpressionNode node, Integer count, Integer startIndex,
229230
String sortBy, String sortOrder) throws CharonException, BadRequestException {
230231

231232
String attributeName = node.getAttributeValue();
@@ -241,9 +242,6 @@ private List<Object> filterRolesBySingleAttribute(ExpressionNode node, Integer c
241242
throw new BadRequestException(errorMessage);
242243
}
243244

244-
List<Object> filteredRoles = new ArrayList<>();
245-
// 0th index is to store total number of results.
246-
filteredRoles.add(0);
247245
String searchFilter = getSearchFilter(filterOperation, attributeValue);
248246
if (log.isDebugEnabled()) {
249247
log.debug(String.format("Filtering roleNames from search filter: %s", searchFilter));
@@ -256,14 +254,8 @@ private List<Object> filterRolesBySingleAttribute(ExpressionNode node, Integer c
256254
String.format("Error occurred while listing roles based on the search filter: %s", searchFilter),
257255
e);
258256
}
259-
List<Object> scimRoles = getScimRolesList(roles);
260-
261-
// Set total number of results to 0th index.
262-
filteredRoles.set(0, scimRoles.size());
263-
// Add the results list.
264-
filteredRoles.addAll(scimRoles);
265-
266-
return filteredRoles;
257+
List<Role> scimRoles = getScimRolesList(roles);
258+
return new RolesGetResponse(scimRoles.size(), scimRoles);
267259
}
268260

269261
/**
@@ -312,35 +304,32 @@ private String getSearchFilter(String filterOperation, String attributeValue) {
312304
* @return List of roles.
313305
* @throws CharonException Error while listing users
314306
*/
315-
private List<Object> listRoles(Integer count, Integer startIndex, String sortBy, String sortOrder)
307+
private RolesGetResponse listRoles(Integer count, Integer startIndex, String sortBy, String sortOrder)
316308
throws CharonException, BadRequestException {
317309

318-
List<Object> rolesList = new ArrayList<>();
310+
List<Role> rolesList = new ArrayList<>();
311+
int rolesCount;
319312
try {
320-
// 0th index is to store total number of results.
321-
rolesList.add(0);
322313
List<RoleBasicInfo> roles = roleManagementService
323314
.getRoles(count, startIndex, sortBy, sortOrder, tenantDomain);
324-
List<Object> scimRoles = getScimRolesList(roles);
315+
List<Role> scimRoles = getScimRolesList(roles);
325316

326-
int rolesCount = roleManagementService.getRolesCount(tenantDomain);
317+
rolesCount = roleManagementService.getRolesCount(tenantDomain);
327318
// Set total number of results to 0th index.
328319
if (rolesCount == 0) {
329-
rolesList.set(0, scimRoles.size());
330-
} else {
331-
rolesList.set(0, rolesCount);
320+
rolesCount = scimRoles.size();
332321
}
333322
// Add the results list.
334323
rolesList.addAll(scimRoles);
335324
} catch (IdentityRoleManagementException e) {
336325
throw new CharonException("Error occurred while listing roles.", e);
337326
}
338-
return rolesList;
327+
return new RolesGetResponse(rolesCount, rolesList);
339328
}
340329

341-
private List<Object> getScimRolesList(List<RoleBasicInfo> roles) throws BadRequestException, CharonException {
330+
private List<Role> getScimRolesList(List<RoleBasicInfo> roles) throws BadRequestException, CharonException {
342331

343-
List<Object> scimRoles = new ArrayList<>();
332+
List<Role> scimRoles = new ArrayList<>();
344333
for (RoleBasicInfo roleBasicInfo : roles) {
345334
Role scimRole = new Role();
346335
scimRole.setDisplayName(roleBasicInfo.getName());
@@ -527,7 +516,7 @@ private boolean hasPermissionsChanged(List<String> oldRolePermissions, List<Stri
527516
}
528517

529518
@Override
530-
public List<Object> listRolesWithPost(SearchRequest searchRequest)
519+
public RolesGetResponse listRolesWithPost(SearchRequest searchRequest)
531520
throws NotImplementedException, BadRequestException, CharonException {
532521

533522
return listRolesWithGET(searchRequest.getFilter(), searchRequest.getStartIndex(), searchRequest.getCount(),

0 commit comments

Comments
 (0)