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 2020/04/15 15:58:29 UTC
[syncope] branch master updated: [SYNCOPE-1500] init destionation
realm for reconciliation and pull tasks
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 1624641 [SYNCOPE-1500] init destionation realm for reconciliation and pull tasks
1624641 is described below
commit 16246411e8a8eccf1c424f4e0944ed763fbd0b05
Author: Andrea Patricelli <an...@apache.org>
AuthorDate: Wed Apr 15 17:02:38 2020 +0200
[SYNCOPE-1500] init destionation realm for reconciliation and pull tasks
---
.../console/panels/ConnObjectListViewPanel.java | 27 +++++++++++-----------
.../syncope/client/console/panels/ConnObjects.java | 5 +++-
.../client/console/status/ReconTaskPanel.java | 11 +++++----
.../console/tasks/SchedTaskDirectoryPanel.java | 2 +-
.../console/tasks/SchedTaskWizardBuilder.java | 6 +++++
.../apache/syncope/common/lib/to/ReconStatus.java | 11 +++++++++
.../syncope/core/logic/ReconciliationLogic.java | 3 +++
7 files changed, 46 insertions(+), 19 deletions(-)
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
index 338854f..831291a 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
@@ -23,7 +23,6 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.components.PopoverConfig
import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
@@ -104,18 +103,17 @@ public abstract class ConnObjectListViewPanel extends Panel {
final Model<Integer> model = Model.of(-1);
final StringResourceModel res = new StringResourceModel("search.result", this, new Model<>(anyType));
- final Accordion accordion = new Accordion("accordionPanel",
- Collections.<ITab>singletonList(new AbstractTab(res) {
+ final Accordion accordion = new Accordion("accordionPanel", List.of(new AbstractTab(res) {
- private static final long serialVersionUID = 1037272333056449377L;
+ private static final long serialVersionUID = 1037272333056449377L;
- @Override
- public WebMarkupContainer getPanel(final String panelId) {
- searchPanel = getSearchPanel(panelId, anyType);
- return searchPanel;
- }
+ @Override
+ public WebMarkupContainer getPanel(final String panelId) {
+ searchPanel = getSearchPanel(panelId, anyType);
+ return searchPanel;
+ }
- }), model) {
+ }), model) {
private static final long serialVersionUID = 6581261306163L;
@@ -217,15 +215,17 @@ public abstract class ConnObjectListViewPanel extends Panel {
@Override
public void onClick(final AjaxRequestTarget target, final ConnObjectTO modelObject) {
String connObjectKeyValue = modelObject.getAttr(ConnIdSpecialName.UID).get().getValues().get(0);
- String anyKey = ReconciliationRestClient.status(new ReconQuery.Builder(anyType, resource.getKey()).
- connObjectKeyValue(connObjectKeyValue).build()).getAnyKey();
+ ReconStatus status = ReconciliationRestClient.status(
+ new ReconQuery.Builder(anyType, resource.getKey()).
+ connObjectKeyValue(connObjectKeyValue).build());
pullConnObject(
connObjectKeyValue,
target,
resource.getKey(),
anyType,
- StringUtils.isNotBlank(anyKey),
+ status.getRealm(),
+ StringUtils.isNotBlank(status.getAnyKey()),
pageRef);
}
}, ActionLink.ActionType.RECONCILIATION_PULL, IdRepoEntitlement.TASK_EXECUTE);
@@ -276,6 +276,7 @@ public abstract class ConnObjectListViewPanel extends Panel {
AjaxRequestTarget target,
String resource,
String anyType,
+ String realm,
boolean isOnSyncope,
PageReference pageRef);
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
index 709e4a3..47350fb 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
@@ -132,15 +132,18 @@ public class ConnObjects extends Panel implements ModalPanel {
final AjaxRequestTarget target,
final String resource,
final String anyType,
+ final String realm,
final boolean isOnSyncope,
final PageReference pageRef) {
anyTypes.setEnabled(false);
target.add(anyTypes);
+ final PullTaskTO pullTaskTO = new PullTaskTO();
+ pullTaskTO.setDestinationRealm(realm);
connObjects.next("PULL " + resource,
new ReconTaskPanel(
resource,
- new PullTaskTO(),
+ pullTaskTO,
anyType,
null,
connObjectKeyValue,
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
index 7a75688..14e6cf4 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
@@ -22,6 +22,7 @@ import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
+import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.ui.commons.Constants;
import org.apache.syncope.client.console.commons.RealmsUtils;
@@ -135,14 +136,16 @@ public class ReconTaskPanel extends MultilevelPanel.SecondLevel {
}
};
- form.add(realm);
realm.addRequiredLabel();
realm.setOutputMarkupId(true);
-
- if (isOnSyncope) {
+ // add a default destination realm if missing in the task
+ if (StringUtils.isBlank(PullTaskTO.class.cast(taskTO).getDestinationRealm())) {
realm.getField().setModelObject(SyncopeConstants.ROOT_REALM);
- realm.setVisible(false);
}
+ if (isOnSyncope) {
+ realm.setEnabled(false);
+ }
+ form.add(realm);
}
AjaxPalettePanel<String> actions = new AjaxPalettePanel.Builder<String>().
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 15b63e2..4885cee 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -103,7 +103,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
try {
schedTaskTO = reference.getDeclaredConstructor().newInstance();
} catch (Exception e) {
- LOG.error("Falure instantiating task", e);
+ LOG.error("Failure instantiating task", e);
}
this.addNewItemPanelBuilder(new SchedTaskWizardBuilder<>(taskType, schedTaskTO, pageRef), true);
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
index ed2c880..60b1273 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
@@ -23,6 +23,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.syncope.client.console.SyncopeWebApplication;
+import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.commons.RealmsUtils;
import org.apache.syncope.client.ui.commons.Constants;
import org.apache.syncope.client.console.rest.RealmRestClient;
@@ -34,6 +35,7 @@ import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel;
import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
import org.apache.syncope.common.lib.to.SchedTaskTO;
import org.apache.syncope.common.lib.to.PullTaskTO;
@@ -206,6 +208,10 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends BaseAjaxWizar
if (taskTO instanceof PullTaskTO) {
destinationRealm.addRequiredLabel();
+ if (StringUtils.isBlank(PullTaskTO.class.cast(taskTO).getDestinationRealm())) {
+ // add a default destination realm if missing in the task
+ destinationRealm.setModelObject(SyncopeConstants.ROOT_REALM);
+ }
}
pullTaskSpecifics.add(destinationRealm);
diff --git a/common/idm/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java b/common/idm/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java
index b7b4474..a78f4b2 100644
--- a/common/idm/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java
+++ b/common/idm/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java
@@ -38,6 +38,8 @@ public class ReconStatus implements Serializable {
private String anyKey;
+ private String realm;
+
private MatchType matchType;
private ConnObjectTO onSyncope;
@@ -63,6 +65,15 @@ public class ReconStatus implements Serializable {
}
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
+ public String getRealm() {
+ return realm;
+ }
+
+ public void setRealm(final String realm) {
+ this.realm = realm;
+ }
+
+ @Schema(accessMode = Schema.AccessMode.READ_ONLY)
public MatchType getMatchType() {
return matchType;
}
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
index 0697ada..8c8c23e 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
@@ -225,11 +225,13 @@ public class ReconciliationLogic extends AbstractTransactionalLogic<EntityTO> {
status.setMatchType(MatchType.ANY);
status.setAnyTypeKind(match.getAny().getType().getKind());
status.setAnyKey(match.getAny().getKey());
+ status.setRealm(match.getAny().getRealm().getFullPath());
status.setOnSyncope(getOnSyncope(match.getAny(), connObjectKeyItem, provision));
} else if (match.getLinkedAccount() != null) {
status.setMatchType(MatchType.LINKED_ACCOUNT);
status.setAnyTypeKind(AnyTypeKind.USER);
status.setAnyKey(match.getLinkedAccount().getOwner().getKey());
+ status.setRealm(match.getAny().getRealm().getFullPath());
status.setOnSyncope(getOnSyncope(match.getLinkedAccount(), connObjectKeyItem, provision));
}
});
@@ -254,6 +256,7 @@ public class ReconciliationLogic extends AbstractTransactionalLogic<EntityTO> {
status.setMatchType(MatchType.ANY);
status.setAnyTypeKind(any.getType().getKind());
status.setAnyKey(any.getKey());
+ status.setRealm(any.getRealm().getFullPath());
status.setOnSyncope(getOnSyncope(any, connObjectKeyItem, provision));
List<ConnectorObject> connObjs = outboundMatcher.match(