You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/04/02 10:26:06 UTC

[syncope] branch 2_0_X updated: [SYNCOPE-1454] Ensuring no duplicated tasks

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_0_X by this push:
     new c65e171  [SYNCOPE-1454] Ensuring no duplicated tasks
c65e171 is described below

commit c65e17144a1863984efd66781743e7455d69a0e9
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Apr 2 12:17:58 2019 +0200

    [SYNCOPE-1454] Ensuring no duplicated tasks
---
 .../provisioning/java/propagation/PropagationManagerImpl.java | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
index 0111e2a..5dd79a9 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -213,11 +214,13 @@ public class PropagationManagerImpl implements PropagationManager {
         UserPatch userPatch = wfResult.getResult().getKey();
 
         // Propagate password update only to requested resources
-        List<PropagationTaskInfo> tasks = new ArrayList<>();
+        List<PropagationTaskInfo> tasks;
         if (userPatch.getPassword() == null) {
             // a. no specific password propagation request: generate propagation tasks for any resource associated
             tasks = getUserUpdateTasks(wfResult, false, null);
         } else {
+            Set<PropagationTaskInfo> taskSet = new LinkedHashSet<>();
+
             // b. generate the propagation task list in two phases: first the ones containing password,
             // the the rest (with no password)
             WorkflowResult<Pair<UserPatch, Boolean>> pwdWFResult = new WorkflowResult<>(
@@ -239,7 +242,7 @@ public class PropagationManagerImpl implements PropagationManager {
                 }, toBeExcluded);
                 toBeExcluded.removeAll(pwdResourceNames);
 
-                tasks.addAll(getUserUpdateTasks(pwdWFResult, true, toBeExcluded));
+                taskSet.addAll(getUserUpdateTasks(pwdWFResult, true, toBeExcluded));
             }
 
             WorkflowResult<Pair<UserPatch, Boolean>> noPwdWFResult = new WorkflowResult<>(
@@ -249,8 +252,10 @@ public class PropagationManagerImpl implements PropagationManager {
             noPwdWFResult.getPropByRes().removeAll(pwdResourceNames);
             noPwdWFResult.getPropByRes().purge();
             if (!noPwdWFResult.getPropByRes().isEmpty()) {
-                tasks.addAll(getUserUpdateTasks(noPwdWFResult, false, pwdResourceNames));
+                taskSet.addAll(getUserUpdateTasks(noPwdWFResult, false, pwdResourceNames));
             }
+
+            tasks = new ArrayList<>(taskSet);
         }
 
         return tasks;