diff --git a/java/com.sap.sse.security.common/src/com/sap/sse/security/shared/dto/UserGroupDTO.java b/java/com.sap.sse.security.common/src/com/sap/sse/security/shared/dto/UserGroupDTO.java index 44cd7c509eb..4d6cb6638f0 100644 --- a/java/com.sap.sse.security.common/src/com/sap/sse/security/shared/dto/UserGroupDTO.java +++ b/java/com.sap.sse.security.common/src/com/sap/sse/security/shared/dto/UserGroupDTO.java @@ -1,6 +1,7 @@ package com.sap.sse.security.shared.dto; import java.util.HashSet; +import java.util.Set; import java.util.UUID; import com.sap.sse.security.shared.AbstractUserGroupImpl; @@ -16,7 +17,7 @@ public class UserGroupDTO extends AbstractUserGroupImpl impleme super(null, null, null); } - public UserGroupDTO(HashSet users, UUID id, String name) { + public UserGroupDTO(Set users, UUID id, String name) { super(users, id, name); } diff --git a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/SecurityDTOFactory.java b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/SecurityDTOFactory.java index 71c8572c0db..8108aef5013 100755 --- a/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/SecurityDTOFactory.java +++ b/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/server/SecurityDTOFactory.java @@ -3,6 +3,7 @@ package com.sap.sse.security.ui.server; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -184,14 +185,7 @@ public class SecurityDTOFactory { if (userGroup == null) { result = null; } else { - // we do not cache this, as they are only valid as root type of objects, so they cannot be already be in the - // map at this point - if (fromOriginalToStrippedDownUserGroup.get(userGroup) != null) { - throw new IllegalArgumentException( - "A stripped mapping does already exist for this usergroup, this should never be the case"); - } - // FIXME can this generic cast be made better? - result = new UserGroupDTO(userGroup.getId(), userGroup.getName()); + result = new UserGroupDTO(createStrippedUsersFromUsers(userGroup.getUsers(), securityService, fromOriginalToStrippedDownUser, fromOriginalToStrippedDownUserGroup),userGroup.getId(), userGroup.getName()); SecurityDTOUtil.addSecurityInformation(this, securityService, result, userGroup.getIdentifier(), fromOriginalToStrippedDownUser, fromOriginalToStrippedDownUserGroup); } @@ -313,6 +307,15 @@ public class SecurityDTOFactory { annotation.getDisplayNameOfAnnotatedObject()); } + public Set createStrippedUsersFromUsers(Iterable users, SecurityService securityService, + Map fromOriginalToStrippedDownUser, + Map fromOriginalToStrippedDownUserGroup) { + Set result = new HashSet<>(); + users.forEach(user -> result.add(createStrippedUserFromUser(user, securityService, + fromOriginalToStrippedDownUser, fromOriginalToStrippedDownUserGroup))); + return result; + } + public StrippedUserDTO createStrippedUserFromUser(User user, SecurityService securityService, Map fromOriginalToStrippedDownUser, Map fromOriginalToStrippedDownUserGroup) {