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

Reply via email to