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ò <[email protected]>
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,