This is an automated email from the ASF dual-hosted git repository. mdisabatino 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 cc80886 [SYNCOPE-1548] Better management cc80886 is described below commit cc80886824f0b6ce66f2cf3c123e013cd4a74141 Author: Marco Di Sabatino Di Diodoro <marco.disabat...@tirasa.net> AuthorDate: Sun Mar 15 17:24:42 2020 +0100 [SYNCOPE-1548] Better management --- .../client/console/wizards/any/AbstractGroups.java | 78 ++++++++++++++++++++++ .../syncope/client/console/wizards/any/Groups.java | 72 +++++++------------- 2 files changed, 102 insertions(+), 48 deletions(-) diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractGroups.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractGroups.java new file mode 100644 index 0000000..0ee9e7f --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractGroups.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console.wizards.any; + +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.syncope.client.console.wicket.ajax.markup.html.LabelInfo; +import org.apache.syncope.common.lib.to.AnyTO; +import org.apache.wicket.extensions.wizard.WizardStep; +import org.apache.wicket.extensions.wizard.WizardModel.ICondition; +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.basic.Label; + +public abstract class AbstractGroups extends WizardStep implements ICondition { + + private static final long serialVersionUID = -5211384197382796059L; + + protected final AnyTO anyTO; + + protected WebMarkupContainer dyngroupsContainer; + + protected WebMarkupContainer dynrealmsContainer; + + protected WebMarkupContainer groupsContainer; + + public <T extends AnyTO> AbstractGroups(final AnyWrapper<T> modelObject) { + super(); + this.anyTO = modelObject.getInnerObject(); + + setOutputMarkupId(true); + + groupsContainer = new WebMarkupContainer("groupsContainer"); + groupsContainer.setOutputMarkupId(true); + groupsContainer.setOutputMarkupPlaceholderTag(true); + add(groupsContainer); + + // ------------------ + // insert changed label if needed + // ------------------ + if (modelObject instanceof UserWrapper + && UserWrapper.class.cast(modelObject).getPreviousUserTO() != null + && !ListUtils.isEqualList( + UserWrapper.class.cast(modelObject).getInnerObject().getMemberships(), + UserWrapper.class.cast(modelObject).getPreviousUserTO().getMemberships())) { + groupsContainer.add(new LabelInfo("changed", StringUtils.EMPTY)); + } else { + groupsContainer.add(new Label("changed", StringUtils.EMPTY)); + } + // ------------------ + } + + protected abstract void addGroupsPanel(); + + protected abstract void addDynamicRealmsContainer(); + + protected abstract void addDynamicGroupsContainer(); + + @Override + public boolean evaluate() { + return true; + } +} 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 6caed6b..dd94e98 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 @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition; import org.apache.syncope.client.console.SyncopeConsoleApplication; @@ -32,7 +31,6 @@ import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.Constants; import org.apache.syncope.client.console.rest.DynRealmRestClient; import org.apache.syncope.client.console.rest.GroupRestClient; -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.SyncopeConstants; @@ -43,7 +41,6 @@ import org.apache.syncope.common.lib.to.EntityTO; import org.apache.syncope.common.lib.to.GroupTO; import org.apache.syncope.common.lib.to.MembershipTO; import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; -import org.apache.wicket.extensions.wizard.WizardStep; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.model.IModel; import org.apache.wicket.model.util.ListModel; @@ -51,18 +48,15 @@ import org.apache.syncope.common.lib.to.GroupableRelatableTO; import org.apache.syncope.common.lib.types.StandardEntitlement; import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions; import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy; -import org.apache.wicket.extensions.wizard.WizardModel.ICondition; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.PropertyModel; -public class Groups extends WizardStep implements ICondition { +public class Groups extends AbstractGroups { private static final long serialVersionUID = 552437609667518888L; - private final AnyTO anyTO; - - private boolean templateMode; + private final boolean templateMode; protected final GroupRestClient groupRestClient = new GroupRestClient(); @@ -70,18 +64,9 @@ public class Groups extends WizardStep implements ICondition { protected GroupsModel groupsModel; - protected WebMarkupContainer dyngroupsContainer; - - protected WebMarkupContainer dynrealmsContainer; - - protected WebMarkupContainer groupsContainer; - public <T extends AnyTO> Groups(final AnyWrapper<T> modelObject, final boolean templateMode) { - super(); + super(modelObject); this.templateMode = templateMode; - - this.anyTO = modelObject.getInnerObject(); - groupsModel = new GroupsModel(); // ----------------------------------------------------------------- @@ -92,18 +77,13 @@ public class Groups extends WizardStep implements ICondition { permissions.authorizeAll(RENDER); // ----------------------------------------------------------------- - setOutputMarkupId(true); - - groupsContainer = new WebMarkupContainer("groupsContainer"); - groupsContainer.setOutputMarkupId(true); - groupsContainer.setOutputMarkupPlaceholderTag(true); - add(groupsContainer); - - dyngroupsContainer = new WebMarkupContainer("dyngroupsContainer"); - dyngroupsContainer.setOutputMarkupId(true); - dyngroupsContainer.setOutputMarkupPlaceholderTag(true); - add(dyngroupsContainer); + addDynamicGroupsContainer(); + addGroupsPanel(); + addDynamicRealmsContainer(); + } + @Override + protected void addGroupsPanel() { if (anyTO instanceof GroupTO) { groupsContainer.add(new Label("groups").setVisible(false)); groupsContainer.setVisible(false); @@ -180,9 +160,11 @@ public class Groups extends WizardStep implements ICondition { }, new ListModel<>(groupsModel.getObject().stream().map(GroupTO::getName).collect(Collectors.toList()))). hideLabel().setEnabled(false).setOutputMarkupId(true)); - // --------------------------------- } + } + @Override + protected void addDynamicRealmsContainer() { dynrealmsContainer = new WebMarkupContainer("dynrealmsContainer"); dynrealmsContainer.setOutputMarkupId(true); dynrealmsContainer.setOutputMarkupPlaceholderTag(true); @@ -191,20 +173,14 @@ public class Groups extends WizardStep implements ICondition { new ListModel<>(allDynRealms.stream().map(EntityTO::getKey).collect(Collectors.toList()))). hideLabel().setEnabled(false).setOutputMarkupId(true)); add(dynrealmsContainer); + } - // ------------------ - // insert changed label if needed - // ------------------ - if (modelObject instanceof UserWrapper - && UserWrapper.class.cast(modelObject).getPreviousUserTO() != null - && !ListUtils.isEqualList( - UserWrapper.class.cast(modelObject).getInnerObject().getMemberships(), - UserWrapper.class.cast(modelObject).getPreviousUserTO().getMemberships())) { - groupsContainer.add(new LabelInfo("changed", StringUtils.EMPTY)); - } else { - groupsContainer.add(new Label("changed", StringUtils.EMPTY)); - } - // ------------------ + @Override + protected void addDynamicGroupsContainer() { + dyngroupsContainer = new WebMarkupContainer("dyngroupsContainer"); + dyngroupsContainer.setOutputMarkupId(true); + dyngroupsContainer.setOutputMarkupPlaceholderTag(true); + add(dyngroupsContainer); } @Override @@ -216,7 +192,7 @@ public class Groups extends WizardStep implements ICondition { isActionAuthorized(this, RENDER); } - protected class GroupsModel extends ListModel<GroupTO> { + public class GroupsModel extends ListModel<GroupTO> { private static final long serialVersionUID = -4541954630939063927L; @@ -237,7 +213,7 @@ public class Groups extends WizardStep implements ICondition { /** * Retrieve the first MAX_GROUP_LIST_SIZE assignable. */ - private void reloadObject() { + protected void reloadObject() { groups = groupRestClient.search( realm, SyncopeClient.getGroupSearchConditionBuilder().isAssignable().query(), @@ -255,7 +231,7 @@ public class Groups extends WizardStep implements ICondition { /** * Retrieve group memberships. */ - private void reloadMemberships() { + protected void reloadMemberships() { // this is to be sure to have group names (required to see membership details in approval page) GroupFiqlSearchConditionBuilder searchConditionBuilder = SyncopeClient.getGroupSearchConditionBuilder(); @@ -297,7 +273,7 @@ public class Groups extends WizardStep implements ICondition { /** * Retrieve dyn group memberships. */ - private void reloadDynMemberships() { + protected void reloadDynMemberships() { GroupFiqlSearchConditionBuilder searchConditionBuilder = SyncopeClient.getGroupSearchConditionBuilder(); List<CompleteCondition> conditions = GroupableRelatableTO.class.cast(anyTO).getDynMemberships(). @@ -320,7 +296,7 @@ public class Groups extends WizardStep implements ICondition { /** * Reload data if the realm changes (see SYNCOPE-1135). */ - private void reload() { + protected void reload() { boolean reload; if (Groups.this.templateMode) {