[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();

Reply via email to