This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push: new da73329154 [SYNCOPE-1545] Fixing missing support for attribute removal within Access Policy conf da73329154 is described below commit da7332915413e22927d99fb181712d94912b31a6 Author: Francesco Chicchiriccò <ilgro...@apache.org> AuthorDate: Mon Jul 11 15:22:11 2022 +0200 [SYNCOPE-1545] Fixing missing support for attribute removal within Access Policy conf --- .../policies/AccessPolicyAttrsDirectoryPanel.java | 52 +++++++++++++++++----- .../policies/AccessPolicyAttrsWizardBuilder.java | 7 ++- pom.xml | 4 +- 3 files changed, 49 insertions(+), 14 deletions(-) diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsDirectoryPanel.java b/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsDirectoryPanel.java index 2aa3058d0b..e7c1c0720a 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsDirectoryPanel.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsDirectoryPanel.java @@ -18,45 +18,50 @@ */ package org.apache.syncope.client.console.policies; -import java.io.Serializable; import java.util.List; -import java.util.function.Function; +import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.AMConstants; import org.apache.syncope.client.console.panels.AttrListDirectoryPanel; +import org.apache.syncope.client.console.rest.PolicyRestClient; import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal; +import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink; +import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel; +import org.apache.syncope.client.ui.commons.Constants; +import org.apache.syncope.client.ui.commons.pages.BaseWebPage; import org.apache.syncope.client.ui.commons.wizards.AjaxWizard; import org.apache.syncope.common.lib.Attr; +import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.policy.AccessPolicyConf; import org.apache.syncope.common.lib.policy.AccessPolicyTO; +import org.apache.syncope.common.lib.types.IdRepoEntitlement; +import org.apache.syncope.common.lib.types.PolicyType; import org.apache.wicket.PageReference; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.event.IEvent; import org.apache.wicket.model.IModel; +import org.danekja.java.util.function.serializable.SerializableFunction; public class AccessPolicyAttrsDirectoryPanel extends AttrListDirectoryPanel { - public interface AttrsAccessor extends Function<AccessPolicyConf, List<Attr>>, Serializable { - } - private static final long serialVersionUID = 33604877627114L; private final BaseModal<AccessPolicyTO> wizardModal; - private final IModel<AccessPolicyTO> model; + private final IModel<AccessPolicyTO> accessPolicyModel; - private final AttrsAccessor attrsAccessor; + private final SerializableFunction<AccessPolicyConf, List<Attr>> attrsAccessor; public AccessPolicyAttrsDirectoryPanel( final String id, final BaseModal<AccessPolicyTO> wizardModal, final IModel<AccessPolicyTO> model, - final AttrsAccessor attrsAccessor, + final SerializableFunction<AccessPolicyConf, List<Attr>> attrsAccessor, final PageReference pageRef) { super(id, pageRef, false); this.wizardModal = wizardModal; - this.model = model; + this.accessPolicyModel = model; this.attrsAccessor = attrsAccessor; setOutputMarkupId(true); @@ -70,6 +75,33 @@ public class AccessPolicyAttrsDirectoryPanel extends AttrListDirectoryPanel { initResultTable(); } + @Override + protected ActionsPanel<Attr> getActions(final IModel<Attr> model) { + ActionsPanel<Attr> panel = super.getActions(model); + + panel.add(new ActionLink<>() { + + private static final long serialVersionUID = -3722207913631435501L; + + @Override + public void onClick(final AjaxRequestTarget target, final Attr ignore) { + try { + attrsAccessor.apply(accessPolicyModel.getObject().getConf()).remove(model.getObject()); + PolicyRestClient.update(PolicyType.ACCESS, accessPolicyModel.getObject()); + + SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED)); + target.add(container); + } catch (SyncopeClientException e) { + LOG.error("While updating {}", accessPolicyModel.getObject().getKey(), e); + SyncopeConsoleSession.get().onException(e); + } + ((BaseWebPage) pageRef.getPage()).getNotificationPanel().refresh(target); + } + }, ActionLink.ActionType.DELETE, IdRepoEntitlement.POLICY_UPDATE, true); + + return panel; + } + @Override public void onEvent(final IEvent<?> event) { if (event.getPayload() instanceof ExitEvent) { @@ -103,7 +135,7 @@ public class AccessPolicyAttrsDirectoryPanel extends AttrListDirectoryPanel { @Override protected List<Attr> list() { - return attrsAccessor.apply(model.getObject().getConf()); + return attrsAccessor.apply(accessPolicyModel.getObject().getConf()); } } } diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsWizardBuilder.java b/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsWizardBuilder.java index 61c9684f45..a371e0328c 100644 --- a/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsWizardBuilder.java +++ b/client/am/console/src/main/java/org/apache/syncope/client/console/policies/AccessPolicyAttrsWizardBuilder.java @@ -19,12 +19,15 @@ package org.apache.syncope.client.console.policies; import java.io.Serializable; +import java.util.List; import org.apache.syncope.client.console.rest.PolicyRestClient; import org.apache.syncope.client.console.wizards.AttrWizardBuilder; import org.apache.syncope.common.lib.Attr; +import org.apache.syncope.common.lib.policy.AccessPolicyConf; import org.apache.syncope.common.lib.policy.AccessPolicyTO; import org.apache.syncope.common.lib.types.PolicyType; import org.apache.wicket.PageReference; +import org.danekja.java.util.function.serializable.SerializableFunction; public class AccessPolicyAttrsWizardBuilder extends AttrWizardBuilder { @@ -32,11 +35,11 @@ public class AccessPolicyAttrsWizardBuilder extends AttrWizardBuilder { private final AccessPolicyTO accessPolicy; - private final AccessPolicyAttrsDirectoryPanel.AttrsAccessor attrsAccessor; + private final SerializableFunction<AccessPolicyConf, List<Attr>> attrsAccessor; public AccessPolicyAttrsWizardBuilder( final AccessPolicyTO accessPolicy, - final AccessPolicyAttrsDirectoryPanel.AttrsAccessor attrsAccessor, + final SerializableFunction<AccessPolicyConf, List<Attr>> attrsAccessor, final Attr attr, final PageReference pageRef) { diff --git a/pom.xml b/pom.xml index 39a6681d4a..4425822c59 100644 --- a/pom.xml +++ b/pom.xml @@ -467,8 +467,8 @@ under the License. <jsplumb.version>2.0.7</jsplumb.version> <chartjs.version>1.0.2</chartjs.version> - <wicket.version>9.10.0</wicket.version> - <wicketstuff.version>9.10.0</wicketstuff.version> + <wicket.version>9.11.0</wicket.version> + <wicketstuff.version>9.11.0</wicketstuff.version> <wicket-jqueryui.version>9.8.1</wicket-jqueryui.version> <wicket-bootstrap.version>5.0.6</wicket-bootstrap.version> <wicket-spring-boot.version>3.1.6</wicket-spring-boot.version>