Juan Hernandez has uploaded a new change for review. Change subject: core: Simple parameters for add and remove users ......................................................................
core: Simple parameters for add and remove users The commands that add and remove users and groups receive as parameters the complete entities that have to be added. This patch changes them to use simple parameters. Change-Id: I5c37a686b28f38ce47e9a7d590e3f706164dc09c Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AdGroupsHandlingCommandBase.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDirectoryGroupCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAdGroupCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveUserCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UserCommandBase.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveAdGroupCommandTest.java D backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AdElementParametersBase.java D backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDirectoryGroupParameters.java D backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddUserParameters.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DirectoryIdParameters.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/IdParameters.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java 20 files changed, 374 insertions(+), 370 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/19480/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AdGroupsHandlingCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AdGroupsHandlingCommandBase.java index f46f060..c5101a7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AdGroupsHandlingCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AdGroupsHandlingCommandBase.java @@ -5,14 +5,14 @@ import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.VdcObjectType; -import org.ovirt.engine.core.common.action.AdElementParametersBase; +import org.ovirt.engine.core.common.action.IdParameters; import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.LdapGroup; import org.ovirt.engine.core.common.businessentities.tags; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; -public abstract class AdGroupsHandlingCommandBase<T extends AdElementParametersBase> extends CommandBase<T> { +public abstract class AdGroupsHandlingCommandBase<T extends IdParameters> extends CommandBase<T> { protected tags _tag; private LdapGroup mGroup; private String mGroupName; @@ -31,7 +31,7 @@ } protected Guid getGroupId() { - return getParameters().getAdElementId(); + return getParameters().getId(); } public String getAdGroupName() { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDirectoryGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDirectoryGroupCommand.java deleted file mode 100644 index 50a1591..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDirectoryGroupCommand.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.ovirt.engine.core.bll; - -import java.util.Collections; -import java.util.List; - -import org.ovirt.engine.core.bll.adbroker.AdActionType; -import org.ovirt.engine.core.bll.adbroker.LdapFactory; -import org.ovirt.engine.core.bll.adbroker.LdapSearchByIdParameters; -import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.bll.utils.PermissionSubject; -import org.ovirt.engine.core.common.VdcObjectType; -import org.ovirt.engine.core.common.action.AddDirectoryGroupParameters; -import org.ovirt.engine.core.common.businessentities.LdapGroup; -import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.compat.Guid; - -public class AddDirectoryGroupCommand<T extends AddDirectoryGroupParameters> - extends CommandBase<T> { - - public AddDirectoryGroupCommand(T params) { - super(params); - } - - @Override - public AuditLogType getAuditLogTypeValue() { - return getSucceeded() ? AuditLogType.USER_ADD : AuditLogType.USER_FAILED_ADD_ADUSER; - } - - @Override - protected boolean canDoAction() { - Guid id = null; - String domain = null; - if (getParameters().getGroup() != null) { - addCustomValue("NewUserName", getParameters().getGroup().getname()); - id = getParameters().getGroup().getid(); - domain = getParameters().getGroup().getdomain(); - LdapGroup adGroup = - (LdapGroup) LdapFactory.getInstance(domain).RunAdAction(AdActionType.GetAdGroupByGroupId, - new LdapSearchByIdParameters(domain, id)).getReturnValue(); - if (adGroup == null) { - addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); - return false; - } - } - - if (id == null) { - addCanDoActionMessage(VdcBllMessages.MISSING_DIRECTORY_ELEMENT_ID); - return false; - } - - return true; - } - - @Override - protected void executeCommand() { - if (getParameters().getGroup() != null) { - AdGroupsHandlingCommandBase.initAdGroup(getParameters().getGroup()); - } - setSucceeded(true); - } - - @Override - public List<PermissionSubject> getPermissionCheckSubjects() { - return Collections.singletonList( - new PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID, - VdcObjectType.System, - getActionType().getActionGroup()) - ); - } -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java new file mode 100644 index 0000000..9e579da --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java @@ -0,0 +1,80 @@ +package org.ovirt.engine.core.bll; + +import java.util.Collections; +import java.util.List; + +import org.ovirt.engine.core.bll.adbroker.AdActionType; +import org.ovirt.engine.core.bll.adbroker.LdapFactory; +import org.ovirt.engine.core.bll.adbroker.LdapSearchByIdParameters; +import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; +import org.ovirt.engine.core.common.businessentities.DbGroup; +import org.ovirt.engine.core.common.businessentities.LdapGroup; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.DbGroupDAO; + +public class AddGroupCommand<T extends DirectoryIdParameters> + extends CommandBase<T> { + + // We save a reference to the directory group to avoid looking it up once + // when checking the conditions and another time when actually adding + // the group to the database: + private LdapGroup directoryGroup; + + public AddGroupCommand(T params) { + super(params); + } + + @Override + public AuditLogType getAuditLogTypeValue() { + return getSucceeded() ? AuditLogType.USER_ADD : AuditLogType.USER_FAILED_ADD_ADUSER; + } + + @Override + protected boolean canDoAction() { + String directory = getParameters().getDirectory(); + Guid id = getParameters().getId(); + directoryGroup = (LdapGroup) LdapFactory.getInstance(directory).RunAdAction( + AdActionType.GetAdGroupByGroupId, + new LdapSearchByIdParameters(directory, id) + ).getReturnValue(); + if (directoryGroup == null) { + addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); + return false; + } + + addCustomValue("NewUserName", directoryGroup.getname()); + + return true; + } + + @Override + protected void executeCommand() { + DbGroupDAO dao = getAdGroupDAO(); + DbGroup dbGroup = dao.get(directoryGroup.getid()); + if (dbGroup == null) { + dbGroup = new DbGroup(directoryGroup); + dbGroup.setId(Guid.newGuid()); + dao.save(dbGroup); + } + else { + Guid id = dbGroup.getId(); + dbGroup = new DbGroup(directoryGroup); + dbGroup.setId(id); + dao.update(dbGroup); + } + setSucceeded(true); + } + + @Override + public List<PermissionSubject> getPermissionCheckSubjects() { + return Collections.singletonList( + new PermissionSubject(MultiLevelAdministrationHandler.SYSTEM_OBJECT_ID, + VdcObjectType.System, + getActionType().getActionGroup()) + ); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java index fa662a6..214b09a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java @@ -6,16 +6,22 @@ import org.ovirt.engine.core.bll.adbroker.AdActionType; import org.ovirt.engine.core.bll.adbroker.LdapFactory; import org.ovirt.engine.core.bll.adbroker.LdapSearchByIdParameters; -import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; -import org.ovirt.engine.core.common.action.AddUserParameters; -import org.ovirt.engine.core.common.businessentities.LdapGroup; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; +import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.DbUserDAO; -public class AddUserCommand<T extends AddUserParameters> extends CommandBase<T> { +public class AddUserCommand<T extends DirectoryIdParameters> extends CommandBase<T> { + + // We save a reference to the directory user to avoid looking it up once + // when checking the conditions and another time when actuall adding + // the user to the database: + private LdapUser directoryUser; public AddUserCommand(T params) { super(params); @@ -28,62 +34,48 @@ @Override protected boolean canDoAction() { - Guid userId = null; - String domain = null; - if (getParameters().getUser() != null) { - addCustomValue("NewUserName", getParameters().getUser().getLoginName()); - userId = getParameters().getUser().getId(); - domain = getParameters().getUser().getDomain(); - LdapUser adUser = (LdapUser) LdapFactory.getInstance(domain).RunAdAction(AdActionType.GetAdUserByUserId, - new LdapSearchByIdParameters(domain, userId)).getReturnValue(); - if (adUser == null) { - addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); - return false; - } - // set the AD user on the parameters to save another roundtrip to the AD when adding the user - getParameters().setAdUser(adUser); - } - else if (getParameters().getAdUser() != null) { - addCustomValue("NewUserName", getParameters().getAdUser().getUserName()); - userId = getParameters().getAdUser().getUserId(); - domain = getParameters().getAdUser().getDomainControler(); - LdapUser adUser = (LdapUser) LdapFactory.getInstance(domain).RunAdAction(AdActionType.GetAdUserByUserId, - new LdapSearchByIdParameters(domain, userId)).getReturnValue(); - if (adUser == null) { - addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); - return false; - } - } - else if (getParameters().getAdGroup() != null) { - addCustomValue("NewUserName", getParameters().getAdGroup().getname()); - userId = getParameters().getAdGroup().getid(); - domain = getParameters().getAdGroup().getdomain(); - LdapGroup adGroup = - (LdapGroup) LdapFactory.getInstance(domain).RunAdAction(AdActionType.GetAdGroupByGroupId, - new LdapSearchByIdParameters(domain, userId)).getReturnValue(); - if (adGroup == null) { - addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); - return false; - } - } + // Get the name of the directory and the identifier of the user from + // the parameters: + String directory = getParameters().getDirectory(); + Guid id = getParameters().getId(); - if (userId == null) { - addCanDoActionMessage(VdcBllMessages.MISSING_DIRECTORY_ELEMENT_ID); + // Check that the user is available in the directory (and save the + // reference to avoid looking it up later when actually adding the + // user to the database): + directoryUser = (LdapUser) LdapFactory.getInstance(directory).RunAdAction( + AdActionType.GetAdUserByUserId, + new LdapSearchByIdParameters(directory, id) + ).getReturnValue(); + if (directoryUser == null) { + addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DIRECTORY); return false; } + + // Populate information for the audit log: + addCustomValue("NewUserName", directoryUser.getUserName()); return true; } @Override protected void executeCommand() { - if (getParameters().getAdUser() != null) { - UserCommandBase.persistAuthenticatedUser(getParameters().getAdUser()); + DbUserDAO dao = getDbUserDAO(); + + // First check if the user is already in the database, if it is we + // need to update, if not we need to insert: + DbUser dbUser = dao.get(directoryUser.getUserId()); + if (dbUser == null) { + dbUser = new DbUser(directoryUser); + dbUser.setId(Guid.newGuid()); + dao.save(dbUser); } - // try to add group to db if adGroup sent - else if (getParameters().getAdGroup() != null) { - AdGroupsHandlingCommandBase.initAdGroup(getParameters().getAdGroup()); + else { + Guid id = dbUser.getId(); + dbUser = new DbUser(directoryUser); + dbUser.setId(id); + dao.update(dbUser); } + setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAdGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAdGroupCommand.java deleted file mode 100644 index 80fcb08..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAdGroupCommand.java +++ /dev/null @@ -1,67 +0,0 @@ -package org.ovirt.engine.core.bll; - -import java.util.List; - -import org.ovirt.engine.core.bll.job.ExecutionHandler; -import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.PermissionsOperationsParameters; -import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.businessentities.permissions; -import org.ovirt.engine.core.common.errors.VdcBllMessages; -import org.ovirt.engine.core.compat.Guid; - -public class RemoveAdGroupCommand<T extends AdElementParametersBase> extends AdGroupsHandlingCommandBase<T> { - - /** - * Constructor for command creation when compensation is applied on startup - * - * @param commandId - */ - protected RemoveAdGroupCommand(Guid commandId) { - super(commandId); - } - - public RemoveAdGroupCommand(T parameters) { - super(parameters); - } - - @Override - protected void executeCommand() { - for (permissions permission : getPermissionDAO().getAllDirectPermissionsForAdElement(getAdGroup().getid())) { - PermissionsOperationsParameters param = new PermissionsOperationsParameters(permission); - param.setSessionId(getParameters().getSessionId()); - getBackend().runInternalAction(VdcActionType.RemovePermission, - param, - ExecutionHandler.createDefaultContexForTasks(getExecutionContext())); - } - getAdGroupDAO().remove(getAdGroup().getid()); - setSucceeded(true); - } - - @Override - public AuditLogType getAuditLogTypeValue() { - return getSucceeded() ? AuditLogType.USER_REMOVE_AD_GROUP : AuditLogType.USER_REMOVE_AD_GROUP_FAILED; - } - - @Override - protected boolean canDoAction() { - Guid groupId = getParameters().getAdElementId(); - List<String> reasons = getReturnValue().getCanDoActionMessages(); - boolean returnValue = true; - if (isLastSuperUserGroup(groupId)) { - returnValue = false; - reasons.add(VdcBllMessages.ERROR_CANNOT_REMOVE_LAST_SUPER_USER_ROLE.toString()); - } - if (groupId.equals(MultiLevelAdministrationHandler.EVERYONE_OBJECT_ID)) { - returnValue = false; - reasons.add(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_REMOVE_BUILTIN_GROUP_EVERYONE.name()); - } - - return returnValue; - } - - protected boolean isLastSuperUserGroup(Guid groupId) { - return MultiLevelAdministrationHandler.isLastSuperUserGroup(groupId); - } -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveGroupCommand.java new file mode 100644 index 0000000..dc09793 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveGroupCommand.java @@ -0,0 +1,76 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.bll.job.ExecutionHandler; +import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.PermissionsOperationsParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.permissions; +import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.compat.Guid; + +public class RemoveGroupCommand<T extends IdParameters> extends AdGroupsHandlingCommandBase<T> { + + /** + * Constructor for command creation when compensation is applied on startup + * + * @param commandId + */ + protected RemoveGroupCommand(Guid commandId) { + super(commandId); + } + + public RemoveGroupCommand(T parameters) { + super(parameters); + } + + @Override + protected void executeCommand() { + // Get the identifier of the group from the parameters: + Guid id = getParameters().getId(); + + // Remove the permissions of the group: + for (permissions permission : getPermissionDAO().getAllDirectPermissionsForAdElement(id)) { + PermissionsOperationsParameters param = new PermissionsOperationsParameters(permission); + param.setSessionId(getParameters().getSessionId()); + getBackend().runInternalAction(VdcActionType.RemovePermission, + param, + ExecutionHandler.createDefaultContexForTasks(getExecutionContext())); + } + + // Remove the group itself: + getAdGroupDAO().remove(getAdGroup().getid()); + + setSucceeded(true); + } + + @Override + public AuditLogType getAuditLogTypeValue() { + return getSucceeded()? AuditLogType.USER_REMOVE_AD_GROUP : AuditLogType.USER_REMOVE_AD_GROUP_FAILED; + } + + @Override + protected boolean canDoAction() { + // Get the identifier of the group from the parameters: + Guid id = getParameters().getId(); + + // Check that the group being removed isn't the last remaining group + // of super users: + if (isLastSuperUserGroup(id)) { + addCanDoActionMessage(VdcBllMessages.ERROR_CANNOT_REMOVE_LAST_SUPER_USER_ROLE); + return false; + } + + // Check that the group being removed isn't the everyone group: + if (MultiLevelAdministrationHandler.EVERYONE_OBJECT_ID.equals(id)) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_REMOVE_BUILTIN_GROUP_EVERYONE); + return false; + } + + return true; + } + + protected boolean isLastSuperUserGroup(Guid groupId) { + return MultiLevelAdministrationHandler.isLastSuperUserGroup(groupId); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveUserCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveUserCommand.java index 7d67eea..bd20108 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveUserCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveUserCommand.java @@ -7,15 +7,16 @@ import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.VdcObjectType; -import org.ovirt.engine.core.common.action.AdElementParametersBase; +import org.ovirt.engine.core.common.action.IdParameters; import org.ovirt.engine.core.common.action.PermissionsOperationsParameters; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; -public class RemoveUserCommand<T extends AdElementParametersBase> extends UserCommandBase<T> { +public class RemoveUserCommand<T extends IdParameters> extends UserCommandBase<T> { /** * Constructor for command creation when compensation is applied on startup @@ -32,50 +33,56 @@ @Override public AuditLogType getAuditLogTypeValue() { - return getSucceeded() ? AuditLogType.USER_REMOVE_ADUSER : AuditLogType.USER_FAILED_REMOVE_ADUSER; - + return getSucceeded()? AuditLogType.USER_REMOVE_ADUSER : AuditLogType.USER_FAILED_REMOVE_ADUSER; } @Override protected void executeCommand() { + // Get the identifier of the user to be removed from the parameters: + Guid id = getParameters().getId(); + + // Delete all the permissions of the user: for (permissions permission : DbFacade.getInstance() .getPermissionDao() - .getAllDirectPermissionsForAdElement(getAdUserId())) { + .getAllDirectPermissionsForAdElement(id)) { PermissionsOperationsParameters tempVar = new PermissionsOperationsParameters(permission); tempVar.setShouldBeLogged(false); Backend.getInstance().runInternalAction(VdcActionType.RemovePermission, tempVar, ExecutionHandler.createDefaultContexForTasks(getExecutionContext())); } - DbFacade.getInstance().getDbUserDao().remove(getAdUserId()); - setSucceeded(true); - } - public static boolean CanRemoveUser(Guid user_guid, java.util.ArrayList<String> errors) { - boolean returnValue = true; - // check that the user exists in DB - if (DbFacade.getInstance().getDbUserDao().get(user_guid) == null) { - errors.add(VdcBllMessages.USER_MUST_EXIST_IN_DB.toString()); - returnValue = false; - } - return returnValue; + // Delete the user itself: + getDbUserDAO().remove(id); + + setSucceeded(true); } @Override protected boolean canDoAction() { - boolean result = true; - if (getParameters().getAdElementId().equals(PredefinedUsers.ADMIN_USER.getId())) { + // Get the identifier of the user to be removed from the parameters: + Guid id = getParameters().getId(); + + // Check that we are not trying to remove the builting admin user: + if (PredefinedUsers.ADMIN_USER.getId().equals(id)) { addCanDoActionMessage(VdcBllMessages.USER_CANNOT_REMOVE_ADMIN_USER); - result = false; - } else { - if (getCurrentUser().getId().equals(getParameters().getAdElementId())) { - addCanDoActionMessage(VdcBllMessages.USER_CANNOT_REMOVE_HIMSELF); - result = false; - } else { - result = CanRemoveUser(getParameters().getAdElementId(), getReturnValue().getCanDoActionMessages()); - } + return false; } - return result; + + // Check that the current user isn't trying to remove himself: + if (getCurrentUser().getId().equals(id)) { + addCanDoActionMessage(VdcBllMessages.USER_CANNOT_REMOVE_HIMSELF); + return false; + } + + // Check that the user exists in the database: + DbUser dbUser = getDbUserDAO().get(id); + if (dbUser == null) { + addCanDoActionMessage(VdcBllMessages.USER_MUST_EXIST_IN_DB); + return false; + } + + return true; } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UserCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UserCommandBase.java index bbbb9ed..ab638f8 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UserCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UserCommandBase.java @@ -7,7 +7,7 @@ import org.ovirt.engine.core.bll.adbroker.LdapFactory; import org.ovirt.engine.core.bll.adbroker.LdapSearchByIdParameters; import org.ovirt.engine.core.bll.utils.PermissionSubject; -import org.ovirt.engine.core.common.action.AdElementParametersBase; +import org.ovirt.engine.core.common.action.IdParameters; import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -15,7 +15,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; -public abstract class UserCommandBase<T extends AdElementParametersBase> extends CommandBase<T> { +public abstract class UserCommandBase<T extends IdParameters> extends CommandBase<T> { public UserCommandBase() { } @@ -51,7 +51,7 @@ } protected Guid getAdUserId() { - return getParameters().getAdElementId(); + return getParameters().getId(); } @SuppressWarnings("deprecation") diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveAdGroupCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveAdGroupCommandTest.java index 5922206..70f299c 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveAdGroupCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveAdGroupCommandTest.java @@ -7,7 +7,7 @@ import org.junit.Before; import org.junit.Test; -import org.ovirt.engine.core.common.action.AdElementParametersBase; +import org.ovirt.engine.core.common.action.IdParameters; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; @@ -16,20 +16,20 @@ /** * The command under test. */ - private RemoveAdGroupCommand<AdElementParametersBase> command; + private RemoveGroupCommand<IdParameters> command; private Guid adElementId = Guid.newGuid(); @Before public void initializeCommand() { - AdElementParametersBase parameters = createParameters(); - command = spy(new RemoveAdGroupCommand<AdElementParametersBase>(parameters)); + IdParameters parameters = createParameters(); + command = spy(new RemoveGroupCommand<IdParameters>(parameters)); } /** * @return Valid parameters for the command. */ - private AdElementParametersBase createParameters() { - return new AdElementParametersBase(adElementId); + private IdParameters createParameters() { + return new IdParameters(adElementId); } @Test diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AdElementParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AdElementParametersBase.java deleted file mode 100644 index b64eb67..0000000 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AdElementParametersBase.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.ovirt.engine.core.common.action; - -import org.ovirt.engine.core.compat.Guid; - -public class AdElementParametersBase extends VdcActionParametersBase { - private static final long serialVersionUID = -8078914032408357639L; - private Guid _adElementId; - - public AdElementParametersBase(Guid adElementId) { - _adElementId = adElementId; - } - - public Guid getAdElementId() { - return _adElementId; - } - - public AdElementParametersBase() { - _adElementId = Guid.Empty; - } -} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDirectoryGroupParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDirectoryGroupParameters.java deleted file mode 100644 index 0debbd3..0000000 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddDirectoryGroupParameters.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.ovirt.engine.core.common.action; - -import java.io.Serializable; - -import org.ovirt.engine.core.common.businessentities.LdapGroup; - -public class AddDirectoryGroupParameters extends VdcActionParametersBase implements Serializable { - private static final long serialVersionUID = -3161545951041734975L; - - private LdapGroup group; - - public void setGroup(LdapGroup group) { - this.group = group; - } - - public LdapGroup getGroup() { - return group; - } - -} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddUserParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddUserParameters.java deleted file mode 100644 index 54ec129..0000000 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddUserParameters.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.ovirt.engine.core.common.action; - -import java.io.Serializable; - -import org.ovirt.engine.core.common.businessentities.DbUser; -import org.ovirt.engine.core.common.businessentities.LdapUser; -import org.ovirt.engine.core.common.businessentities.LdapGroup; - -public class AddUserParameters extends VdcActionParametersBase implements Serializable { - private static final long serialVersionUID = 3345484510595493227L; - - private DbUser user; - - private LdapGroup adGroup; - - private LdapUser ldapUser; - - public void setUser(DbUser user) { - this.user = user; - } - - public DbUser getUser() { - return user; - } - - public void setAdGroup(LdapGroup adGroup) { - this.adGroup = adGroup; - } - - public LdapGroup getAdGroup() { - return adGroup; - } - - public void setAdUser(LdapUser ldapUser) { - this.ldapUser = ldapUser; - } - - public LdapUser getAdUser() { - return ldapUser; - } - -} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DirectoryIdParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DirectoryIdParameters.java new file mode 100644 index 0000000..3658f72 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/DirectoryIdParameters.java @@ -0,0 +1,28 @@ +package org.ovirt.engine.core.common.action; + +import java.io.Serializable; + +import org.ovirt.engine.core.compat.Guid; + +public class DirectoryIdParameters extends VdcActionParametersBase implements Serializable { + private static final long serialVersionUID = 3601116892296829414L; + + private String directory; + private Guid id; + + public void setDirectory(String directory) { + this.directory = directory; + } + + public String getDirectory() { + return directory; + } + + public void setId(Guid id) { + this.id = id; + } + + public Guid getId() { + return id; + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/IdParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/IdParameters.java new file mode 100644 index 0000000..aaf5157 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/IdParameters.java @@ -0,0 +1,21 @@ +package org.ovirt.engine.core.common.action; + +import org.ovirt.engine.core.compat.Guid; + +public class IdParameters extends VdcActionParametersBase { + private static final long serialVersionUID = -8078914032408357639L; + + private Guid id; + + public IdParameters() { + // Nothing. + } + + public IdParameters(Guid id) { + this.id = id; + } + + public Guid getId() { + return id; + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResource.java index fcf31ca..2337a64 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResource.java @@ -13,8 +13,8 @@ import org.ovirt.engine.api.model.Groups; import org.ovirt.engine.api.resource.GroupResource; import org.ovirt.engine.api.resource.GroupsResource; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.AddDirectoryGroupParameters; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.LdapGroup; @@ -92,7 +92,7 @@ * directory group that will be added to the database when performing the * {@code add} operation. * - * @param username the name of the user that will be searched in the + * @param groupname the name of the user that will be searched in the * directory * @param domain the name of the directory where the search will be * performed @@ -182,11 +182,12 @@ .entity("No such group: " + group.getName() + " in domain " + domain) .build(); } - AddDirectoryGroupParameters newGroup = new AddDirectoryGroupParameters(); - newGroup.setGroup(directoryGroup); + DirectoryIdParameters addGroup = new DirectoryIdParameters(); + addGroup.setDirectory(directoryGroup.getdomain()); + addGroup.setId(directoryGroup.getid()); return performCreate( VdcActionType.AddGroup, - newGroup, + addGroup, new GroupIdResolver(directoryGroup.getid()), BaseResource.class ); @@ -194,7 +195,7 @@ @Override public Response performRemove(String id) { - return performAction(VdcActionType.RemoveGroup, new AdElementParametersBase(asGuid(id))); + return performAction(VdcActionType.RemoveGroup, new IdParameters(asGuid(id))); } private boolean isNameContainsDomain(Group group) { diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResource.java index afb72de..96e9e79 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResource.java @@ -17,8 +17,8 @@ import org.ovirt.engine.api.model.Users; import org.ovirt.engine.api.resource.UserResource; import org.ovirt.engine.api.resource.UsersResource; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.AddUserParameters; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.LdapUser; @@ -143,7 +143,7 @@ @Override public Response performRemove(String id) { - return performAction(VdcActionType.RemoveUser, new AdElementParametersBase(asGuid(id))); + return performAction(VdcActionType.RemoveUser, new IdParameters(asGuid(id))); } protected Users mapDbUserCollection(List<DbUser> entities) { @@ -215,17 +215,20 @@ validateParameters(user, "domain.id|name"); } String domain = getDomain(user); - LdapUser adUser = getEntity(LdapUser.class, - SearchType.AdUser, - getDirectoryUserSearchPattern(user.getUserName(), domain)); - if (adUser == null) { + LdapUser directoryUser = getEntity( + LdapUser.class, + SearchType.AdUser, + getDirectoryUserSearchPattern(user.getUserName(), domain) + ); + if (directoryUser == null) { return Response.status(Status.BAD_REQUEST) .entity("No such user: " + user.getUserName() + " in domain " + domain) .build(); } - AddUserParameters newUser = new AddUserParameters(); - newUser.setAdUser(adUser); - return performCreate(VdcActionType.AddUser, newUser, new UserIdResolver(adUser.getUserId()), BaseResource.class); + DirectoryIdParameters addUser = new DirectoryIdParameters(); + addUser.setDirectory(directoryUser.getDomainControler()); + addUser.setId(directoryUser.getUserId()); + return performCreate(VdcActionType.AddUser, addUser, new UserIdResolver(directoryUser.getUserId()), BaseResource.class); } private boolean isNameContainsDomain(User user) { diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResourceTest.java index 5ad376d..7b2c309 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendGroupsResourceTest.java @@ -10,8 +10,8 @@ import org.ovirt.engine.api.model.Domain; import org.ovirt.engine.api.model.Fault; import org.ovirt.engine.api.model.Group; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.AddDirectoryGroupParameters; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.LdapGroup; @@ -126,8 +126,8 @@ setUriInfo( setUpActionExpectations( VdcActionType.RemoveGroup, - AdElementParametersBase.class, - new String[] { "AdElementId" }, + IdParameters.class, + new String[] { "Id" }, new Object[] { GUIDS[0] }, true, true @@ -179,8 +179,8 @@ setUriInfo( setUpActionExpectations( VdcActionType.RemoveGroup, - AdElementParametersBase.class, - new String[] { "AdElementId" }, + IdParameters.class, + new String[] { "Id" }, new Object[] { GUIDS[0] }, canDo, success @@ -210,9 +210,9 @@ ); setUpCreationExpectations( VdcActionType.AddGroup, - AddDirectoryGroupParameters.class, - new String[] { "Group.id" }, - new Object[] { GUIDS[0] }, + DirectoryIdParameters.class, + new String[] { "Directory", "Id" }, + new Object[] { DOMAIN, GUIDS[0] }, true, true, null, @@ -249,9 +249,9 @@ ); setUpCreationExpectations( VdcActionType.AddGroup, - AddDirectoryGroupParameters.class, - new String[] { "Group.id" }, - new Object[] { GUIDS[0] }, + DirectoryIdParameters.class, + new String[] { "Directory", "Id" }, + new Object[] { DOMAIN, GUIDS[0] }, true, true, null, diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java index 85e2974..b25d78e 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java @@ -14,8 +14,8 @@ import org.ovirt.engine.api.model.Fault; import org.ovirt.engine.api.model.Group; import org.ovirt.engine.api.model.User; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.AddUserParameters; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.LdapUser; @@ -54,8 +54,8 @@ setUriInfo( setUpActionExpectations( VdcActionType.RemoveUser, - AdElementParametersBase.class, - new String[] { "AdElementId" }, + IdParameters.class, + new String[] { "Id" }, new Object[] { GUIDS[0] }, true, true @@ -109,8 +109,8 @@ setUriInfo( setUpActionExpectations( VdcActionType.RemoveUser, - AdElementParametersBase.class, - new String[] { "AdElementId" }, + IdParameters.class, + new String[] { "Id" }, new Object[] { GUIDS[0] }, canDo, success @@ -186,9 +186,9 @@ ); setUpCreationExpectations( VdcActionType.AddUser, - AddUserParameters.class, - new String[] { "AdUser.UserId" }, - new Object[] { GUIDS[0] }, + DirectoryIdParameters.class, + new String[] { "Directory", "Id" }, + new Object[] { DOMAIN, GUIDS[0] }, true, true, null, diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java index 6402895..fd7dda4 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/test/util/TestHelper.java @@ -1,5 +1,6 @@ package org.ovirt.engine.api.restapi.test.util; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -56,7 +57,16 @@ if (matches) { matches = count == llhs.size(); } - } else { + } + else if (lhs instanceof byte[] && rhs instanceof byte[]) { + byte[] lhsBytes = (byte[]) lhs; + byte[] rhsBytes = (byte[]) rhs; + matches = lhsBytes.length == rhsBytes.length; + if (matches) { + matches = matches && Arrays.equals(lhsBytes, rhsBytes); + } + } + else { matches = lhs.equals(rhs); } return matches; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java index dc11ae1..cd63453 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java @@ -5,13 +5,12 @@ import java.util.Map; import org.ovirt.engine.core.common.VdcActionUtils; -import org.ovirt.engine.core.common.action.AdElementParametersBase; -import org.ovirt.engine.core.common.action.AddUserParameters; +import org.ovirt.engine.core.common.action.IdParameters; import org.ovirt.engine.core.common.action.AttachEntityToTagParameters; +import org.ovirt.engine.core.common.action.DirectoryIdParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.DbUser; -import org.ovirt.engine.core.common.businessentities.LdapGroup; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.tags; import org.ovirt.engine.core.common.interfaces.SearchType; @@ -33,8 +32,8 @@ import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; +import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; import org.ovirt.engine.ui.uicompat.ObservableCollection; public class UserListModel extends ListWithDetailsModel @@ -448,36 +447,42 @@ } } - ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); + ArrayList<VdcActionType> actionsList = new ArrayList<VdcActionType>(items.size()); + ArrayList<VdcActionParametersBase> parametersList = new ArrayList<VdcActionParametersBase>(items.size()); + ArrayList<IFrontendActionAsyncCallback> callbacksList = new ArrayList<IFrontendActionAsyncCallback>(items.size()); for (DbUser item : items) { - if (!item.isGroup()) + if (item.isGroup()) { - AddUserParameters tempVar = new AddUserParameters(); - tempVar.setUser(item); - parameters.add(tempVar); + actionsList.add(VdcActionType.AddGroup); } else { - AddUserParameters tempVar2 = new AddUserParameters(); - tempVar2.setAdGroup(new LdapGroup(item.getId(), item.getFirstName(), item.getDomain())); - parameters.add(tempVar2); + actionsList.add(VdcActionType.AddUser); } + DirectoryIdParameters parameters = new DirectoryIdParameters(); + parameters.setDirectory(item.getDomain()); + parameters.setId(item.getId()); + parametersList.add(parameters); + callbacksList.add(null); } model.startProgress(null); - Frontend.RunMultipleAction(VdcActionType.AddUser, parameters, - new IFrontendMultipleActionAsyncCallback() { - @Override - public void executed(FrontendMultipleActionAsyncResult result) { + IFrontendActionAsyncCallback lastCallback = new IFrontendActionAsyncCallback() { + @Override + public void executed(FrontendActionAsyncResult result) { + AdElementListModel localModel = (AdElementListModel) result.getState(); + localModel.stopProgress(); + cancel(); + } + }; - AdElementListModel localModel = (AdElementListModel) result.getState(); - localModel.stopProgress(); - cancel(); + if (callbacksList.size() > 0) { + callbacksList.set(callbacksList.size() - 1, lastCallback); + } - } - }, model); + Frontend.RunMultipleActions(actionsList, parametersList, callbacksList, lastCallback, model); } public void onRemove() @@ -490,11 +495,11 @@ { if (!item.isGroup()) { - userPrms.add(new AdElementParametersBase(item.getId())); + userPrms.add(new IdParameters(item.getId())); } else { - groupPrms.add(new AdElementParametersBase(item.getId())); + groupPrms.add(new IdParameters(item.getId())); } } -- To view, visit http://gerrit.ovirt.org/19480 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5c37a686b28f38ce47e9a7d590e3f706164dc09c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches