This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 4f58d8df91 Ensure to set the update request on PropagationTaskInfo
whenever possible
4f58d8df91 is described below
commit 4f58d8df91d0bfcba6316f56733f037bc83febca
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 417dac1922..bb6e5f0030 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
@@ -180,8 +180,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 be2fb78098..7462b204ea 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
@@ -122,6 +122,7 @@ public class DefaultAnyObjectProvisioningManager implements
AnyObjectProvisionin
List<PropagationTaskInfo> taskInfos =
propagationManager.setAttributeDeltas(
propagationManager.getUpdateTasks(
+ updated.getResult(),
AnyTypeKind.ANY_OBJECT,
updated.getResult().getKey(),
false,
@@ -130,8 +131,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());
@@ -195,6 +195,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 24e896cfff..6f6a85cb7d 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
@@ -142,6 +142,7 @@ public class DefaultGroupProvisioningManager implements
GroupProvisioningManager
List<PropagationTaskInfo> tasks =
propagationManager.setAttributeDeltas(
propagationManager.getUpdateTasks(
+ updated.getResult(),
AnyTypeKind.GROUP,
updated.getResult().getKey(),
false,
@@ -150,8 +151,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());
@@ -230,6 +230,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 e3c17c14f5..837187360d 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 f9a6ff161b..bca2d34c1f 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
@@ -185,6 +185,7 @@ public class DefaultPropagationManager implements
PropagationManager {
@Override
public List<PropagationTaskInfo> getUpdateTasks(
+ final AnyUR anyUR,
final AnyTypeKind kind,
final String key,
final boolean changePwd,
@@ -195,6 +196,7 @@ public class DefaultPropagationManager implements
PropagationManager {
final Collection<String> excludedResources) {
return getUpdateTasks(
+ anyUR,
anyUtilsFactory.getInstance(kind).dao().authFind(key),
null,
changePwd,
@@ -212,6 +214,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),
@@ -278,12 +281,14 @@ public class DefaultPropagationManager implements
PropagationManager {
}
tasks = tasks.stream().distinct().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,
@@ -308,7 +313,7 @@ public class DefaultPropagationManager implements
PropagationManager {
}
}
- return createTasks(
+ List<PropagationTaskInfo> tasks = createTasks(
any,
password,
changePwd,
@@ -316,6 +321,8 @@ public class DefaultPropagationManager implements
PropagationManager {
Optional.ofNullable(propByRes).orElseGet(PropagationByResource::new),
propByLinkedAccount,
vAttrs);
+ tasks.forEach(task -> task.setUpdateRequest(anyUR));
+ return tasks;
}
@Override
@@ -704,8 +711,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;
@@ -794,7 +800,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 f32d668aaa..d1ed130f1b 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
@@ -148,6 +148,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 11f38ac26b..c03e879946 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
@@ -321,8 +321,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 d710e455b8..f32c597050 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
@@ -150,8 +150,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 c676153fed..f99757337b 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
@@ -124,6 +124,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,