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(

Reply via email to