Hello Yair Zaslavsky,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/32008

to review the following change.

Change subject: aaa: Associate users only with managed groups by oVirt
......................................................................

aaa: Associate users only with managed groups by oVirt

This patch will store at groupNames only groups that are managed
by Ovirt (i.e - groups that exist in the groups DB table).

Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1120720
Change-Id: I8a5daf3c68cc04ebd4ad0ec6cfdfd6cf16ececb9
Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsSpmIdCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LoginBaseCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbUserDAOTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUserResourceTest.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResourceTest.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/linq/LinqUtils.java
M 
backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/linq/LinqUtilsTest.java
17 files changed, 67 insertions(+), 77 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/32008/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsSpmIdCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsSpmIdCommand.java
index 0cf18b2..18afeab 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsSpmIdCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVdsSpmIdCommand.java
@@ -64,7 +64,7 @@
     private void insertSpmIdToDb(List<vds_spm_id_map> vds_spm_id_mapList) {
         // according to shaharf the first id is 1
         int selectedId = 1;
-        List<Integer> list = LinqUtils.foreach(vds_spm_id_mapList, new 
Function<vds_spm_id_map, Integer>() {
+        List<Integer> list = LinqUtils.transformToList(vds_spm_id_mapList, new 
Function<vds_spm_id_map, Integer>() {
             @Override
             public Integer eval(vds_spm_id_map vds_spm_id_map) {
                 return vds_spm_id_map.getvds_spm_id();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
index 360254f..1496915 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommandBase.java
@@ -6,7 +6,6 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -44,10 +43,10 @@
 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.LockProperties.Scope;
 import org.ovirt.engine.core.common.action.LockProperties;
-import 
org.ovirt.engine.core.common.action.VdcActionParametersBase.CommandExecutionReason;
+import org.ovirt.engine.core.common.action.LockProperties.Scope;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
+import 
org.ovirt.engine.core.common.action.VdcActionParametersBase.CommandExecutionReason;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskCreationInfo;
@@ -56,9 +55,9 @@
 import org.ovirt.engine.core.common.businessentities.ActionVersionMap;
 import org.ovirt.engine.core.common.businessentities.AsyncTasks;
 import org.ovirt.engine.core.common.businessentities.BusinessEntity;
+import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot;
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot.EntityStatusSnapshot;
 import 
org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot.SnapshotType;
-import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot;
 import org.ovirt.engine.core.common.businessentities.CommandEntity;
 import org.ovirt.engine.core.common.businessentities.IVdsAsyncCommand;
 import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
@@ -924,7 +923,7 @@
      * @return <code>true</code> if the current user is authorized to run the 
action, <code>false</code> otherwise
      */
     protected boolean checkUserAndGroupsAuthorization(Guid userId,
-            HashSet<Guid> groupIds,
+            List<Guid> groupIds,
             final ActionGroup actionGroup,
             final Guid object,
             final VdcObjectType type,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
index 30f352a..a93a46f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
@@ -607,7 +607,7 @@
                 && !getParameters().getCopyCollapse()) {
             List<StorageDomain> domains = 
runInternalQuery(VdcQueryType.GetStorageDomainsByVmTemplateId,
                     new 
IdQueryParameters(getVm().getVmtGuid())).getReturnValue();
-            List<Guid> domainsId = LinqUtils.foreach(domains, new 
Function<StorageDomain, Guid>() {
+            List<Guid> domainsId = LinqUtils.transformToList(domains, new 
Function<StorageDomain, Guid>() {
                 @Override
                 public Guid eval(StorageDomain storageDomainStatic) {
                     return storageDomainStatic.getId();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
index b5f5c81..0d7695f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
@@ -108,7 +108,7 @@
     }
 
     private ArrayList<DiskImage> getDiskImageListFromDiskMap(Map<Guid, Disk> 
diskMap) {
-        return new ArrayList<>(LinqUtils.foreach(diskMap.values(), new 
Function<Disk, DiskImage>() {
+        return new ArrayList<>(LinqUtils.transformToList(diskMap.values(), new 
Function<Disk, DiskImage>() {
             @Override
             public DiskImage eval(Disk disk) {
                 return (DiskImage) disk;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java
index 105cfcb..184a9ef 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OvfDataUpdater.java
@@ -454,7 +454,7 @@
         List<DiskImage> allTemplateImages = template.getDiskList();
         String templateMeta = generateVmTemplateMetadata(template, 
allTemplateImages);
         metaDictionary.put(template.getId(), new KeyValuePairCompat<String, 
List<Guid>>(
-                templateMeta, LinqUtils.foreach(allTemplateImages, new 
Function<DiskImage, Guid>() {
+                templateMeta, LinqUtils.transformToList(allTemplateImages, new 
Function<DiskImage, Guid>() {
                     @Override
                     public Guid eval(DiskImage diskImage) {
                         return diskImage.getId();
@@ -507,7 +507,7 @@
         String vmMeta = generateVmMetadata(vm, allVmImages);
         metaDictionary.put(
                 vm.getId(),
-                new KeyValuePairCompat<String, List<Guid>>(vmMeta, 
LinqUtils.foreach(vm.getDiskMap().values(),
+                new KeyValuePairCompat<String, List<Guid>>(vmMeta, 
LinqUtils.transformToList(vm.getDiskMap().values(),
                         new Function<Disk, Guid>() {
                             @Override
                             public Guid eval(Disk a) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index 43286b8..c70077d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -311,7 +311,7 @@
 
 
     private List<VdcActionParametersBase> 
createMigrateVmToServerParametersList(List<VmStatic> vmsToMigrate, final VDS 
vds) {
-        return LinqUtils.foreach(vmsToMigrate,
+        return LinqUtils.transformToList(vmsToMigrate,
                 new Function<VmStatic, VdcActionParametersBase>() {
             @Override
             public VdcActionParametersBase eval(VmStatic vm) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
index 56285e0..08cf1a2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DirectoryUtils.java
@@ -4,14 +4,14 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.ovirt.engine.api.extensions.ExtKey;
 import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.aaa.Authz;
 import org.ovirt.engine.api.extensions.aaa.Authz.GroupRecord;
 import org.ovirt.engine.api.extensions.aaa.Authz.PrincipalRecord;
-import org.ovirt.engine.api.extensions.aaa.Authz;
 import org.ovirt.engine.core.aaa.AuthzUtils;
 import org.ovirt.engine.core.aaa.DirectoryGroup;
 import org.ovirt.engine.core.aaa.DirectoryUser;
@@ -25,16 +25,26 @@
 
 public class DirectoryUtils {
 
-    public static HashSet<Guid> getGroupIdsFromPrincipal(String authz, ExtMap 
principal) {
-        HashSet<Guid> results = new HashSet<Guid>();
+    public static DbUser mapPrincipalRecordToDbUser(String authz, ExtMap 
principal) {
+        principal = principal.clone();
+        flatGroups(principal);
+        DbUser dbUser = 
DbFacade.getInstance().getDbUserDao().getByExternalId(authz,  
principal.<String>get(PrincipalRecord.ID));
+        Guid userId = dbUser != null ? dbUser.getId() : Guid.newGuid();
+        dbUser = new DbUser(mapPrincipalRecordToDirectoryUser(authz, 
principal));
+        dbUser.setId(userId);
         DbGroupDAO dao = DbFacade.getInstance().getDbGroupDao();
+        LinkedList<Guid> groupIds = new LinkedList<Guid>();
+        LinkedList<String> groupsNames = new LinkedList<String>();
         for (ExtMap group : principal.get(PrincipalRecord.GROUPS, 
Collections.<ExtMap> emptyList())) {
             DbGroup dbGroup = dao.getByExternalId(authz, group.<String> 
get(GroupRecord.ID));
             if (dbGroup != null) {
-                results.add(dbGroup.getId());
+                groupIds.add(dbGroup.getId());
+                groupsNames.add(dbGroup.getName());
             }
         }
-        return results;
+        dbUser.setGroupIds(groupIds);
+        dbUser.setGroupNames(groupsNames);
+        return dbUser;
     }
 
     public static Collection<DirectoryUser> findDirectoryUsersByQuery(
@@ -131,10 +141,6 @@
                         resolveGroups,
                         resolveGroupsRecursive)
                         );
-    }
-
-    public static DbUser mapPrincipalRecordToDbUser(final String authzName, 
final ExtMap principalRecord) {
-        return new DbUser(mapPrincipalRecordToDirectoryUser(authzName, 
principalRecord));
     }
 
     public static DirectoryUser mapPrincipalRecordToDirectoryUser(final String 
authzName, final ExtMap principalRecord) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LoginBaseCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LoginBaseCommand.java
index 126c840..843b94c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LoginBaseCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/LoginBaseCommand.java
@@ -14,9 +14,8 @@
 import org.ovirt.engine.api.extensions.Base;
 import org.ovirt.engine.api.extensions.ExtMap;
 import org.ovirt.engine.api.extensions.aaa.Acct;
-import org.ovirt.engine.api.extensions.aaa.Authn.AuthRecord;
 import org.ovirt.engine.api.extensions.aaa.Authn;
-import org.ovirt.engine.api.extensions.aaa.Authz.PrincipalRecord;
+import org.ovirt.engine.api.extensions.aaa.Authn.AuthRecord;
 import org.ovirt.engine.api.extensions.aaa.Authz;
 import org.ovirt.engine.api.extensions.aaa.Mapping;
 import org.ovirt.engine.core.aaa.AcctUtils;
@@ -36,7 +35,6 @@
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
@@ -256,16 +254,7 @@
         }
 
         // Check that the user exists in the database, if it doesn't exist 
then we need to add it now:
-        DirectoryUtils.flatGroups(principalRecord);
-        DbUser dbUser =
-                getDbUserDAO().getByExternalId(
-                        AuthzUtils.getName(profile.getAuthz()),
-                        principalRecord.<String> get(PrincipalRecord.ID));
-        if (dbUser == null) {
-            dbUser = 
DirectoryUtils.mapPrincipalRecordToDbUser(AuthzUtils.getName(profile.getAuthz()),
 principalRecord);
-            dbUser.setId(Guid.newGuid());
-        }
-        
dbUser.setGroupIds(DirectoryUtils.getGroupIdsFromPrincipal(AuthzUtils.getName(profile.getAuthz()),
 principalRecord));
+        DbUser dbUser = 
DirectoryUtils.mapPrincipalRecordToDbUser(AuthzUtils.getName(profile.getAuthz()),
 principalRecord);
         if (!dbUser.isActive()) {
             dbUser.setActive(true);
             log.info(
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
index 3abb306..5102145 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
@@ -52,9 +52,7 @@
                                 authzExtension, userIdsPerNamespace.getKey(),
                                 userIdsPerNamespace.getValue())
                         ) {
-                            DirectoryUtils.flatGroups(principal);
                             DbUser dbUser = 
DirectoryUtils.mapPrincipalRecordToDbUser(authz, principal);
-                            
dbUser.setGroupIds(DirectoryUtils.getGroupIdsFromPrincipal(authz, principal));
                             activeUsers.put(dbUser.getExternalId(), dbUser);
                     }
                 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
index 9280464..d13b6fd 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/ISCSIStorageHelper.java
@@ -103,7 +103,7 @@
         // if we have lun id then filter by this lun
         // else get vg's luns from db
         List<String> lunsByVg =
-                lunId.isEmpty() ? 
LinqUtils.foreach(DbFacade.getInstance().getLunDao().getAllForVolumeGroup(vgId),
+                lunId.isEmpty() ? 
LinqUtils.transformToList(DbFacade.getInstance().getLunDao().getAllForVolumeGroup(vgId),
                         new Function<LUNs, String>() {
                             @Override
                             public String eval(LUNs a) {
@@ -128,7 +128,7 @@
         for (StorageServerConnections connection : connections) {
             fillConnectionDetailsIfNeeded(connection);
             if (connection.getid() != null) {
-                List<String> list = LinqUtils.foreach(
+                List<String> list = LinqUtils.transformToList(
                         
DbFacade.getInstance().getLunDao().getAllForStorageServerConnection(connection.getid()),
                         new Function<LUNs, String>() {
                             @Override
@@ -175,7 +175,7 @@
                      * TODO: Vitaly check if luns in the same pool.
                      */
                     List<String> strings =
-                            LinqUtils.foreach(
+                            LinqUtils.transformToList(
                                     DbFacade.getInstance()
                                             
.getStorageServerConnectionLunMapDao()
                                             .getAll(lun.getLUN_id()),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
index 3a04566..7e8beec 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/DbUser.java
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.common.businessentities.aaa;
 
-import java.util.Arrays;
-import java.util.HashSet;
+import java.util.LinkedList;
 
 import javax.validation.constraints.Size;
 
@@ -66,35 +65,20 @@
      */
     private boolean isAdmin;
 
-    private HashSet<String> groupNames;
+    private LinkedList<String> groupNames;
 
     /**
      * Comma delimited list of group identifiers.
      */
-    private HashSet<Guid> groupIds;
+    private LinkedList<Guid> groupIds;
 
     public DbUser() {
         loginName = "";
         firstName = "";
         lastName = "";
         department = "";
-        groupNames = new HashSet<String>();
-        groupIds = new HashSet<Guid>();
-        role = "";
-        note = "";
-    }
-
-    public DbUser(LdapUser ldapUser) {
-        externalId = ldapUser.getUserId();
-        domain = ldapUser.getDomainControler();
-        namespace = ldapUser.getNamespace();
-        loginName = ldapUser.getUserName();
-        firstName = ldapUser.getName();
-        lastName = ldapUser.getSurName();
-        department = ldapUser.getDepartment();
-        email = ldapUser.getEmail();
-        active = true;
-        groupNames = new 
HashSet<String>(Arrays.asList(ldapUser.getGroup().trim().split(" *, *")));
+        groupNames = new LinkedList<String>();
+        groupIds = new LinkedList<Guid>();
         role = "";
         note = "";
     }
@@ -111,7 +95,7 @@
         active = true;
         role = "";
         note = "";
-        groupNames = new HashSet<String>();
+        groupNames = new LinkedList<String>();
         for (DirectoryGroup directoryGroup : directoryUser.getGroups()) {
             groupNames.add(directoryGroup.getName());
         }
@@ -189,11 +173,11 @@
         email = value;
     }
 
-    public HashSet<String> getGroupNames() {
+    public LinkedList<String> getGroupNames() {
         return groupNames;
     }
 
-    public void setGroupNames(HashSet<String> value) {
+    public void setGroupNames(LinkedList<String> value) {
         groupNames = value;
     }
 
@@ -238,13 +222,13 @@
         return isAdmin;
     }
 
-    public void setGroupIds(HashSet<Guid> groupIds) {
+    public void setGroupIds(LinkedList<Guid> groupIds) {
         this.groupIds = groupIds;
     }
 
-    public HashSet<Guid> getGroupIds() {
+    public LinkedList<Guid> getGroupIds() {
         if (groupIds == null) {
-            groupIds = new HashSet<Guid>();
+            groupIds = new LinkedList<Guid>();
         }
         return groupIds;
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAODbFacadeImpl.java
index ac53cba..5680990 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbUserDAODbFacadeImpl.java
@@ -3,7 +3,7 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.Arrays;
-import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
@@ -29,7 +29,7 @@
             entity.setDepartment(rs.getString("department"));
             entity.setDomain(rs.getString("domain"));
             entity.setEmail(rs.getString("email"));
-            entity.setGroupNames(new 
HashSet<String>(Arrays.asList(StringUtils.split(rs.getString("groups"), ','))));
+            entity.setGroupNames(new 
LinkedList<String>(Arrays.asList(StringUtils.split(rs.getString("groups"), 
','))));
             entity.setFirstName(rs.getString("name"));
             entity.setNote(rs.getString("note"));
             entity.setNote(rs.getString("note"));
@@ -39,14 +39,14 @@
             entity.setId(getGuidDefaultEmpty(rs, "user_id"));
             entity.setLoginName(rs.getString("username"));
             entity.setAdmin(rs.getBoolean("last_admin_check_status"));
-            entity.setGroupIds(convertToGuidSet(rs.getString("group_ids"), 
','));
+            entity.setGroupIds(convertToGuidList(rs.getString("group_ids"), 
','));
             entity.setExternalId(rs.getString("external_id"));
             entity.setNamespace(rs.getString("namespace"));
             return entity;
         }
 
-        private HashSet<Guid> convertToGuidSet(String str, char delimiter) {
-            HashSet<Guid> results = new HashSet<>();
+        private LinkedList<Guid> convertToGuidList(String str, char delimiter) 
{
+            LinkedList<Guid> results = new LinkedList<>();
             if (str != null) {
                 for (String id : str.split(String.format(" *%s *", 
delimiter))) {
                     results.add(Guid.createGuidFromString(id));
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbUserDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbUserDAOTest.java
index c2c0035..a106568 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbUserDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbUserDAOTest.java
@@ -7,7 +7,7 @@
 import static org.junit.Assert.assertTrue;
 
 import java.util.Arrays;
-import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.junit.Before;
@@ -43,7 +43,7 @@
         newUser.setLoginName("newuser");
         newUser.setEmail("newu...@redhat.com");
         newUser.setDomain("domain");
-        newUser.setGroupNames(new HashSet<String>(Arrays.asList("groups")));
+        newUser.setGroupNames(new LinkedList<String>(Arrays.asList("groups")));
         newUser.setNamespace("*");
     }
 
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUserResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUserResourceTest.java
index 4d0ee3e..91a98d7 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUserResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUserResourceTest.java
@@ -5,6 +5,7 @@
 
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.LinkedList;
 
 import javax.ws.rs.WebApplicationException;
 
@@ -92,7 +93,7 @@
         entity.setId(GUIDS[index]);
         entity.setExternalId(EXTERNAL_IDS[index]);
         entity.setFirstName(NAMES[index]);
-        entity.setGroupNames(new 
HashSet<String>(Arrays.asList(GROUPS.split(","))));
+        entity.setGroupNames(new 
LinkedList<String>(Arrays.asList(GROUPS.split(","))));
         entity.setDomain(DOMAIN);
         return entity;
     }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResourceTest.java
index b5059be..4c0886d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/aaa/BackendUsersResourceTest.java
@@ -213,7 +213,7 @@
         entity.setId(GUIDS[index]);
         entity.setExternalId(EXTERNAL_IDS[index]);
         entity.setLoginName(NAMES[index]);
-        entity.setGroupNames(new 
HashSet<String>(Arrays.asList(GROUPS.split(","))));
+        entity.setGroupNames(new 
LinkedList<String>(Arrays.asList(GROUPS.split(","))));
         entity.setNamespace(NAMESPACE);
         entity.setDomain(DOMAIN);
         return entity;
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/linq/LinqUtils.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/linq/LinqUtils.java
index e686cfe..3fdf9bd 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/linq/LinqUtils.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/linq/LinqUtils.java
@@ -1,11 +1,13 @@
 package org.ovirt.engine.core.utils.linq;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * Created by IntelliJ IDEA. User: gmostizk Date: Aug 9, 2009 Time: 3:44:57 PM 
To change this template use File |
@@ -45,7 +47,7 @@
      *
      * Returns a new list which contains all the objects from original 
collection with function applied to them.
      */
-    public static <IN, OUT> List<OUT> foreach(Collection<IN> collection, 
Function<IN, OUT> f) {
+    public static <IN, OUT> List<OUT> transformToList(final Collection<IN> 
collection, final Function<IN, OUT> f) {
         LinkedList<OUT> list = new LinkedList<OUT>();
         for (IN in : collection) {
             list.add(f.eval(in));
@@ -54,6 +56,17 @@
     }
 
     /**
+     * Returns a new set which contains transformed objects from the original 
collection
+     */
+    public static <IN, OUT> Set<OUT> transformToSet(final Collection<IN> 
collection, final Function<IN, OUT> f) {
+        return new HashSet<OUT>() {
+            {
+                addAll(transformToList(collection, f));
+            }
+        };
+    }
+
+    /**
      * Replaces LINQ WHERE
      *
      * Returns list containing all objects from original collection that 
matches the predicate
diff --git 
a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/linq/LinqUtilsTest.java
 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/linq/LinqUtilsTest.java
index 93e1310..7d9afc1 100644
--- 
a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/linq/LinqUtilsTest.java
+++ 
b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/linq/LinqUtilsTest.java
@@ -44,7 +44,7 @@
 
     @Test
     public void exampleForeach() {
-        List<String> results = LinqUtils.foreach(list, new Function<String, 
String>() {
+        List<String> results = LinqUtils.transformToList(list, new 
Function<String, String>() {
             @Override
             public String eval(String s) {
                 return s.substring(0, 1);


-- 
To view, visit http://gerrit.ovirt.org/32008
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8a5daf3c68cc04ebd4ad0ec6cfdfd6cf16ececb9
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com>
Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to