[SYNCOPE-1114] Re-reading group in the same transaction where the PropagationActions class is executed to avoid NULL collections via LAZY loading
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/16096f6d Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/16096f6d Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/16096f6d Branch: refs/heads/master Commit: 16096f6d8a84aa55e49f76d91c6e453f84d28fb8 Parents: 6edc1e6 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Thu Jun 22 07:08:46 2017 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Thu Jun 22 07:09:05 2017 +0200 ---------------------------------------------------------------------- .../LDAPMembershipPropagationActions.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/16096f6d/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java index 29390be..d5f8d3d 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java @@ -32,6 +32,7 @@ import org.apache.syncope.core.persistence.api.entity.task.PropagationTask; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.provisioning.java.jexl.JexlUtils; import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO; +import org.apache.syncope.core.persistence.api.dao.GroupDAO; import org.apache.syncope.core.persistence.api.entity.resource.Provision; import org.identityconnectors.framework.common.objects.Attribute; import org.identityconnectors.framework.common.objects.AttributeBuilder; @@ -58,6 +59,9 @@ public class LDAPMembershipPropagationActions extends DefaultPropagationActions @Autowired protected UserDAO userDAO; + @Autowired + protected GroupDAO groupDAO; + /** * Allows easy subclassing for the ConnId AD connector bundle. * @@ -73,14 +77,16 @@ public class LDAPMembershipPropagationActions extends DefaultPropagationActions super.before(task, beforeObj); Provision provision = task.getResource().getProvision(anyTypeDAO.findGroup()); - if (AnyTypeKind.USER == task.getAnyTypeKind() && provision != null && provision.getMapping() != null) { + if (AnyTypeKind.USER == task.getAnyTypeKind() + && provision != null && provision.getMapping() != null + && StringUtils.isNotBlank(provision.getMapping().getConnObjectLink())) { + User user = userDAO.find(task.getEntityKey()); if (user != null) { List<String> groupConnObjectLinks = new ArrayList<>(); - for (Group group : userDAO.findAllGroups(user)) { - if (group.getResourceKeys().contains(task.getResource().getKey()) - && StringUtils.isNotBlank(provision.getMapping().getConnObjectLink())) { - + for (String groupKey : userDAO.findAllGroupKeys(user)) { + Group group = groupDAO.find(groupKey); + if (group != null && group.getResourceKeys().contains(task.getResource().getKey())) { LOG.debug("Evaluating connObjectLink for {}", group); JexlContext jexlContext = new MapContext();