Extensive usage of SyncopeConstants.ROOT_REALM + review group search only when entitlement is owned
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/d420c398 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/d420c398 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/d420c398 Branch: refs/heads/2_0_X Commit: d420c398f58495b7e46ae7128245382940cb7004 Parents: f07fadc Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Tue Jul 24 09:47:28 2018 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Tue Jul 24 10:05:51 2018 +0200 ---------------------------------------------------------------------- .../console/panels/GroupDirectoryPanel.java | 4 +-- .../console/panels/RoleDirectoryPanel.java | 7 +++-- .../panels/search/AbstractSearchPanel.java | 12 ++++---- .../panels/search/AnyObjectSearchPanel.java | 4 ++- .../panels/search/SearchClausePanel.java | 7 +++-- .../console/panels/search/UserSearchPanel.java | 1 - .../client/console/rest/GroupRestClient.java | 32 ++------------------ .../client/console/wizards/any/Groups.java | 7 +++-- 8 files changed, 26 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java index 6bef561..188e21a 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java @@ -116,7 +116,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli panel = new UserDirectoryPanel.Builder( classRestClient.list(anyTypeTO.getClasses()), anyTypeTO.getKey(), pageRef). - setRealm("/"). + setRealm(SyncopeConstants.ROOT_REALM). setFiltered(true). setFiql(query). disableCheckBoxes(). @@ -136,7 +136,7 @@ public class GroupDirectoryPanel extends AnyDirectoryPanel<GroupTO, GroupRestCli panel = new AnyObjectDirectoryPanel.Builder( classRestClient.list(anyTypeTO.getClasses()), anyTypeTO.getKey(), pageRef). - setRealm("/"). + setRealm(SyncopeConstants.ROOT_REALM). setFiltered(true). setFiql(query). disableCheckBoxes(). http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java index d382c7b..579ab16 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java @@ -47,6 +47,7 @@ import org.apache.syncope.client.console.wizards.WizardMgtPanel; import org.apache.syncope.client.console.wizards.role.RoleWrapper; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.common.lib.SyncopeClientException; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.AnyTypeTO; import org.apache.syncope.common.lib.to.RoleTO; import org.apache.syncope.common.lib.to.UserTO; @@ -144,7 +145,7 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleWrapper, Role @Override public void onClick(final AjaxRequestTarget target, final RoleTO ignore) { - final RoleTO clone = SerializationUtils.clone(model.getObject()); + RoleTO clone = SerializationUtils.clone(model.getObject()); clone.setKey(null); send(RoleDirectoryPanel.this, Broadcast.EXACT, new AjaxWizard.NewItemActionEvent<>(new RoleWrapper(clone), target)); @@ -172,9 +173,9 @@ public class RoleDirectoryPanel extends DirectoryPanel<RoleTO, RoleWrapper, Role @Override protected Panel getDirectoryPanel(final String id) { - final Panel panel = new UserDirectoryPanel.Builder( + Panel panel = new UserDirectoryPanel.Builder( classRestClient.list(anyTypeTO.getClasses()), anyTypeTO.getKey(), pageRef). - setRealm("/"). + setRealm(SyncopeConstants.ROOT_REALM). setFiltered(true). setFiql(query). disableCheckBoxes(). http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java index be1d2b1..0f93fea 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java @@ -25,19 +25,21 @@ import java.util.List; import java.util.Map; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; +import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.rest.AnyTypeRestClient; import org.apache.syncope.client.console.rest.GroupRestClient; import org.apache.syncope.client.console.rest.ResourceRestClient; import org.apache.syncope.client.console.rest.SchemaRestClient; import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel; import org.apache.syncope.common.lib.EntityTOUtils; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.search.SearchableFields; import org.apache.syncope.common.lib.to.PlainSchemaTO; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.SchemaType; +import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.event.IEventSink; -import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; @@ -128,11 +130,9 @@ public abstract class AbstractSearchPanel extends Panel { super(id); populate(); Pair<IModel<Map<String, String>>, Integer> groupInfo = - Pair.of(groupNames, groupRestClient.search("/", - null, - 1, - 1, - new SortParam<>("name", true)).getTotalCount()); + SyncopeConsoleSession.get().owns(StandardEntitlement.GROUP_SEARCH) + ? Pair.of(groupNames, groupRestClient.count(SyncopeConstants.ROOT_REALM, null, null)) + : Pair.of(groupNames, 0); this.model = builder.model; this.typeKind = kind; http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnyObjectSearchPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnyObjectSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnyObjectSearchPanel.java index 0a94110..8197d15 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnyObjectSearchPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AnyObjectSearchPanel.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; @@ -79,7 +80,8 @@ public class AnyObjectSearchPanel extends AbstractSearchPanel { @Override protected Map<String, String> load() { - List<GroupTO> res = groupRestClient.search("/", + List<GroupTO> res = groupRestClient.search( + SyncopeConstants.ROOT_REALM, null, 1, MAX_GROUP_LIST_CARDINALITY, http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java index 80c0452..aca3887 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java @@ -45,6 +45,7 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPa import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.common.lib.EntityTOUtils; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.lib.to.PlainSchemaTO; import org.apache.wicket.AttributeModifier; @@ -393,8 +394,7 @@ public class SearchClausePanel extends FieldPanel<SearchClause> { if (field.getModel().getObject().getType() == Type.GROUP_MEMBERSHIP) { String[] inputAsArray = property.getField().getInputAsArray(); - if (StringUtils.isBlank(property.getField().getInput()) - || inputAsArray.length == 0) { + if (StringUtils.isBlank(property.getField().getInput()) || inputAsArray.length == 0) { property.setChoices(properties.getObject()); } else { String inputValue = (inputAsArray.length > 1 && inputAsArray[1] != null) @@ -408,7 +408,8 @@ public class SearchClausePanel extends FieldPanel<SearchClause> { ? inputValue : "*" + inputValue + "*"); if (groupInfo.getRight() > AnyObjectSearchPanel.MAX_GROUP_LIST_CARDINALITY) { - List<GroupTO> filteredGroups = groupRestClient.search("/", + List<GroupTO> filteredGroups = groupRestClient.search( + SyncopeConstants.ROOT_REALM, SyncopeClient.getGroupSearchConditionBuilder(). is("name").equalToIgnoreCase(inputValue). query(), http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java index faaecb8..049ea25 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/UserSearchPanel.java @@ -83,5 +83,4 @@ public final class UserSearchPanel extends AnyObjectSearchPanel { result.add(SearchClause.Type.RELATIONSHIP); return result; } - } http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java index 9ecd9ca..e5d642b 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/GroupRestClient.java @@ -18,13 +18,11 @@ */ package org.apache.syncope.client.console.rest; -import java.util.ArrayList; import java.util.List; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.Response; import org.apache.syncope.common.lib.patch.GroupPatch; import org.apache.syncope.common.lib.to.GroupTO; -import org.apache.syncope.common.lib.to.PagedResult; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.types.BulkMembersActionType; import org.apache.syncope.common.rest.api.beans.AnyQuery; @@ -77,33 +75,9 @@ public class GroupRestClient extends AbstractAnyRestClient<GroupTO> { final SortParam<String> sort, final String type) { - List<GroupTO> result = new ArrayList<>(); - PagedResult<GroupTO> res; - do { - res = getService(GroupService.class). - search(new AnyQuery.Builder().realm(realm).fiql(fiql).page(page).size(size). - orderBy(toOrderBy(sort)).details(false).build()); - result.addAll(res.getResult()); - } while (page == -1 && size == -1 && res.getNext() != null); - - return result; - } - - public PagedResult<GroupTO> search( - final String realm, - final String fiql, - final int page, - final int size, - final SortParam<String> sort) { - - PagedResult<GroupTO> res; - do { - res = getService(GroupService.class). - search(new AnyQuery.Builder().realm(realm).fiql(fiql).page(page).size(size). - orderBy(toOrderBy(sort)).details(false).build()); - } while (page == -1 && size == -1 && res.getNext() != null); - - return res; + return getService(GroupService.class). + search(new AnyQuery.Builder().realm(realm).fiql(fiql).page(page).size(size). + orderBy(toOrderBy(sort)).details(false).build()).getResult(); } public void bulkMembersAction(final String key, final BulkMembersActionType actionType) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d420c398/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java index 2c28a23..d22a270 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Groups.java @@ -36,6 +36,7 @@ import org.apache.syncope.client.console.wicket.ajax.markup.html.LabelInfo; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxPalettePanel; import org.apache.syncope.client.lib.SyncopeClient; import org.apache.syncope.common.lib.EntityTOUtils; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.search.GroupFiqlSearchConditionBuilder; import org.apache.syncope.common.lib.to.AnyTO; import org.apache.syncope.common.lib.to.DynRealmTO; @@ -312,7 +313,7 @@ public class Groups extends WizardStep implements ICondition { private void reloadDynMemberships() { GroupFiqlSearchConditionBuilder searchConditionBuilder = SyncopeClient.getGroupSearchConditionBuilder(); - ArrayList<CompleteCondition> conditions = new ArrayList<>(); + List<CompleteCondition> conditions = new ArrayList<>(); for (MembershipTO membership : GroupableRelatableTO.class.cast(anyTO).getDynMemberships()) { conditions.add(searchConditionBuilder.is("key").equalTo(membership.getGroupKey()).wrap()); } @@ -320,7 +321,7 @@ public class Groups extends WizardStep implements ICondition { Map<String, GroupTO> assignedGroups = new HashMap<>(); if (!conditions.isEmpty()) { for (GroupTO group : groupRestClient.search( - "/", + SyncopeConstants.ROOT_REALM, searchConditionBuilder.or(conditions).query(), -1, -1, @@ -347,7 +348,7 @@ public class Groups extends WizardStep implements ICondition { if (Groups.this.templateMode) { reload = realm == null; - realm = "/"; + realm = SyncopeConstants.ROOT_REALM; } else { reload = !Groups.this.anyTO.getRealm().equalsIgnoreCase(realm); realm = Groups.this.anyTO.getRealm();