From 66b0d09b07a0d16daacbb4c08da8cfe7e55bc28b Mon Sep 17 00:00:00 2001 From: talig Date: Wed, 23 May 2018 11:38:51 +0300 Subject: Fix bug in change item owner Change-Id: I200387d41f95d61ad0f6be6663b8d8fac198aa90 Issue-ID: SDC-1355 Signed-off-by: talig --- .../itempermissions/impl/PermissionsRulesImpl.java | 54 +++++++++++++--------- 1 file changed, 31 insertions(+), 23 deletions(-) (limited to 'openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-impl/src') diff --git a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-impl/src/main/java/org/openecomp/sdc/itempermissions/impl/PermissionsRulesImpl.java b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-impl/src/main/java/org/openecomp/sdc/itempermissions/impl/PermissionsRulesImpl.java index feb3d59f7f..2ab9326f6a 100644 --- a/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-impl/src/main/java/org/openecomp/sdc/itempermissions/impl/PermissionsRulesImpl.java +++ b/openecomp-be/lib/openecomp-item-permissions-lib/openecomp-item-permissions-impl/src/main/java/org/openecomp/sdc/itempermissions/impl/PermissionsRulesImpl.java @@ -15,8 +15,10 @@ */ package org.openecomp.sdc.itempermissions.impl; +import org.apache.commons.collections.CollectionUtils; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.itempermissions.PermissionsRules; +import org.openecomp.sdc.itempermissions.PermissionsServices; import org.openecomp.sdc.itempermissions.PermissionsServicesFactory; import org.openecomp.sdc.itempermissions.errors.PermissionsErrorMessagesBuilder; import org.openecomp.sdc.itempermissions.impl.types.PermissionActionTypes; @@ -118,33 +120,39 @@ public class PermissionsRulesImpl implements PermissionsRules { } } - @Override - public void updatePermission(String itemId, String currentUserId, String permission, Set - addedUsersIds, Set removedUsersIds) { - try { - PermissionTypes.valueOf(permission); - } catch (IllegalArgumentException ex) { - throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build()); - } - - if (permission.equals(PermissionTypes.Owner.name())) { - makeCurrentUserContributor(itemId,currentUserId); - } + @Override + public void updatePermission(String itemId, String currentUserId, String permission, Set + addedUsersIds, Set removedUsersIds) { + try { + PermissionTypes.valueOf(permission); + } catch (IllegalArgumentException ex) { + throw new CoreException(new PermissionsErrorMessagesBuilder(INVALID_PERMISSION_TYPE).build()); } - private void makeCurrentUserContributor(String itemId, String currentUserId) { - - String currentPermission = PermissionsServicesFactory.getInstance().createInterface(). - getUserItemPermiission(itemId,currentUserId); - - if(currentPermission != null) { - - PermissionsServicesFactory.getInstance().createInterface() - .updateItemPermissions(itemId, PermissionTypes.Contributor.name(), - Collections.singleton(currentUserId), new HashSet<>()); + if (isOwnerAdded(permission, addedUsersIds)) { + handleCurrentOwner(itemId, currentUserId); + } + } + + private boolean isOwnerAdded(String permission, Set addedUsersIds) { + return permission.equals(PermissionTypes.Owner.name()) && + CollectionUtils.isNotEmpty(addedUsersIds); + } + + private void handleCurrentOwner(String itemId, String currentUserId) { + PermissionsServices permissionsServices = + PermissionsServicesFactory.getInstance().createInterface(); + if (!permissionsServices.getUserItemPermission(itemId, currentUserId).isPresent()) { + return; // no current owner - first owner addition } -} + Set currentUserSet = Collections.singleton(currentUserId); + permissionsServices + .updateItemPermissions(itemId, PermissionTypes.Contributor.name(), currentUserSet, + new HashSet<>()); + permissionsServices.updateItemPermissions(itemId, PermissionTypes.Owner.name(), new HashSet<>(), + currentUserSet); + } private void caseCreateItem(String userId, String itemId) { HashSet ownerId = new HashSet<>(); -- cgit 1.2.3-korg