@SuppressWarnings("unlikely-arg-type") @Test public void testPrincipalRoleHashCodeEquals() { PrincipalRoles pr1 = new PrincipalRoles(); PrincipalRoles pr2 = new PrincipalRoles(); assertEquals(31, pr1.hashCode()); assertFalse(pr1.equals(null)); assertFalse(pr1.equals(this)); assertTrue(pr1.equals(pr2)); pr1.id = "name@domain"; assertNotEquals(31, pr1.hashCode()); assertFalse(pr1.equals(pr2)); pr2.id = "name2@domain"; assertFalse(pr1.equals(pr2)); pr2.id = "name@domain"; assertTrue(pr1.equals(pr2)); }
private static DeferredResult<PrincipalRoles> extractRolesIntoPrincipalRoles(ServiceHost host, Principal principal, List<RoleState> roleStates) { PrincipalRoles result = new PrincipalRoles(); PrincipalUtil.copyPrincipalData(principal, result); if (roleStates == null || roleStates.isEmpty()) { result.projects = new ArrayList<>(); result.roles = new HashSet<>(); return DeferredResult.completed(result); } Set<AuthRole> systemRoles = new HashSet<>(); List<DeferredResult<ProjectEntry>> projectEntries = new ArrayList<>(); for (RoleState roleState : roleStates) { if (isProjectRole(roleState)) { projectEntries.add(extractProjectEntryFromRoleState(host, roleState)); } else { systemRoles.add(extractSystemRoleFromRoleState(roleState)); } } return DeferredResult.allOf(projectEntries) .thenApply(entries -> mergeProjectEntries(entries)) .thenAccept(entries -> result.projects = entries) .thenApply(ignore -> { result.roles = systemRoles; return result; }); }
public static DeferredResult<PrincipalRoles> getAllRolesForPrincipal(Service requestorService, Operation requestorOperation, Principal principal) { PrincipalRoles returnRoles = new PrincipalRoles();
private void handleGetPrincipalRoles(Operation get) { String principalId = extractPropertyFromPath(PATTERN_PRINCIPAL_ROLES, PRINCIPAL_ID_PATH_SEGMENT, get.getUri().getPath()); if (principalId == null) { get.fail(new LocalizableValidationException("Principal ID is required in URI path.", "auth.principalId.required")); return; } PrincipalRoles rolesResponse = new PrincipalRoles(); PrincipalUtil.getPrincipal(this, get, principalId) .thenAccept(principal -> copyPrincipalData(principal, rolesResponse)) .thenCompose(ignore -> { if (rolesResponse.type == PrincipalType.GROUP) { return getDirectlyAssignedProjectRolesForGroup(this, rolesResponse); } return getDirectlyAssignedProjectRolesForUser(this, rolesResponse); }) .thenAccept(projectEntries -> rolesResponse.projects = projectEntries) .thenCompose(ignore -> { if (rolesResponse.type == PrincipalType.GROUP) { return getDirectlyAssignedSystemRolesForGroup(this, rolesResponse); } return getDirectlyAssignedSystemRolesForUser(this, rolesResponse); }) .thenAccept(systemRoles -> rolesResponse.roles = systemRoles) .thenAccept(ignore -> get.setBody(rolesResponse)) .whenCompleteNotify(get); }