@Override
public DeviceManagementOperation update(DeviceManagementOperation entity) throws KapuaException {
ArgumentValidator.notNull(entity, "deviceManagementOperation");
ArgumentValidator.notNull(entity.getScopeId(), "deviceManagementOperation.scopeId");
ArgumentValidator.notNull(entity.getId(), "deviceManagementOperation.id");
ArgumentValidator.notNull(entity.getStartedOn(), "deviceManagementOperation.startedOn");
ArgumentValidator.notNull(entity.getDeviceId(), "deviceManagementOperation.deviceId");
ArgumentValidator.notNull(entity.getOperationId(), "deviceManagementOperation.operationId");
ArgumentValidator.notNull(entity.getStatus(), "deviceManagementOperation.status");
ArgumentValidator.notNull(entity.getAppId(), "deviceManagementOperation.appId");
ArgumentValidator.notNull(entity.getAction(), "deviceManagementOperation.action");
AUTHORIZATION_SERVICE.checkPermission(PERMISSION_FACTORY.newPermission(DeviceManagementRegistryDomains.DEVICE_MANAGEMENT_REGISTRY_DOMAIN, Actions.write, null));
if (KapuaSecurityUtils.doPrivileged(() -> DEVICE_REGISTRY_SERVICE.find(entity.getScopeId(), entity.getDeviceId()) == null)) {
throw new KapuaEntityNotFoundException(Device.TYPE, entity.getDeviceId());
}
if (find(entity.getScopeId(), entity.getId()) == null) {
throw new KapuaEntityNotFoundException(DeviceManagementOperation.TYPE, entity.getId());
}
return entityManagerSession.onTransactedResult(em -> DeviceManagementOperationDAO.update(em, entity));
}