[SYNCOPE-726] Aligning RoleDataBinder#update to UserDataBinder#update
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/b04d1e54 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/b04d1e54 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/b04d1e54 Branch: refs/heads/1_1_X Commit: b04d1e549506eb0b137572e4460b5fb08f8217d6 Parents: 080abc1 Author: Francesco Chicchiriccò <[email protected]> Authored: Mon Nov 9 09:30:39 2015 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Mon Nov 9 09:30:39 2015 +0100 ---------------------------------------------------------------------- .../syncope/core/rest/data/RoleDataBinder.java | 18 ++++++++++++------ .../syncope/core/rest/data/UserDataBinder.java | 9 ++++----- 2 files changed, 16 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/b04d1e54/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java index de21d4d..8c03c58 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/RoleDataBinder.java @@ -25,11 +25,13 @@ import java.util.Set; import org.apache.syncope.common.mod.RoleMod; import org.apache.syncope.common.to.RoleTO; import org.apache.syncope.common.types.AttributableType; +import org.apache.syncope.common.types.IntMappingType; import org.apache.syncope.common.types.ResourceOperation; import org.apache.syncope.common.types.SyncopeClientExceptionType; import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException; import org.apache.syncope.common.validation.SyncopeClientException; import org.apache.syncope.core.connid.ConnObjectUtil; +import org.apache.syncope.core.persistence.beans.AbstractMappingItem; import org.apache.syncope.core.persistence.beans.AccountPolicy; import org.apache.syncope.core.persistence.beans.Entitlement; import org.apache.syncope.core.persistence.beans.ExternalResource; @@ -194,8 +196,6 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { SyncopeClientCompositeErrorException scce = new SyncopeClientCompositeErrorException(HttpStatus.BAD_REQUEST); - Set<String> currentResources = role.getResourceNames(); - // name SyncopeClientException invalidRoles = new SyncopeClientException(SyncopeClientExceptionType.InvalidRoles); if (roleMod.getName() != null) { @@ -203,9 +203,15 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { role.getParent() == null ? null : role.getParent().getId()); if (otherRole == null || role.equals(otherRole)) { if (!roleMod.getName().equals(role.getName())) { - propByRes.addAll(ResourceOperation.UPDATE, currentResources); - for (String resource : currentResources) { - propByRes.addOldAccountId(resource, role.getName()); + propByRes.addAll(ResourceOperation.UPDATE, role.getResourceNames()); + + for (ExternalResource resource : role.getResources()) { + if (resource.getRmapping() != null) { + AbstractMappingItem accountIdItem = resource.getRmapping().getAccountIdItem(); + if (accountIdItem != null && accountIdItem.getIntMappingType() == IntMappingType.RoleName) { + propByRes.addOldAccountId(resource.getName(), role.getName()); + } + } } role.setName(roleMod.getName()); @@ -313,7 +319,7 @@ public class RoleDataBinder extends AbstractAttributableDataBinder { // ------------------------- // Retrieve all [derived/virtual] attributes (inherited and not) - // ------------------------- + // ------------------------- final List<RAttr> allAttributes = role.findLastInheritedAncestorAttributes(); final List<RDerAttr> allDerAttributes = role.findLastInheritedAncestorDerivedAttributes(); http://git-wip-us.apache.org/repos/asf/syncope/blob/b04d1e54/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java index 94eb68a..27c4f9e 100644 --- a/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java +++ b/core/src/main/java/org/apache/syncope/core/rest/data/UserDataBinder.java @@ -255,15 +255,14 @@ public class UserDataBinder extends AbstractAttributableDataBinder { // username if (userMod.getUsername() != null && !userMod.getUsername().equals(user.getUsername())) { - String oldUsername = user.getUsername(); - user.setUsername(userMod.getUsername()); propByRes.addAll(ResourceOperation.UPDATE, currentResources); for (ExternalResource resource : user.getResources()) { - for (AbstractMappingItem mapItem : resource.getUmapping().getItems()) { - if (mapItem.isAccountid() && mapItem.getIntMappingType() == IntMappingType.Username) { - propByRes.addOldAccountId(resource.getName(), oldUsername); + if (resource.getRmapping() != null) { + AbstractMappingItem accountIdItem = resource.getRmapping().getAccountIdItem(); + if (accountIdItem != null && accountIdItem.getIntMappingType() == IntMappingType.RoleName) { + propByRes.addOldAccountId(resource.getName(), user.getUsername()); } } }
