package org.ovirt.engine.api.restapi.resource; import java.util.List; import org.ovirt.engine.api.model.Role; import org.ovirt.engine.api.model.Roles; import org.ovirt.engine.api.model.User; import org.ovirt.engine.api.resource.AssignedRolesResource; import org.ovirt.engine.api.resource.RoleResource; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.businessentities.Permission; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; /** * Role assignments to an individual user are mapped to system permissions. */ public class BackendAssignedRolesResource extends AbstractBackendCollectionResource<Role, Permission> implements AssignedRolesResource { private Guid principalId; public BackendAssignedRolesResource(Guid principalId) { super(Role.class, Permission.class); this.principalId = principalId; } @Override public RoleResource getRoleResource(String id) { return inject(new BackendRoleResource(id, principalId)); } @Override public Roles list() { return mapCollection(getBackendCollection(VdcQueryType.GetPermissionsByAdElementId, new IdQueryParameters(principalId))); } protected Roles mapCollection(List<Permission> entities) { Roles collection = new Roles(); for (Permission entity : entities) { if (entity.getObjectType() == VdcObjectType.System) { collection.getRoles().add(addLinks(map(entity))); } } return collection; } @Override protected Role addParents(Role role) { role.setUser(new User()); role.getUser().setId(principalId.toString()); return role; } }