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 2019/12/20 13:58:33 UTC
[syncope] branch 2_1_X updated: [SYNCOPE-1517] Initial changes
(part two)
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
The following commit(s) were added to refs/heads/2_1_X by this push:
new 0798b75 [SYNCOPE-1517] Initial changes (part two)
0798b75 is described below
commit 0798b75c2995b17770bf73abd6a0e74d0dc64ca1
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Dec 20 14:58:17 2019 +0100
[SYNCOPE-1517] Initial changes (part two)
---
.../syncope/client/console/panels/AnyPanel.java | 189 +++++++++++----------
.../wicket/markup/html/form/ActionsPanel.java | 4 +
2 files changed, 104 insertions(+), 89 deletions(-)
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 14940c7..86c4708 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
@@ -67,6 +67,8 @@ public class AnyPanel extends Panel implements ModalPanel {
protected static final Logger LOG = LoggerFactory.getLogger(AnyPanel.class);
+ protected static final String DIRECTORY_PANEL_ID = "searchResult";
+
@FunctionalInterface
public interface DirectoryPanelSupplier {
@@ -78,6 +80,93 @@ public class AnyPanel extends Panel implements ModalPanel {
PageReference pageRef);
}
+ protected static DirectoryPanelSupplier DEFAULT_DIRECTORYPANEL_SUPPLIER =
+ (id, anyTypeTO, realmTO, anyLayout, pageRef) -> {
+
+ AnyTypeClassRestClient anyTypeClassRestClient = new AnyTypeClassRestClient();
+
+ final Panel panel;
+ String fiql;
+
+ final String realm;
+ final String dynRealm;
+ if (realmTO.getFullPath().startsWith(SyncopeConstants.ROOT_REALM)) {
+ realm = realmTO.getFullPath();
+ dynRealm = null;
+ } else {
+ realm = SyncopeConstants.ROOT_REALM;
+ dynRealm = realmTO.getKey();
+ }
+
+ switch (anyTypeTO.getKind()) {
+ case USER:
+ fiql = dynRealm == null
+ ? SyncopeClient.getUserSearchConditionBuilder().
+ is(Constants.KEY_FIELD_NAME).notNullValue().query()
+ : SyncopeClient.getUserSearchConditionBuilder().
+ inDynRealms(dynRealm).query();
+
+ UserTO userTO = new UserTO();
+ userTO.setRealm(realmTO.getFullPath());
+ panel = new UserDirectoryPanel.Builder(
+ anyTypeClassRestClient.list(anyTypeTO.getClasses()),
+ anyTypeTO.getKey(),
+ pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
+ setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
+ AnyLayoutUtils.newLayoutInfo(
+ userTO, anyTypeTO.getClasses(), anyLayout.getUser(), pageRef)).
+ build(id);
+ MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.RENDER,
+ StandardEntitlement.USER_SEARCH);
+ break;
+
+ case GROUP:
+ fiql = dynRealm == null
+ ? SyncopeClient.getGroupSearchConditionBuilder().
+ is(Constants.KEY_FIELD_NAME).notNullValue().query()
+ : SyncopeClient.getGroupSearchConditionBuilder().inDynRealms(dynRealm).query();
+
+ GroupTO groupTO = new GroupTO();
+ groupTO.setRealm(realmTO.getFullPath());
+ panel = new GroupDirectoryPanel.Builder(
+ anyTypeClassRestClient.list(anyTypeTO.getClasses()),
+ anyTypeTO.getKey(),
+ pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
+ setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
+ AnyLayoutUtils.newLayoutInfo(
+ groupTO, anyTypeTO.getClasses(), anyLayout.getGroup(), pageRef)).
+ build(id);
+ // list of group is available to all authenticated users
+ break;
+
+ case ANY_OBJECT:
+ fiql = dynRealm == null
+ ? SyncopeClient.getAnyObjectSearchConditionBuilder(anyTypeTO.getKey()).
+ is(Constants.KEY_FIELD_NAME).notNullValue().query()
+ : SyncopeClient.getAnyObjectSearchConditionBuilder(anyTypeTO.getKey()).
+ inDynRealms(dynRealm).query();
+
+ AnyObjectTO anyObjectTO = new AnyObjectTO();
+ anyObjectTO.setRealm(realmTO.getFullPath());
+ anyObjectTO.setType(anyTypeTO.getKey());
+ panel = new AnyObjectDirectoryPanel.Builder(
+ anyTypeClassRestClient.list(anyTypeTO.getClasses()),
+ anyTypeTO.getKey(),
+ pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
+ setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
+ AnyLayoutUtils.newLayoutInfo(anyObjectTO, anyTypeTO.getClasses(),
+ anyLayout.getAnyObjects().get(anyTypeTO.getKey()), pageRef)).
+ build(id);
+ MetaDataRoleAuthorizationStrategy.authorize(
+ panel, WebPage.RENDER, AnyEntitlement.SEARCH.getFor(anyTypeTO.getKey()));
+ break;
+
+ default:
+ panel = new LabelPanel(id, null);
+ }
+ return panel;
+ };
+
protected final AnyTypeTO anyTypeTO;
protected final RealmTO realmTO;
@@ -157,11 +246,21 @@ public class AnyPanel extends Panel implements ModalPanel {
accordion.setOutputMarkupId(true);
add(accordion.setEnabled(enableSearch).setVisible(enableSearch));
- directoryPanel = directoryPanelSupplier.supply("searchResult", anyTypeTO, realmTO, anyLayout, pageRef);
+ directoryPanel = createDirectoryPanel(anyTypeTO, realmTO, anyLayout, enableSearch, directoryPanelSupplier);
add(directoryPanel);
// ------------------------
}
+ protected Panel createDirectoryPanel(
+ final AnyTypeTO anyTypeTO,
+ final RealmTO realmTO,
+ final AnyLayout anyLayout,
+ final boolean enableSearch,
+ final DirectoryPanelSupplier directoryPanelSupplier) {
+
+ return directoryPanelSupplier.supply(DIRECTORY_PANEL_ID, anyTypeTO, realmTO, anyLayout, pageRef);
+ }
+
@Override
public void onEvent(final IEvent<?> event) {
if (event.getPayload() instanceof SearchClausePanel.SearchEvent) {
@@ -249,92 +348,4 @@ public class AnyPanel extends Panel implements ModalPanel {
return panel;
}
-
- protected static DirectoryPanelSupplier DEFAULT_DIRECTORYPANEL_SUPPLIER =
- (id, anyType, realmTO, anyLayout, pageRef) -> {
-
- AnyTypeClassRestClient anyTypeClassRestClient = new AnyTypeClassRestClient();
-
- final Panel panel;
- String fiql;
-
- final String realm;
- final String dynRealm;
- if (realmTO.getFullPath().startsWith(SyncopeConstants.ROOT_REALM)) {
- realm = realmTO.getFullPath();
- dynRealm = null;
- } else {
- realm = SyncopeConstants.ROOT_REALM;
- dynRealm = realmTO.getKey();
- }
-
- switch (anyType.getKind()) {
- case USER:
- fiql = dynRealm == null
- ? SyncopeClient.getUserSearchConditionBuilder().
- is(Constants.KEY_FIELD_NAME).notNullValue().query()
- : SyncopeClient.getUserSearchConditionBuilder().
- inDynRealms(dynRealm).query();
-
- UserTO userTO = new UserTO();
- userTO.setRealm(realmTO.getFullPath());
- panel = new UserDirectoryPanel.Builder(
- anyTypeClassRestClient.list(anyType.getClasses()),
- anyType.getKey(),
- pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
- setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
- AnyLayoutUtils.newLayoutInfo(
- userTO, anyType.getClasses(), anyLayout.getUser(), pageRef)).
- build(id);
- MetaDataRoleAuthorizationStrategy.authorize(panel, WebPage.RENDER,
- StandardEntitlement.USER_SEARCH);
- break;
-
- case GROUP:
- fiql = dynRealm == null
- ? SyncopeClient.getGroupSearchConditionBuilder().
- is(Constants.KEY_FIELD_NAME).notNullValue().query()
- : SyncopeClient.getGroupSearchConditionBuilder().inDynRealms(dynRealm).query();
-
- GroupTO groupTO = new GroupTO();
- groupTO.setRealm(realmTO.getFullPath());
- panel = new GroupDirectoryPanel.Builder(
- anyTypeClassRestClient.list(anyType.getClasses()),
- anyType.getKey(),
- pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
- setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
- AnyLayoutUtils.newLayoutInfo(
- groupTO, anyType.getClasses(), anyLayout.getGroup(), pageRef)).
- build(id);
- // list of group is available to all authenticated users
- break;
-
- case ANY_OBJECT:
- fiql = dynRealm == null
- ? SyncopeClient.getAnyObjectSearchConditionBuilder(anyType.getKey()).
- is(Constants.KEY_FIELD_NAME).notNullValue().query()
- : SyncopeClient.getAnyObjectSearchConditionBuilder(anyType.getKey()).
- inDynRealms(dynRealm).query();
-
- AnyObjectTO anyObjectTO = new AnyObjectTO();
- anyObjectTO.setRealm(realmTO.getFullPath());
- anyObjectTO.setType(anyType.getKey());
- panel = new AnyObjectDirectoryPanel.Builder(
- anyTypeClassRestClient.list(anyType.getClasses()),
- anyType.getKey(),
- pageRef).setRealm(realm).setDynRealm(dynRealm).setFiltered(true).
- setFiql(fiql).setWizardInModal(true).addNewItemPanelBuilder(
- AnyLayoutUtils.newLayoutInfo(anyObjectTO, anyType.getClasses(),
- anyLayout.getAnyObjects().get(anyType.getKey()), pageRef)).
- build(id);
- MetaDataRoleAuthorizationStrategy.authorize(
- panel, WebPage.RENDER, AnyEntitlement.SEARCH.getFor(anyType.getKey()));
- break;
-
- default:
- panel = new LabelPanel(id, null);
- }
- return panel;
- };
-
}
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 d269c0a..9b11efa 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,10 @@ public final class ActionsPanel<T extends Serializable> extends Panel {
return action;
}
+ public List<Action<T>> getActions() {
+ return actions;
+ }
+
public ActionsPanel<T> clone(final String componentId, final IModel<T> model) {
ActionsPanel<T> panel = new ActionsPanel<>(componentId, model);
panel.actions.addAll(actions);