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:14:01 UTC
[syncope] branch master 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 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 a34ebea [SYNCOPE-1669] Ensuring to create pull results for remediations (#328)
a34ebea is described below
commit a34ebea20cb5f9556e27cbb136adb638d75956de
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 | 48 ++++++++++++++--------
.../provisioning/java/pushpull/InboundMatcher.java | 10 +++--
2 files changed, 38 insertions(+), 20 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 d025ed9..6d9f610 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
@@ -972,27 +972,27 @@ public abstract class AbstractPullResultHandler extends AbstractSyncopeResultHan
}
}
- protected Remediation createRemediation(
+ protected void createRemediation(
final AnyType anyType,
final AnyCR anyCR,
final PullTask pullTask,
final ProvisioningReport result,
final SyncDelta delta) {
- return createRemediation(anyType, null, anyCR, null, pullTask, result, delta);
+ createRemediation(anyType, null, anyCR, null, pullTask, result, delta);
}
- protected Remediation createRemediation(
+ protected void createRemediation(
final AnyType anyType,
final AnyUR anyUR,
final PullTask pullTask,
final ProvisioningReport result,
final SyncDelta delta) {
- return createRemediation(anyType, null, null, anyUR, pullTask, result, delta);
+ createRemediation(anyType, null, null, anyUR, pullTask, result, delta);
}
- protected Remediation createRemediation(
+ protected void createRemediation(
final AnyType anyType,
final String anyKey,
final AnyCR anyCR,
@@ -1001,22 +1001,36 @@ 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(anyUR == null ? ResourceOperation.CREATE : ResourceOperation.UPDATE);
+ remediation.setAnyType(anyType);
+ remediation.setOperation(anyUR == null ? ResourceOperation.CREATE : ResourceOperation.UPDATE);
if (StringUtils.isNotBlank(anyKey)) {
- entity.setPayload(anyKey);
+ remediation.setPayload(anyKey);
} else if (anyCR != null) {
- entity.setPayload(anyCR);
+ remediation.setPayload(anyCR);
} else if (anyUR != null) {
- entity.setPayload(anyUR);
+ remediation.setPayload(anyUR);
}
- entity.setError(result.getMessage());
- entity.setInstant(OffsetDateTime.now());
- entity.setRemoteName(delta.getObject().getName().getNameValue());
- entity.setPullTask(pullTask);
-
- return remediationDAO.save(entity);
+ remediation.setError(result.getMessage());
+ remediation.setInstant(OffsetDateTime.now());
+ 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 (anyUR != null) {
+ remediationResult.setKey(anyUR.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 7ad2241..19026a2 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
@@ -331,9 +331,13 @@ public class InboundMatcher {
List<PullMatch> result = new ArrayList<>();
- result.addAll(anySearchDAO.search(rule.getSearchCond(syncDelta, provision), type).stream().
- map(any -> rule.matching(any, syncDelta, provision)).
- collect(Collectors.toList()));
+ try {
+ result.addAll(anySearchDAO.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);