This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch 3_0_X in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push: new 45a0b59fa5 Ensure to set the update request on PropagationTaskInfo whenever possible 45a0b59fa5 is described below commit 45a0b59fa550c22ecef6f419f3a6430a9ab90a32 Author: Francesco Chicchiriccò <ilgro...@apache.org> AuthorDate: Wed Jul 17 13:03:50 2024 +0200 Ensure to set the update request on PropagationTaskInfo whenever possible --- .../org/apache/syncope/core/logic/RealmLogic.java | 3 +- .../api/propagation/PropagationManager.java | 34 +++++++++++----------- .../java/DefaultAnyObjectProvisioningManager.java | 5 ++-- .../java/DefaultGroupProvisioningManager.java | 5 ++-- .../java/DefaultUserProvisioningManager.java | 7 ++--- .../propagation/DefaultPropagationManager.java | 13 ++++++--- .../java/pushpull/AbstractPushResultHandler.java | 1 + .../pushpull/DefaultRealmPullResultHandler.java | 3 +- .../pushpull/DefaultRealmPushResultHandler.java | 3 +- .../pushpull/DefaultUserPushResultHandler.java | 1 + 10 files changed, 40 insertions(+), 35 deletions(-) diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java index 24118f9d67..72917f9ee2 100644 --- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java +++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java @@ -175,8 +175,7 @@ public class RealmLogic extends AbstractTransactionalLogic<RealmTO> { List<PropagationTaskInfo> taskInfos = propagationManager.setAttributeDeltas( propagationManager.createTasks(realm, propByRes, null), - beforeAttrs, - null); + beforeAttrs); PropagationReporter propagationReporter = taskExecutor.execute(taskInfos, false, AuthContextUtils.getUsername()); diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java index cfc868c4a2..c0e2b99860 100644 --- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java +++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java @@ -55,11 +55,11 @@ public interface PropagationManager { String MANDATORY_NULL_OR_EMPTY_ATTR_NAME = "__MANDATORY_NULL_OR_EMPTY__"; /** - * Create the any object tasks for every associated resource, unless in {@code excludedResources}. + * Create the tasks for every associated resource, unless in {@code excludedResources}. * - * @param kind any object type kind - * @param key any object key - * @param enable whether any object should be enabled or not + * @param kind any type kind + * @param key any key + * @param enable whether any should be enabled or not * @param propByRes operation to be performed per resource * @param vAttrs virtual attributes to be set * @param excludedResources external resources performing not to be considered for propagation @@ -95,12 +95,13 @@ public interface PropagationManager { Collection<String> excludedResources); /** - * Create the update tasks for the any object on each resource associated, unless in {@code excludedResources}. + * Create the update tasks on each resource associated, unless in {@code excludedResources}. * - * @param kind any object type kind - * @param key any object key + * @param anyUR update request + * @param kind any type kind + * @param key any key * @param changePwd whether password should be included for propagation attributes or not - * @param enable whether any object should be enabled or not, may be null to leave unchanged + * @param enable whether any should be enabled or not, may be null to leave unchanged * @param propByRes operation to be performed per resource * @param propByLinkedAccount operation to be performed for linked accounts * @param vAttrs virtual attributes to be set @@ -108,6 +109,7 @@ public interface PropagationManager { * @return list of propagation tasks */ List<PropagationTaskInfo> getUpdateTasks( + AnyUR anyUR, AnyTypeKind kind, String key, boolean changePwd, @@ -140,10 +142,10 @@ public interface PropagationManager { List<PropagationTaskInfo> getUserUpdateTasks(UserWorkflowResult<Pair<UserUR, Boolean>> wfResult); /** - * Create the delete tasks for the any object from each resource associated, unless in {@code excludedResources}. + * Create the delete tasks from each resource associated, unless in {@code excludedResources}. * - * @param kind any object type kind - * @param key any object key + * @param kind any type kind + * @param key any key * @param propByRes operation to be performed per resource * @param propByLinkedAccount operation to be performed for linked accounts * @param excludedResources external resource keys not to be considered for propagation @@ -181,11 +183,11 @@ public interface PropagationManager { /** * Prepare attributes for propagation. * - * @param kind any object type kind - * @param key any object key + * @param kind any type kind + * @param key any key * @param password to be set (for users) * @param changePwd whether password should be included for propagation attributes or not (for users) - * @param enable whether any object should be enabled or not, may be null to leave unchanged + * @param enable whether any should be enabled or not, may be null to leave unchanged * @param excludedResources external resource keys not to be considered for propagation * @return map with prepared attributes per External Resource */ @@ -210,11 +212,9 @@ public interface PropagationManager { * * @param tasks propagation tasks * @param beforeAttrs attribute values before update - * @param updateRequest effective any update request * @return enriched propagation tasks */ List<PropagationTaskInfo> setAttributeDeltas( List<PropagationTaskInfo> tasks, - Map<Pair<String, String>, Set<Attribute>> beforeAttrs, - AnyUR updateRequest); + Map<Pair<String, String>, Set<Attribute>> beforeAttrs); } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java index 673086c25f..2d6f8e011a 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java @@ -123,6 +123,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin List<PropagationTaskInfo> taskInfos = propagationManager.setAttributeDeltas( propagationManager.getUpdateTasks( + updated.getResult(), AnyTypeKind.ANY_OBJECT, updated.getResult().getKey(), false, @@ -131,8 +132,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin null, anyObjectUR.getVirAttrs(), excludedResources), - beforeAttrs, - updated.getResult()); + beforeAttrs); PropagationReporter propagationReporter = taskExecutor.execute(taskInfos, nullPriorityAsync, updater); return Pair.of(updated.getResult(), propagationReporter.getStatuses()); @@ -196,6 +196,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin propByRes.addAll(ResourceOperation.UPDATE, resources); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( + null, AnyTypeKind.ANY_OBJECT, key, false, diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java index a43f5e7c74..7f45eba1be 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java @@ -143,6 +143,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager List<PropagationTaskInfo> tasks = propagationManager.setAttributeDeltas( propagationManager.getUpdateTasks( + updated.getResult(), AnyTypeKind.GROUP, updated.getResult().getKey(), false, @@ -151,8 +152,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager null, groupUR.getVirAttrs(), excludedResources), - beforeAttrs, - updated.getResult()); + beforeAttrs); PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync, updater); return Pair.of(updated.getResult(), propagationReporter.getStatuses()); @@ -231,6 +231,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager propByRes.addAll(ResourceOperation.UPDATE, resources); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( + null, AnyTypeKind.GROUP, key, false, diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java index 5b0e260549..ab3f613a32 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java @@ -131,8 +131,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { List<PropagationTaskInfo> taskInfos = propagationManager.setAttributeDeltas( propagationManager.getUserUpdateTasks(updated), - beforeAttrs, - updated.getResult().getLeft()); + beforeAttrs); PropagationReporter propagationReporter = taskExecutor.execute(taskInfos, nullPriorityAsync, updater); return Pair.of(updated.getResult().getLeft(), propagationReporter.getStatuses()); @@ -190,8 +189,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { updated, updated.getResult().getLeft().getPassword() != null, excludedResources), - beforeAttrs, - updated.getResult().getLeft()); + beforeAttrs); PropagationReporter propagationReporter = taskExecutor.execute(taskInfos, nullPriorityAsync, updater); return Pair.of(updated.getResult().getLeft(), propagationReporter.getStatuses()); @@ -289,6 +287,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager { PropagationByResource<String> propByRes = new PropagationByResource<>(); propByRes.addAll(ResourceOperation.UPDATE, statusR.getResources()); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( + null, AnyTypeKind.USER, statusR.getKey(), false, diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java index 51ef57a25c..9a7dfc46ae 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java @@ -184,6 +184,7 @@ public class DefaultPropagationManager implements PropagationManager { @Override public List<PropagationTaskInfo> getUpdateTasks( + final AnyUR anyUR, final AnyTypeKind kind, final String key, final boolean changePwd, @@ -194,6 +195,7 @@ public class DefaultPropagationManager implements PropagationManager { final Collection<String> excludedResources) { return getUpdateTasks( + anyUR, anyUtilsFactory.getInstance(kind).dao().authFind(key), null, changePwd, @@ -211,6 +213,7 @@ public class DefaultPropagationManager implements PropagationManager { final Collection<String> excludedResources) { return getUpdateTasks( + wfResult.getResult().getLeft(), anyUtilsFactory.getInstance(AnyTypeKind.USER).dao().authFind(wfResult.getResult().getLeft().getKey()), Optional.ofNullable(wfResult.getResult().getLeft().getPassword()). map(PasswordPatch::getValue).orElse(null), @@ -277,12 +280,14 @@ public class DefaultPropagationManager implements PropagationManager { } tasks = tasks.stream().distinct().collect(Collectors.toList()); + tasks.forEach(task -> task.setUpdateRequest(wfResult.getResult().getLeft())); } return tasks; } protected List<PropagationTaskInfo> getUpdateTasks( + final AnyUR anyUR, final Any<?> any, final String password, final boolean changePwd, @@ -307,7 +312,7 @@ public class DefaultPropagationManager implements PropagationManager { } } - return createTasks( + List<PropagationTaskInfo> tasks = createTasks( any, password, changePwd, @@ -315,6 +320,8 @@ public class DefaultPropagationManager implements PropagationManager { Optional.ofNullable(propByRes).orElseGet(PropagationByResource::new), propByLinkedAccount, vAttrs); + tasks.forEach(task -> task.setUpdateRequest(anyUR)); + return tasks; } @Override @@ -699,8 +706,7 @@ public class DefaultPropagationManager implements PropagationManager { @Override public List<PropagationTaskInfo> setAttributeDeltas( final List<PropagationTaskInfo> tasks, - final Map<Pair<String, String>, Set<Attribute>> beforeAttrs, - final AnyUR updateRequest) { + final Map<Pair<String, String>, Set<Attribute>> beforeAttrs) { if (beforeAttrs.isEmpty()) { return tasks; @@ -789,7 +795,6 @@ public class DefaultPropagationManager implements PropagationManager { if (!attributeDeltas.isEmpty()) { propagationData.setAttributeDeltas(attributeDeltas); - task.setUpdateRequest(updateRequest); } } diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java index 8069984a92..dda4dfad11 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java @@ -108,6 +108,7 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan propByRes.addOldConnObjectKey(profile.getTask().getResource().getKey(), beforeObj.getUid().getUidValue()); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( + null, any.getType().getKind(), any.getKey(), changepwd, diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java index 77f9f94ee1..577c6d8e01 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java @@ -322,8 +322,7 @@ public class DefaultRealmPullResultHandler List<PropagationTaskInfo> taskInfos = propagationManager.setAttributeDeltas( propagationManager.createTasks(realm, propByRes, null), - beforeAttrs, - null); + beforeAttrs); taskExecutor.execute(taskInfos, false, securityProperties.getAdminUser()); for (PullActions action : profile.getActions()) { diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java index f1f4a2a1b5..17050efa84 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java @@ -114,8 +114,7 @@ public class DefaultRealmPushResultHandler List<PropagationTaskInfo> taskInfos = propagationManager.setAttributeDeltas( propagationManager.createTasks(realm, propByRes, null), - beforeAttrs, - null); + beforeAttrs); if (!taskInfos.isEmpty()) { taskInfos.get(0).setBeforeObj(Optional.ofNullable(beforeObj)); PropagationReporter reporter = new DefaultPropagationReporter(); diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java index d19f74580f..12e4dde3f4 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java @@ -125,6 +125,7 @@ public class DefaultUserPushResultHandler extends AbstractPushResultHandler impl Pair.of(account.getResource().getKey(), account.getConnObjectKeyValue()))); List<PropagationTaskInfo> taskInfos = propagationManager.getUpdateTasks( + null, any.getType().getKind(), any.getKey(), true,