package org.ovirt.engine.api.restapi.resource; import javax.ws.rs.core.Response; import org.ovirt.engine.api.model.AffinityLabel; import org.ovirt.engine.api.resource.AssignedAffinityLabelResource; import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.action.LabelActionParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.LabelBuilder; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendAssignedAffinityLabelResource extends AbstractBackendActionableResource<AffinityLabel, org.ovirt.engine.core.common.businessentities.Label> implements AssignedAffinityLabelResource { private final String parentId; private final BackendAssignedAffinityLabelsResource.ReferencedEntityConstructor<BusinessEntity<Guid>> constructor; public BackendAssignedAffinityLabelResource(String parentId, BackendAssignedAffinityLabelsResource.ReferencedEntityConstructor<BusinessEntity<Guid>> constructor, String id) { super(id, AffinityLabel.class, org.ovirt.engine.core.common.businessentities.Label.class); this.parentId = parentId; this.constructor = constructor; } @Override public AffinityLabel get() { return addLinks(performGet(VdcQueryType.GetLabelById, new IdQueryParameters(guid))); } @Override public Response remove() { QueryIdResolver<Guid> labelResolver = new QueryIdResolver<>(VdcQueryType.GetLabelById, IdQueryParameters.class); org.ovirt.engine.core.common.businessentities.Label entity = getEntity(labelResolver, true); BusinessEntity<Guid> parent = constructor.create(); parent.setId(GuidUtils.asGuid(parentId)); org.ovirt.engine.core.common.businessentities.Label updatedLabel = new LabelBuilder(entity) .removeEntity(parent) .build(); return performAction(VdcActionType.UpdateLabel, new LabelActionParameters(updatedLabel)); } }