package org.ovirt.engine.api.restapi.resource; import org.ovirt.engine.api.model.BaseDevice; import org.ovirt.engine.api.model.BaseDevices; import org.ovirt.engine.api.resource.DeviceResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.compat.Guid; public class BackendDeviceResource<D extends BaseDevice, C extends BaseDevices, Q extends IVdcQueryable> extends BackendReadOnlyDeviceResource<D, C, Q> implements DeviceResource<D> { protected VdcActionType updateType; protected ParametersProvider<D, Q> updateParametersProvider; protected EntityIdResolver entityResolver; protected String[] requiredUpdateFields; public BackendDeviceResource(Class<D> modelType, Class<Q> entityType, final Guid guid, final AbstractBackendReadOnlyDevicesResource<D, C, Q> collection, VdcActionType updateType, ParametersProvider<D, Q> updateParametersProvider, String[] requiredUpdateFields, String... subCollections) { super(modelType, entityType, guid, collection, subCollections); this.updateType = updateType; this.updateParametersProvider = updateParametersProvider; this.requiredUpdateFields = requiredUpdateFields; entityResolver = new EntityIdResolver() { @Override public Q lookupEntity(Guid id) { return collection.lookupEntity(guid); } }; } @Override public D update(D resource) { validateParameters(resource, requiredUpdateFields); return performUpdate(resource, entityResolver, updateType, updateParametersProvider); } }