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 2022/03/21 13:07:57 UTC
[syncope] branch 2_1_X updated: [SYNCOPE-1669] Ensuring to create pull results for remediations (#328)
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new c2006fe [SYNCOPE-1669] Ensuring to create pull results for remediations (#328)
c2006fe is described below
commit c2006fec29cf1bcad4455480b9cae7aae72b36a7
Author: Francesco Chicchiriccò <il...@users.noreply.github.com>
AuthorDate: Mon Mar 21 14:07:50 2022 +0100
[SYNCOPE-1669] Ensuring to create pull results for remediations (#328)
---
.../java/pushpull/AbstractPullResultHandler.java | 46 +++++++++++++++-------
.../provisioning/java/pushpull/InboundMatcher.java | 10 +++--
2 files changed, 38 insertions(+), 18 deletions(-)
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
index bb77ef1..ab1e665 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
@@ -965,17 +965,17 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan
}
}
- protected Remediation createRemediation(
+ protected void createRemediation(
final AnyType anyType,
final AnyPatch anyPatch,
final PullTask pullTask,
final ProvisioningReport result,
final SyncDelta delta) {
- return createRemediation(anyType, null, null, anyPatch, pullTask, result, delta);
+ createRemediation(anyType, null, null, anyPatch, pullTask, result, delta);
}
- protected Remediation createRemediation(
+ protected void createRemediation(
final AnyType anyType,
final String anyKey,
final AnyTO anyTO,
@@ -984,22 +984,38 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan
final ProvisioningReport result,
final SyncDelta delta) {
- Remediation entity = entityFactory.newEntity(Remediation.class);
+ Remediation remediation = entityFactory.newEntity(Remediation.class);
- entity.setAnyType(anyType);
- entity.setOperation(anyPatch == null ? ResourceOperation.CREATE : ResourceOperation.UPDATE);
+ remediation.setAnyType(anyType);
+ remediation.setOperation(anyPatch == null ? ResourceOperation.CREATE : ResourceOperation.UPDATE);
if (StringUtils.isNotBlank(anyKey)) {
- entity.setPayload(anyKey);
+ remediation.setPayload(anyKey);
} else if (anyTO != null) {
- entity.setPayload(anyTO);
+ remediation.setPayload(anyTO);
} else if (anyPatch != null) {
- entity.setPayload(anyPatch);
+ remediation.setPayload(anyPatch);
}
- entity.setError(result.getMessage());
- entity.setInstant(new Date());
- entity.setRemoteName(delta.getObject().getName().getNameValue());
- entity.setPullTask(pullTask);
-
- return remediationDAO.save(entity);
+ remediation.setError(result.getMessage());
+ remediation.setInstant(new Date());
+ remediation.setRemoteName(delta.getObject().getName().getNameValue());
+ remediation.setPullTask(pullTask);
+
+ remediation = remediationDAO.save(remediation);
+
+ ProvisioningReport remediationResult = new ProvisioningReport();
+ remediationResult.setOperation(remediation.getOperation());
+ remediationResult.setAnyType(anyType.getKey());
+ remediationResult.setStatus(ProvisioningReport.Status.FAILURE);
+ remediationResult.setMessage(remediation.getError());
+ if (StringUtils.isNotBlank(anyKey)) {
+ remediationResult.setKey(anyKey);
+ } else if (anyTO != null) {
+ remediationResult.setKey(anyTO.getKey());
+ } else if (anyPatch != null) {
+ remediationResult.setKey(anyPatch.getKey());
+ }
+ remediationResult.setUidValue(delta.getUid().getUidValue());
+ remediationResult.setName(remediation.getRemoteName());
+ profile.getResults().add(remediationResult);
}
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
index 055cf36..a0d4cc8 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
@@ -324,9 +324,13 @@ public class InboundMatcher {
List<PullMatch> result = new ArrayList<>();
- result.addAll(searchDAO.search(rule.getSearchCond(syncDelta, provision), type).stream().
- map(any -> rule.matching(any, syncDelta, provision)).
- collect(Collectors.toList()));
+ try {
+ result.addAll(searchDAO.search(rule.getSearchCond(syncDelta, provision), type).stream().
+ map(any -> rule.matching(any, syncDelta, provision)).
+ collect(Collectors.toList()));
+ } catch (Throwable t) {
+ LOG.error("While searching via {}", rule.getClass().getName(), t);
+ }
if (result.isEmpty()) {
rule.unmatching(syncDelta, provision).ifPresent(result::add);