This is an automated email from the ASF dual-hosted git repository. andreapatricelli pushed a commit to branch 2_1_X in repository https://gitbox.apache.org/repos/asf/syncope.git
commit c36254d434437139fd17e51342596c2d5a7a6702 Author: Andrea Patricelli <andreapatrice...@apache.org> AuthorDate: Wed Apr 15 17:02:38 2020 +0200 [SYNCOPE-1500] init destionation realm for reconciliation and pull tasks --- .../client/console/panels/ConnObjectListViewPanel.java | 10 +++++++--- .../org/apache/syncope/client/console/panels/ConnObjects.java | 5 ++++- .../apache/syncope/client/console/status/ReconTaskPanel.java | 11 +++++++---- .../syncope/client/console/tasks/SchedTaskDirectoryPanel.java | 2 +- .../syncope/client/console/tasks/SchedTaskWizardBuilder.java | 6 ++++++ .../java/org/apache/syncope/common/lib/to/ReconStatus.java | 11 +++++++++++ .../org/apache/syncope/core/logic/ReconciliationLogic.java | 3 +++ 7 files changed, 39 insertions(+), 9 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java index 2c97aa6..50d16af 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java @@ -218,15 +218,18 @@ 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 = reconRestClient.status(new ReconQuery.Builder(anyType, resource.getKey()). - connObjectKeyValue(connObjectKeyValue).build()).getAnyKey(); + final ReconStatus status = reconRestClient.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, StandardEntitlement.TASK_EXECUTE); @@ -277,6 +280,7 @@ public abstract class ConnObjectListViewPanel extends Panel { AjaxRequestTarget target, String resource, String anyType, + String realm, boolean isOnSyncope, PageReference pageRef); diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java index 2ccbd7a..dee47d4 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java @@ -131,15 +131,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/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java index afb5203..980315b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java @@ -24,6 +24,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.console.commons.Constants; import org.apache.syncope.client.console.commons.RealmsUtils; @@ -143,14 +144,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/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java index 2a748d6..4a0d64e 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java @@ -101,7 +101,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/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java index a1367a8..c1927d7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java @@ -24,6 +24,7 @@ import java.util.Collections; 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.commons.Constants; import org.apache.syncope.client.console.commons.RealmsUtils; import org.apache.syncope.client.console.rest.ImplementationRestClient; @@ -36,6 +37,7 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePane import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel; import org.apache.syncope.client.console.wizards.AjaxWizardBuilder; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.EntityTO; import org.apache.syncope.common.lib.to.ProvisioningTaskTO; import org.apache.syncope.common.lib.to.SchedTaskTO; @@ -251,6 +253,10 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui 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/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java index b7b4474..a78f4b2 100644 --- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReconStatus.java +++ b/common/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/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java index 5658302..c2de403 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java @@ -224,11 +224,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)); } }); @@ -253,6 +255,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(