getClientRoleMappings(ClientModel app);
/**
* Returns {@code true} if this object is directly or indirectly assigned the given role, {@code false} otherwise.
*
* For example, {@code true} is returned for hasRole(R) if:
*
* - R is directly assigned to this object
* - R is not assigned to this object but this object belongs to a group G which is assigned the role R
* - R is not assigned to this object but this object belongs to a group G, and G belongs to group H which is assigned the role R
*
* @param role
* @return see description
*/
boolean hasRole(RoleModel role);
/**
* Grants the given role to this object.
* @param role
*/
void grantRole(RoleModel role);
Set getRoleMappings();
void deleteRoleMapping(RoleModel role);
}