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

commit 19d884e9bf35f79e9abd4aae1bb09eb94aeedee2
Author: Francesco Chicchiriccò <ilgro...@apache.org>
AuthorDate: Wed May 18 16:20:17 2022 +0200

    Further Improving Realms page extendability
---
 .../client/console/SyncopeConsoleSession.java      |  10 +-
 .../syncope/client/console/pages/Realms.java       |  24 ++-
 .../syncope/client/console/panels/AnyPanel.java    |   2 +-
 .../syncope/client/console/panels/Realm.java       |   3 +-
 .../client/console/panels/RealmChoicePanel.java    | 168 +++++++++++----------
 .../client/console/rest/RealmRestClient.java       |   4 +-
 .../wicket/markup/html/form/ActionsPanel.java      |  15 ++
 .../client/console/widgets/NumberWidget.java       |  10 +-
 .../client/console/panels/RealmChoicePanel.html    |   2 +-
 .../apache/syncope/fit/console/RealmsITCase.java   |   8 +-
 10 files changed, 138 insertions(+), 108 deletions(-)

diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
index c759953f33..d81e6fc4ac 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleSession.java
@@ -300,9 +300,13 @@ public class SyncopeConsoleSession extends 
AuthenticatedWebSession {
                 : roots.stream().sorted().collect(Collectors.toList());
     }
 
-    public Optional<String> getRootRealm() {
-        List<String> roots = getSearchableRealms();
-        return roots.isEmpty() ? Optional.empty() : roots.stream().findFirst();
+    public Optional<String> getRootRealm(final String initial) {
+        List<String> searchable = getSearchableRealms();
+        return searchable.isEmpty()
+                ? Optional.empty()
+                : initial != null && 
searchable.stream().anyMatch(initial::startsWith)
+                ? Optional.of(initial)
+                : searchable.stream().findFirst();
     }
 
     public boolean owns(final String entitlements, final String... realms) {
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index ff3caf32f8..c8e65280ad 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -39,6 +39,7 @@ import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
+import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
@@ -53,6 +54,10 @@ public class Realms extends BasePage {
 
     private static final long serialVersionUID = -1100228004207271270L;
 
+    public static final String SELECTED_INDEX = "selectedIndex";
+
+    public static final String INITIAL_REALM = "initialRealm";
+
     protected final RealmRestClient realmRestClient = new RealmRestClient();
 
     protected final AnyTypeRestClient anyTypeRestClient = new 
AnyTypeRestClient();
@@ -88,8 +93,7 @@ public class Realms extends BasePage {
 
         content = new WebMarkupContainer("content");
 
-        realmChoicePanel = new RealmChoicePanel("realmChoicePanel", 
getPageReference());
-        realmChoicePanel.setOutputMarkupId(true);
+        realmChoicePanel = 
buildRealmChoicePanel(parameters.get(INITIAL_REALM).toOptionalString(), 
getPageReference());
         content.add(realmChoicePanel);
 
         content.add(new Label("body", "Root realm"));
@@ -126,7 +130,17 @@ public class Realms extends BasePage {
             templateModal.show(false);
         });
 
-        updateRealmContent(realmChoicePanel.getCurrentRealm(), 
parameters.get("selectedIndex").toInt(0));
+        updateRealmContent(realmChoicePanel.getCurrentRealm(), 
parameters.get(SELECTED_INDEX).toInt(0));
+    }
+
+    protected RealmChoicePanel buildRealmChoicePanel(final String 
initialRealm, final PageReference pageRef) {
+        RealmChoicePanel panel = new RealmChoicePanel("realmChoicePanel", 
initialRealm, pageRef);
+        panel.setOutputMarkupId(true);
+        return panel;
+    }
+
+    public RealmChoicePanel getRealmChoicePanel() {
+        return realmChoicePanel;
     }
 
     @Override
@@ -169,10 +183,6 @@ public class Realms extends BasePage {
         return content;
     }
 
-    public RealmChoicePanel getRealmChoicePanel() {
-        return realmChoicePanel;
-    }
-
     protected class Content extends Realm {
 
         private static final long serialVersionUID = 8221398624379357183L;
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
index 6c9692efef..3d67cc5ddf 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyPanel.java
@@ -83,7 +83,7 @@ public class AnyPanel extends Panel implements ModalPanel {
                 PageReference pageRef);
     }
 
-    protected static DirectoryPanelSupplier DEFAULT_DIRECTORYPANEL_SUPPLIER =
+    protected static final DirectoryPanelSupplier 
DEFAULT_DIRECTORYPANEL_SUPPLIER =
             (id, anyTypeTO, realmTO, anyLayout, pageRef) -> {
                 AnyTypeClassRestClient anyTypeClassRestClient = new 
AnyTypeClassRestClient();
 
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
index 587d94caf2..e154e27a01 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
@@ -53,7 +53,6 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -259,7 +258,7 @@ public abstract class Realm extends WizardMgtPanel<RealmTO> 
{
         private static final long serialVersionUID = -5861786415855103549L;
 
         protected RealmDetailsTabPanel() {
-            super(new Model<>("DETAILS"),
+            super(new ResourceModel("realm.details", "DETAILS"),
                     StandardEntitlement.REALM_CREATE,
                     StandardEntitlement.REALM_UPDATE,
                     StandardEntitlement.REALM_DELETE);
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
index 235f233155..d3fa22ab26 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/panels/RealmChoicePanel.java
@@ -60,6 +60,7 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
@@ -69,36 +70,38 @@ public class RealmChoicePanel extends Panel {
 
     private static final long serialVersionUID = -1100228004207271270L;
 
-    private static final String SEARCH_REALMS = "searchRealms";
+    protected static final String SEARCH_REALMS = "searchRealms";
 
-    private final RealmRestClient realmRestClient = new RealmRestClient();
+    protected final RealmRestClient realmRestClient = new RealmRestClient();
 
-    private final PageReference pageRef;
+    protected final PageReference pageRef;
 
-    private final LoadableDetachableModel<List<Pair<String, RealmTO>>> 
realmTree;
+    protected final LoadableDetachableModel<List<Pair<String, RealmTO>>> 
realmTree;
 
-    private final LoadableDetachableModel<List<DynRealmTO>> dynRealmTree;
+    protected final LoadableDetachableModel<List<DynRealmTO>> dynRealmTree;
 
-    private final WebMarkupContainerNoVeil container;
+    protected final WebMarkupContainerNoVeil container;
 
-    private Model<RealmTO> model;
+    protected Model<RealmTO> model;
 
-    private final Collection<String> availableRealms;
+    protected final Map<String, Pair<RealmTO, List<RealmTO>>> tree;
 
-    private final Map<String, Pair<RealmTO, List<RealmTO>>> tree;
+    protected final List<AbstractLink> links = new ArrayList<>();
 
-    private final List<AbstractLink> links = new ArrayList<>();
+    protected String searchQuery;
 
-    private String searchQuery;
+    protected List<RealmTO> realmsChoices;
 
-    private List<RealmTO> realmsChoices;
+    protected final boolean isSearchEnabled;
 
-    private final boolean isSearchEnabled;
+    protected final Label realmDisplayKey;
 
-    public RealmChoicePanel(final String id, final PageReference pageRef) {
+    protected final Label realmDisplayValue;
+
+    public RealmChoicePanel(final String id, final String initialRealm, final 
PageReference pageRef) {
         super(id);
         this.pageRef = pageRef;
-        availableRealms = SyncopeConsoleSession.get().getSearchableRealms();
+
         tree = new HashMap<>();
         isSearchEnabled = 
RealmsUtils.isSearchEnabled(SyncopeConsoleSession.get().getSearchableRealms());
 
@@ -118,7 +121,7 @@ public class RealmChoicePanel extends Panel {
                             map(el -> 
Pair.of(el.getValue().getLeft().getFullPath(), el.getValue().getKey())).
                             sorted(Comparator.comparing(Pair::getLeft));
                 }
-                return full.filter(realm -> availableRealms.stream().anyMatch(
+                return full.filter(realm -> 
SyncopeConsoleSession.get().getSearchableRealms().stream().anyMatch(
                         availableRealm -> 
realm.getValue().getFullPath().startsWith(availableRealm))).
                         collect(Collectors.toList());
             }
@@ -130,7 +133,7 @@ public class RealmChoicePanel extends Panel {
 
             @Override
             protected List<DynRealmTO> load() {
-                List<DynRealmTO> dynRealms = realmRestClient.listDynReams();
+                List<DynRealmTO> dynRealms = realmRestClient.listDynRealms();
                 dynRealms.sort((left, right) -> {
                     if (left == null) {
                         return -1;
@@ -140,13 +143,13 @@ public class RealmChoicePanel extends Panel {
                     }
                     return left.getKey().compareTo(right.getKey());
                 });
-                return dynRealms.stream().filter(dynRealm -> 
availableRealms.stream().
+                return dynRealms.stream().filter(dynRealm -> 
SyncopeConsoleSession.get().getSearchableRealms().stream().
                         anyMatch(availableRealm -> 
SyncopeConstants.ROOT_REALM.equals(availableRealm)
                         || 
dynRealm.getKey().equals(availableRealm))).collect(Collectors.toList());
             }
         };
 
-        RealmTO realmTO = 
SyncopeConsoleSession.get().getRootRealm().map(rootRealm -> {
+        RealmTO realm = 
SyncopeConsoleSession.get().getRootRealm(initialRealm).map(rootRealm -> {
             String rootRealmName = StringUtils.substringAfterLast(rootRealm, 
"/");
 
             List<RealmTO> realmTOs = realmRestClient.search(
@@ -154,7 +157,7 @@ public class RealmChoicePanel extends Panel {
                             ? SyncopeConstants.ROOT_REALM : 
rootRealmName)).getResult();
 
             return realmTOs.stream().
-                    filter(realm -> 
rootRealm.equals(realm.getFullPath())).findFirst().
+                    filter(r -> rootRealm.equals(r.getFullPath())).findFirst().
                     orElseGet(() -> {
                         RealmTO placeholder = new RealmTO();
                         placeholder.setName(rootRealmName);
@@ -163,30 +166,43 @@ public class RealmChoicePanel extends Panel {
                     });
         }).orElseGet(RealmTO::new);
 
-        model = Model.of(realmTO);
-        searchQuery = realmTO.getName();
+        model = Model.of(realm);
+        searchQuery = realm.getName();
+
         container = new WebMarkupContainerNoVeil("container", realmTree);
-        container.setOutputMarkupId(true);
-        add(container);
+        add(container.setOutputMarkupId(true));
+
+        realmDisplayKey = new Label("realmDisplayKey", 
realmDisplayKeyModel(null));
+        
container.addOrReplace(realmDisplayKey.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
+        realmDisplayValue = new Label("realmDisplayValue", 
realmDisplayValueText());
+        
container.addOrReplace(realmDisplayValue.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
+
         reloadRealmTree();
     }
 
-    public final void reloadRealmTree() {
-        Label realmLabel = new Label("realmLabel", new Model<>());
-        realmLabel.setOutputMarkupId(true);
-
-        container.addOrReplace(realmLabel);
+    protected IModel<String> realmDisplayKeyModel(final Boolean dynamic) {
+        return dynamic == null
+                ? 
model.getObject().getFullPath().startsWith(SyncopeConstants.ROOT_REALM)
+                ? new ResourceModel("realmDisplayKey", "Realm")
+                : new ResourceModel("dynRealmLabel", "Dynamic Realm")
+                : dynamic
+                        ? new ResourceModel("dynRealmLabel", "Dynamic Realm")
+                        : new ResourceModel("realmDisplayKey", "Realm");
+    }
 
-        if (StringUtils.startsWith(model.getObject().getFullPath(), 
SyncopeConstants.ROOT_REALM)) {
-            realmLabel.setDefaultModel(new ResourceModel("realmLabel", 
"Realm"));
-        } else {
-            realmLabel.setDefaultModel(new ResourceModel("dynRealmLabel", 
"Dynamic Realm"));
-        }
+    protected String realmDisplayValueText() {
+        return RealmsUtils.getFullPath(model.getObject().getFullPath());
+    }
 
-        Label label = new Label("realm", 
RealmsUtils.getFullPath(model.getObject().getFullPath()));
-        label.setOutputMarkupId(true);
-        container.addOrReplace(label);
+    protected void chooseRealm(final RealmTO realm, final AjaxRequestTarget 
target) {
+        model.setObject(realm);
+        realmDisplayValue.setDefaultModelObject(realmDisplayValueText());
+        realmDisplayKey.setDefaultModel(realmDisplayKeyModel(false));
+        target.add(realmDisplayValue);
+        send(pageRef.getPage(), Broadcast.EXACT, new ChosenRealm<>(realm, 
target));
+    }
 
+    public void reloadRealmTree() {
         if (isSearchEnabled) {
             realmsChoices = buildRealmChoices();
             AutoCompleteSettings settings = new AutoCompleteSettings();
@@ -204,8 +220,7 @@ public class RealmChoicePanel extends Panel {
                     realmsChoices = RealmsUtils.checkInput(input)
                             ? buildRealmChoices()
                             : Collections.emptyList();
-                    return realmsChoices.stream().
-                            
map(RealmTO::getFullPath).sorted().collect(Collectors.toList()).iterator();
+                    return 
realmsChoices.stream().map(RealmTO::getFullPath).sorted().iterator();
                 }
 
                 @Override
@@ -222,6 +237,7 @@ public class RealmChoicePanel extends Panel {
                                 final String object,
                                 final Response response,
                                 final String criteria) {
+
                             response.write(object);
                         }
 
@@ -239,15 +255,9 @@ public class RealmChoicePanel extends Panel {
 
                 @Override
                 protected void onUpdate(final AjaxRequestTarget target) {
-                    realmsChoices.stream().filter(
-                            item -> 
item.getFullPath().equals(searchRealms.getModelObject())).
-                            findFirst().ifPresent(realm -> {
-                                model.setObject(realm);
-                                
label.setDefaultModelObject(model.getObject().getFullPath());
-                                realmLabel.setDefaultModel(new 
ResourceModel("realmLabel", "Realm"));
-                                target.add(label);
-                                send(pageRef.getPage(), Broadcast.EXACT, new 
ChosenRealm<>(realm, target));
-                            });
+                    realmsChoices.stream().
+                            filter(item -> 
item.getFullPath().equals(searchRealms.getModelObject())).
+                            findFirst().ifPresent(realm -> chooseRealm(realm, 
target));
                 }
             });
 
@@ -262,7 +272,7 @@ public class RealmChoicePanel extends Panel {
 
                 @Override
                 protected List<AbstractLink> newSubMenuButtons(final String 
buttonMarkupId) {
-                    buildRealmLinks(label, realmLabel);
+                    buildRealmLinks();
                     return RealmChoicePanel.this.links;
                 }
             };
@@ -277,7 +287,7 @@ public class RealmChoicePanel extends Panel {
         }
     }
 
-    private void buildRealmLinks(final Label label, final Label realmLabel) {
+    protected void buildRealmLinks() {
         RealmChoicePanel.this.links.clear();
         RealmChoicePanel.this.links.add(new BootstrapAjaxLink<RealmTO>(
                 ButtonList.getButtonMarkupId(),
@@ -313,11 +323,7 @@ public class RealmChoicePanel extends Panel {
 
                 @Override
                 public void onClick(final AjaxRequestTarget target) {
-                    model.setObject(link.getRight());
-                    
label.setDefaultModelObject(model.getObject().getFullPath());
-                    realmLabel.setDefaultModel(new ResourceModel("realmLabel", 
"Realm"));
-                    target.add(label);
-                    send(pageRef.getPage(), Broadcast.EXACT, new 
ChosenRealm<>(link.getRight(), target));
+                    chooseRealm(link.getRight(), target);
                 }
             });
         });
@@ -347,34 +353,44 @@ public class RealmChoicePanel extends Panel {
             });
 
             dynRealmTree.getObject().forEach(dynRealmTO -> {
-                final RealmTO realmTO = new RealmTO();
-                realmTO.setKey(dynRealmTO.getKey());
-                realmTO.setName(dynRealmTO.getKey());
-                realmTO.setFullPath(dynRealmTO.getKey());
+                RealmTO realm = new RealmTO();
+                realm.setKey(dynRealmTO.getKey());
+                realm.setName(dynRealmTO.getKey());
+                realm.setFullPath(dynRealmTO.getKey());
 
                 RealmChoicePanel.this.links.add(new BootstrapAjaxLink<RealmTO>(
                         ButtonList.getButtonMarkupId(),
                         new Model<>(),
                         Buttons.Type.Link,
-                        new Model<>(realmTO.getKey())) {
+                        new Model<>(realm.getKey())) {
 
                     private static final long serialVersionUID = 
-7978723352517770644L;
 
                     @Override
                     public void onClick(final AjaxRequestTarget target) {
-                        model.setObject(realmTO);
-                        label.setDefaultModelObject(realmTO.getKey());
-                        realmLabel.setDefaultModel(new 
ResourceModel("dynRealmLabel", "Dynamic Realm"));
-                        target.add(label);
-                        send(pageRef.getPage(), Broadcast.EXACT, new 
ChosenRealm<>(realmTO, target));
+                        chooseRealm(realm, target);
                     }
                 });
             });
         }
     }
 
+    protected List<RealmTO> buildRealmChoices() {
+        return Stream.of(
+                
realmTree.getObject().stream().map(Pair::getValue).collect(Collectors.toList()),
+                dynRealmTree.getObject().stream().map(item -> {
+                    RealmTO realm = new RealmTO();
+                    realm.setKey(item.getKey());
+                    realm.setName(item.getKey());
+                    realm.setFullPath(item.getKey());
+                    return realm;
+                }).collect(Collectors.toList())).flatMap(Collection::stream).
+                collect(Collectors.toList());
+    }
+
     public final RealmChoicePanel reloadRealmTree(final AjaxRequestTarget 
target) {
         reloadRealmTree();
+        chooseRealm(model.getObject(), target);
         target.add(container);
         return this;
     }
@@ -385,7 +401,7 @@ public class RealmChoicePanel extends Panel {
         return this;
     }
 
-    private Map<String, Pair<RealmTO, List<RealmTO>>> reloadRealmParentMap() {
+    protected Map<String, Pair<RealmTO, List<RealmTO>>> reloadRealmParentMap() 
{
         List<RealmTO> realmsToList = isSearchEnabled
                 ? 
realmRestClient.search(RealmsUtils.buildQuery(searchQuery)).getResult()
                 : realmRestClient.list();
@@ -395,7 +411,7 @@ public class RealmChoicePanel extends Panel {
                 collect(Collectors.toList()));
     }
 
-    private Map<String, Pair<RealmTO, List<RealmTO>>> 
reloadRealmParentMap(final List<RealmTO> realms) {
+    protected Map<String, Pair<RealmTO, List<RealmTO>>> 
reloadRealmParentMap(final List<RealmTO> realms) {
         tree.clear();
 
         Map<String, List<RealmTO>> cache = new HashMap<>();
@@ -420,19 +436,6 @@ public class RealmChoicePanel extends Panel {
         return tree;
     }
 
-    private List<RealmTO> buildRealmChoices() {
-        return Stream.of(
-                
realmTree.getObject().stream().map(Pair::getValue).collect(Collectors.toList()),
-                dynRealmTree.getObject().stream().map(item -> {
-                    RealmTO realmTO = new RealmTO();
-                    realmTO.setKey(item.getKey());
-                    realmTO.setName(item.getKey());
-                    realmTO.setFullPath(item.getKey());
-                    return realmTO;
-                }).collect(Collectors.toList())).flatMap(Collection::stream).
-                collect(Collectors.toList());
-    }
-
     /**
      * Gets current selected realm.
      *
@@ -456,14 +459,13 @@ public class RealmChoicePanel extends Panel {
             }
         }
         return null;
-
     }
 
     public static class ChosenRealm<T> {
 
-        private final AjaxRequestTarget target;
+        protected final AjaxRequestTarget target;
 
-        private final T obj;
+        protected final T obj;
 
         public ChosenRealm(final T obj, final AjaxRequestTarget target) {
             this.obj = obj;
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
index 25a7cace82..8e1b5d7cfb 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/rest/RealmRestClient.java
@@ -45,11 +45,11 @@ public class RealmRestClient extends BaseRestClient {
         return 
getService(RealmService.class).list(SyncopeConstants.ROOT_REALM);
     }
 
-    public List<DynRealmTO> listDynReams() {
+    public List<DynRealmTO> listDynRealms() {
         return getService(DynRealmService.class).list();
     }
 
-    public DynRealmTO readDynReams(final String key) {
+    public DynRealmTO readDynRealm(final String key) {
         return getService(DynRealmService.class).read(key);
     }
 
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
index 9b11efaebd..2d828c4d54 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionsPanel.java
@@ -77,6 +77,21 @@ public final class ActionsPanel<T extends Serializable> 
extends Panel {
         return action;
     }
 
+    public Action<T> add(final Action<T> action) {
+        actions.add(action);
+        return action;
+    }
+
+    public Action<T> add(final int index, final Action<T> action) {
+        actions.add(index, action);
+        return action;
+    }
+
+    public Action<T> set(final int index, final Action<T> action) {
+        actions.set(index, action);
+        return action;
+    }
+
     public List<Action<T>> getActions() {
         return actions;
     }
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
index 8787a3f70b..425cec1460 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
@@ -57,13 +57,13 @@ public class NumberWidget extends BaseWidget {
         List<String> anyTypes = new AnyTypeRestClient().list();
         switch (id) {
             case "totalUsers":
-                pageParameters.add("selectedIndex", 1);
+                pageParameters.add(Realms.SELECTED_INDEX, 1);
                 responsePage = Realms.class;
                 isAuthorized = 
SyncopeConsoleSession.get().owns(StandardEntitlement.USER_SEARCH);
                 break;
 
             case "totalGroups":
-                pageParameters.add("selectedIndex", 2);
+                pageParameters.add(Realms.SELECTED_INDEX, 2);
                 responsePage = Realms.class;
                 isAuthorized = 
SyncopeConsoleSession.get().owns(StandardEntitlement.GROUP_SEARCH);
                 break;
@@ -74,7 +74,7 @@ public class NumberWidget extends BaseWidget {
                     for (int i = 0; i < anyTypes.size() && selectedIndex == 
null; i++) {
                         if (anyTypes.get(i).equals(label)) {
                             selectedIndex = i + 1;
-                            pageParameters.add("selectedIndex", selectedIndex);
+                            pageParameters.add(Realms.SELECTED_INDEX, 
selectedIndex);
                         }
                     }
                     responsePage = Realms.class;
@@ -91,7 +91,7 @@ public class NumberWidget extends BaseWidget {
                     for (int i = 0; i < anyTypes.size() && selectedIndex == 
null; i++) {
                         if (anyTypes.get(i).equals(label)) {
                             selectedIndex = i + 1;
-                            pageParameters.add("selectedIndex", selectedIndex);
+                            pageParameters.add(Realms.SELECTED_INDEX, 
selectedIndex);
                         }
                     }
                     responsePage = Realms.class;
@@ -108,7 +108,7 @@ public class NumberWidget extends BaseWidget {
                 break;
 
             default:
-                pageParameters.add("selectedIndex", 0);
+                pageParameters.add(Realms.SELECTED_INDEX, 0);
                 responsePage = Realms.class;
         }
 
diff --git 
a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmChoicePanel.html
 
b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmChoicePanel.html
index 3d015ed983..bfbb60600e 100644
--- 
a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmChoicePanel.html
+++ 
b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmChoicePanel.html
@@ -20,7 +20,7 @@ under the License.
   <wicket:panel>
     <div wicket:id="container" class="realm-header">
       <div class="realm-label">
-        <label wicket:id="realmLabel"/>: <label wicket:id="realm"/> 
+        <label wicket:id="realmDisplayKey"/>: <label 
wicket:id="realmDisplayValue"/>
       </div>
       <span wicket:id="realmsFragment"></span>
 
diff --git 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
index c0cd43c310..f89c96686f 100644
--- 
a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
+++ 
b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
@@ -69,7 +69,7 @@ public class RealmsITCase extends AbstractConsoleITCase {
         
TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realmsFragment:realms:dropdown-menu:buttons:5:button",
                 Constants.ON_CLICK);
 
-        TESTER.assertLabel("body:content:realmChoicePanel:container:realm", 
"/testRealm");
+        
TESTER.assertLabel("body:content:realmChoicePanel:container:realmDisplayValue", 
"/testRealm");
 
         TESTER.getRequest().addParameter("confirm", "true");
         TESTER.clickLink(
@@ -81,7 +81,7 @@ public class RealmsITCase extends AbstractConsoleITCase {
         
TESTER.assertLabel("body:content:body:container:content:tabbedPanel:panel:container:accountPolicy:field-label",
                 "Account Policy");
 
-        TESTER.assertLabel("body:content:realmChoicePanel:container:realm", 
"/");
+        
TESTER.assertLabel("body:content:realmChoicePanel:container:realmDisplayValue", 
"/");
     }
 
     @Test
@@ -107,7 +107,7 @@ public class RealmsITCase extends AbstractConsoleITCase {
         
TESTER.executeAjaxEvent("body:content:realmChoicePanel:container:realmsFragment:realms:dropdown-menu:buttons:4:button",
                 Constants.ON_CLICK);
 
-        TESTER.assertLabel("body:content:realmChoicePanel:container:realm", 
"/odd");
+        
TESTER.assertLabel("body:content:realmChoicePanel:container:realmDisplayValue", 
"/odd");
 
         TESTER.clickLink(
                 
"body:content:body:container:content:tabbedPanel:panel:actions:actions:actionRepeater:2:action:action");
@@ -127,7 +127,7 @@ public class RealmsITCase extends AbstractConsoleITCase {
         assertSuccessMessage();
         TESTER.cleanupFeedbackMessages();
 
-        TESTER.assertLabel("body:content:realmChoicePanel:container:realm", 
"/odd");
+        
TESTER.assertLabel("body:content:realmChoicePanel:container:realmDisplayValue", 
"/odd");
 
         TESTER.clickLink(
                 
"body:content:body:container:content:tabbedPanel:panel:actions:actions:actionRepeater:2:action:action");

Reply via email to