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>

Reply via email to