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 756377b  [SYNCOPE-1568] Small clean-up and improvements to make the 
new things more general
756377b is described below

commit 756377bf527b09216b0eddeee1cea1b0a8000563
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Mon Jun 1 14:20:24 2020 +0200

    [SYNCOPE-1568] Small clean-up and improvements to make the new things more 
general
---
 ...erRequestApplier.java => UserFormFinalize.java} |  9 ++--
 .../init/ClassPathScanImplementationLookup.java    | 51 ++++++++++----------
 .../syncope/client/console/wizards/AjaxWizard.java |  4 +-
 .../console/wizards/any/DefaultApplierImpl.java    | 35 --------------
 .../any/{Applier.java => UserFormFinalizer.java}   | 12 +++--
 .../any/UserFormFinalizerUtils.java}               | 54 +++++++++++++---------
 .../console/wizards/any/UserWizardBuilder.java     |  7 ++-
 .../panels/UserRequestFormDirectoryPanel.java      | 41 ++++++++++++----
 ...lierImpl.java => UserRequestFormFinalizer.java} | 29 +++++-------
 9 files changed, 123 insertions(+), 119 deletions(-)

diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/annotations/UserRequestApplier.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/annotations/UserFormFinalize.java
similarity index 87%
rename from 
client/console/src/main/java/org/apache/syncope/client/console/annotations/UserRequestApplier.java
rename to 
client/console/src/main/java/org/apache/syncope/client/console/annotations/UserFormFinalize.java
index d2a6682..acea2bd 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/annotations/UserRequestApplier.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/annotations/UserFormFinalize.java
@@ -23,12 +23,13 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
 
 @Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
 @Documented
-public @interface UserRequestApplier {
-    
-    String[] mode() default {};
-    
+public @interface UserFormFinalize {
+
+    AjaxWizard.Mode mode() default AjaxWizard.Mode.EDIT_APPROVAL;
+
 }
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
index b5c2811..9ca47eb 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
@@ -35,12 +35,12 @@ import 
org.apache.syncope.client.console.annotations.BinaryPreview;
 import org.apache.syncope.client.console.annotations.ExtPage;
 import org.apache.syncope.client.console.annotations.ExtWidget;
 import org.apache.syncope.client.console.annotations.Resource;
-import org.apache.syncope.client.console.annotations.UserRequestApplier;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.SSOLoginFormPanel;
 import 
org.apache.syncope.client.console.wicket.markup.html.form.preview.AbstractBinaryPreviewer;
 import org.apache.syncope.client.console.widgets.BaseExtWidget;
 import org.apache.syncope.client.console.widgets.ExtAlertWidget;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.policy.AccountRuleConf;
 import org.apache.syncope.common.lib.policy.PasswordRuleConf;
 import org.apache.syncope.common.lib.policy.PullCorrelationRuleConf;
@@ -55,7 +55,8 @@ import org.slf4j.LoggerFactory;
 import 
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
 import org.springframework.core.type.filter.AssignableTypeFilter;
 import org.springframework.util.ClassUtils;
-import org.apache.syncope.client.console.wizards.any.Applier;
+import org.apache.syncope.client.console.wizards.any.UserFormFinalizer;
+import org.apache.syncope.client.console.annotations.UserFormFinalize;
 
 public class ClassPathScanImplementationLookup {
 
@@ -94,6 +95,8 @@ public class ClassPathScanImplementationLookup {
 
     private List<Class<? extends AbstractBinaryPreviewer>> previewers;
 
+    private List<Class<? extends UserFormFinalizer>> userFormFinalizers;
+
     private List<Class<? extends BaseExtPage>> extPages;
 
     private List<Class<? extends BaseExtWidget>> extWidgets;
@@ -114,8 +117,6 @@ public class ClassPathScanImplementationLookup {
 
     private List<Class<? extends AbstractResource>> resources;
 
-    private List<Class<? extends Applier>> appliers;
-
     /**
      * This method can be overridden by subclasses to customize classpath scan.
      *
@@ -139,7 +140,7 @@ public class ClassPathScanImplementationLookup {
         pullCorrelationRuleConfs = new HashMap<>();
         pushCorrelationRuleConfs = new HashMap<>();
         resources = new ArrayList<>();
-        appliers = new ArrayList<>();
+        userFormFinalizers = new ArrayList<>();
 
         ClassPathScanningCandidateComponentProvider scanner = new 
ClassPathScanningCandidateComponentProvider(false);
         scanner.addIncludeFilter(new AssignableTypeFilter(BasePage.class));
@@ -154,7 +155,7 @@ public class ClassPathScanImplementationLookup {
         scanner.addIncludeFilter(new 
AssignableTypeFilter(PullCorrelationRuleConf.class));
         scanner.addIncludeFilter(new 
AssignableTypeFilter(PushCorrelationRuleConf.class));
         scanner.addIncludeFilter(new 
AssignableTypeFilter(AbstractResource.class));
-        scanner.addIncludeFilter(new AssignableTypeFilter(Applier.class));
+        scanner.addIncludeFilter(new 
AssignableTypeFilter(UserFormFinalizer.class));
 
         scanner.findCandidateComponents(getBasePackage()).forEach(bd -> {
             try {
@@ -207,8 +208,8 @@ public class ClassPathScanImplementationLookup {
                             LOG.error("Could not find annotation {} in {}, 
ignoring",
                                     Resource.class.getName(), clazz.getName());
                         }
-                    } else if (Applier.class.isAssignableFrom(clazz)) {
-                        appliers.add((Class<? extends Applier>) clazz);
+                    } else if 
(UserFormFinalizer.class.isAssignableFrom(clazz)) {
+                        userFormFinalizers.add((Class<? extends 
UserFormFinalizer>) clazz);
                     }
                 }
             } catch (Throwable t) {
@@ -216,7 +217,9 @@ public class ClassPathScanImplementationLookup {
             }
         });
         pages = Collections.unmodifiableList(pages);
+
         previewers = Collections.unmodifiableList(previewers);
+        userFormFinalizers = Collections.unmodifiableList(userFormFinalizers);
 
         extPages.sort(Comparator.comparing(o -> 
o.getAnnotation(ExtPage.class).priority()));
         extPages = Collections.unmodifiableList(extPages);
@@ -237,9 +240,8 @@ public class ClassPathScanImplementationLookup {
 
         resources = Collections.unmodifiableList(resources);
 
-        appliers = Collections.unmodifiableList(appliers);
-
         LOG.debug("Binary previewers found: {}", previewers);
+        LOG.debug("User Form finalizers found {}", userFormFinalizers);
         LOG.debug("Extension pages found: {}", extPages);
         LOG.debug("Extension widgets found: {}", extWidgets);
         LOG.debug("Extension alert widgets found: {}", extAlertWidgets);
@@ -250,7 +252,6 @@ public class ClassPathScanImplementationLookup {
         LOG.debug("Pull Correlation Rule configurations found: {}", 
pullCorrelationRuleConfs);
         LOG.debug("Push Correlation Rule configurations found: {}", 
pushCorrelationRuleConfs);
         LOG.debug("Resources found: {}", resources);
-        LOG.debug("Applyer found {}", appliers);
     }
 
     public Class<? extends AbstractBinaryPreviewer> getPreviewerClass(final 
String mimeType) {
@@ -267,6 +268,20 @@ public class ClassPathScanImplementationLookup {
         return previewer;
     }
 
+    public List<Class<? extends UserFormFinalizer>> 
getUserFormFinalizerClasses(final AjaxWizard.Mode mode) {
+        List<Class<? extends UserFormFinalizer>> classes = new ArrayList<>();
+
+        userFormFinalizers.forEach(candidate -> {
+            if (candidate.isAnnotationPresent(UserFormFinalize.class)
+                    && candidate.getAnnotation(UserFormFinalize.class).mode() 
== mode) {
+
+                classes.add(candidate);
+            }
+        });
+
+        return classes;
+    }
+
     public List<Class<? extends BasePage>> getPageClasses() {
         return pages;
     }
@@ -310,18 +325,4 @@ public class ClassPathScanImplementationLookup {
     public List<Class<? extends AbstractResource>> getResources() {
         return resources;
     }
-
-    public Class<? extends Applier> getApplyerClass(final String mode) {
-        LOG.debug("Searching for applier class for mode: {}", mode);
-        Class<? extends Applier> applier = null;
-        for (Class<? extends Applier> candidate : appliers) {
-            LOG.debug("Evaluating applier class {} for mode {}", 
candidate.getName(), mode);
-            if (candidate.isAnnotationPresent(UserRequestApplier.class)
-                    && 
ArrayUtils.contains(candidate.getAnnotation(UserRequestApplier.class).mode(), 
mode)) {
-                LOG.debug("Found existing applier for mode {}: {}", mode, 
candidate.getName());
-                applier = candidate;
-            }
-        }
-        return applier;
-    }
 }
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
index a1bc067..bbe664e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
@@ -66,9 +66,9 @@ public abstract class AjaxWizard<T extends Serializable> 
extends Wizard
     public enum Mode {
         CREATE,
         EDIT,
+        EDIT_APPROVAL,
         TEMPLATE,
-        READONLY,
-        EDIT_APPROVAL;
+        READONLY;
 
     }
 
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DefaultApplierImpl.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DefaultApplierImpl.java
deleted file mode 100644
index 76beeb5..0000000
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/DefaultApplierImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.syncope.client.console.annotations.UserRequestApplier;
-
-@UserRequestApplier(mode = "EDIT")
-public class DefaultApplierImpl implements Applier {
-
-    public DefaultApplierImpl() {
-
-    }
-
-    @Override
-    public void getClaimerForm(final String key) {
-
-    }
-
-}
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Applier.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizer.java
similarity index 81%
rename from 
client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Applier.java
rename to 
client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizer.java
index 59a4cfe..6cc334e 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Applier.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizer.java
@@ -18,7 +18,13 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-public interface Applier {
-    
-     void getClaimerForm(String key);
+public interface UserFormFinalizer {
+
+    default void beforeUpdate(String userKey) {
+        // nothing to do;
+    }
+
+    default void afterUpdate(String userKey) {
+        // nothing to do;
+    }
 }
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/ApplierUtils.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizerUtils.java
similarity index 52%
rename from 
client/console/src/main/java/org/apache/syncope/client/console/commons/ApplierUtils.java
rename to 
client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizerUtils.java
index bdae41a..246f070 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/commons/ApplierUtils.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserFormFinalizerUtils.java
@@ -16,41 +16,53 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.syncope.client.console.commons;
+package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.commons.lang3.StringUtils;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import 
org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
 import org.apache.syncope.client.console.init.ConsoleInitializer;
-import org.apache.syncope.client.console.wizards.any.Applier;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.util.ClassUtils;
 
-public final class ApplierUtils {
+public final class UserFormFinalizerUtils {
 
-    public static ApplierUtils getInstance() {
-        return new ApplierUtils();
+    private static final Logger LOG = 
LoggerFactory.getLogger(UserFormFinalizerUtils.class);
+
+    private static UserFormFinalizerUtils INSTANCE;
+
+    public static UserFormFinalizerUtils getInstance() {
+        synchronized (LOG) {
+            if (INSTANCE == null) {
+                INSTANCE = new UserFormFinalizerUtils();
+            }
+        }
+        return INSTANCE;
     }
 
     private final ClassPathScanImplementationLookup 
classPathScanImplementationLookup;
 
-    private ApplierUtils() {
+    private UserFormFinalizerUtils() {
         classPathScanImplementationLookup = 
(ClassPathScanImplementationLookup) SyncopeConsoleApplication.get().
                 
getServletContext().getAttribute(ConsoleInitializer.CLASSPATH_LOOKUP);
     }
-    
-    public Applier getApplier(final String mode) {
-        if (StringUtils.isBlank(mode)) {
-            return null;
-        }
 
-        Class<? extends Applier> applier = 
classPathScanImplementationLookup.getApplyerClass(mode);
-        try {
-            return applier == null
-                    ? null
-                    : ClassUtils.getConstructorIfAvailable(applier).
-                    newInstance();
-        } catch (Exception e) {
-            return null;
-        }
+    public List<UserFormFinalizer> getFormFinalizers(final AjaxWizard.Mode 
mode) {
+        List<UserFormFinalizer> finalizers = new ArrayList<>();
+
+        
classPathScanImplementationLookup.getUserFormFinalizerClasses(mode).forEach(applier
 -> {
+            if (applier != null) {
+                try {
+                    
finalizers.add(ClassUtils.getConstructorIfAvailable(applier).newInstance());
+                } catch (Exception e) {
+                    LOG.error("Could not instantiate {}", applier, e);
+                }
+            }
+        });
+
+        return finalizers;
     }
 }
diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
index ed8d8b7..951bf6f 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
@@ -22,7 +22,6 @@ import java.io.Serializable;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.commons.ApplierUtils;
 import org.apache.syncope.client.console.layout.UserForm;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.console.rest.UserRestClient;
@@ -82,9 +81,13 @@ public class UserWizardBuilder extends 
AnyWizardBuilder<UserTO> implements UserF
                 result = new ProvisioningResult<>();
                 result.setEntity(inner);
             } else {
+                List<UserFormFinalizer> finalizers = 
UserFormFinalizerUtils.getInstance().getFormFinalizers(this.mode);
+
+                finalizers.forEach(finalizer -> 
finalizer.beforeUpdate(patch.getKey()));
+
                 result = 
userRestClient.update(getOriginalItem().getInnerObject().getETagValue(), patch);
 
-                
ApplierUtils.getInstance().getApplier(this.mode.name()).getClaimerForm(result.getEntity().getKey());
+                finalizers.forEach(finalizer -> 
finalizer.afterUpdate(patch.getKey()));
             }
         }
 
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
index 66ee573..b3f9091 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
@@ -18,6 +18,8 @@
  */
 package org.apache.syncope.client.console.panels;
 
+import static 
org.apache.syncope.client.console.panels.TogglePanel.HEADER_FIRST_ABBREVIATION;
+
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -25,6 +27,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
@@ -36,10 +39,10 @@ import 
org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import 
org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
 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.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.widgets.UserRequestFormsWidget;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
-import org.apache.syncope.client.console.wizards.any.UserWizardBuilder;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.UserTO;
@@ -66,6 +69,8 @@ public class UserRequestFormDirectoryPanel
 
     private static final String PREF_USER_REQUEST_FORM_PAGINATOR_ROWS = 
"userrequestform.paginator.rows";
 
+    private final AnyTypeRestClient anyTypeRestClient = new 
AnyTypeRestClient();
+
     protected final BaseModal<UserRequestForm> manageFormModal = new 
BaseModal<UserRequestForm>("outer") {
 
         private static final long serialVersionUID = 389935548143327858L;
@@ -132,6 +137,24 @@ public class UserRequestFormDirectoryPanel
     }
 
     @Override
+    protected ActionLinksTogglePanel<UserRequestForm> actionTogglePanel() {
+        return new ActionLinksTogglePanel<UserRequestForm>(Constants.OUTER, 
pageRef) {
+
+            private static final long serialVersionUID = -7688359318035249200L;
+
+            @Override
+            public void updateHeader(final AjaxRequestTarget target, final 
Serializable object) {
+                if (object instanceof UserRequestForm) {
+                    setHeader(target, StringUtils.abbreviate(
+                            ((UserRequestForm) object).getUsername(), 
HEADER_FIRST_ABBREVIATION));
+                } else {
+                    super.updateHeader(target, object);
+                }
+            }
+        };
+    }
+
+    @Override
     public ActionsPanel<UserRequestForm> getActions(final 
IModel<UserRequestForm> model) {
         final ActionsPanel<UserRequestForm> panel = super.getActions(model);
 
@@ -219,21 +242,18 @@ public class UserRequestFormDirectoryPanel
 
                 UserRequestForm formTO = model.getObject();
                 UserTO newUserTO;
-                UserTO previousUserTO;
                 if (formTO.getUserPatch() == null) {
                     newUserTO = formTO.getUserTO();
                     if (newUserTO != null) {
                         // SYNCOPE-1563 do not use the password into 
formTO.getUserTO()
                         newUserTO.setPassword(null);
                     }
-                    previousUserTO = null;
                 } else if (formTO.getUserTO() == null) {
                     // make it stronger by handling possible NPE
-                    previousUserTO = new UserTO();
+                    UserTO previousUserTO = new UserTO();
                     previousUserTO.setKey(formTO.getUserPatch().getKey());
                     newUserTO = AnyOperations.patch(previousUserTO, 
formTO.getUserPatch());
                 } else {
-                    previousUserTO = formTO.getUserTO();
                     formTO.getUserTO().setKey(formTO.getUserPatch().getKey());
                     formTO.getUserTO().setPassword(null);
                     newUserTO = AnyOperations.patch(formTO.getUserTO(), 
formTO.getUserPatch());
@@ -241,11 +261,12 @@ public class UserRequestFormDirectoryPanel
 
                 AjaxWizard.EditItemActionEvent<UserTO> editItemActionEvent =
                         new AjaxWizard.EditItemActionEvent<>(newUserTO, 
target);
-                
editItemActionEvent.forceModalPanel(UserWizardBuilder.class.cast(AnyLayoutUtils.newLayoutInfo(newUserTO,
-                        new 
AnyTypeRestClient().read(AnyTypeKind.USER.name()).getClasses(),
-                        
AnyLayoutUtils.fetch(Collections.singletonList(AnyTypeKind.USER.name())).getUser(),
 pageRef))
-                        .build(BaseModal.CONTENT_ID, 0, 
AjaxWizard.Mode.EDIT_APPROVAL)
-                );
+                
editItemActionEvent.forceModalPanel(AnyLayoutUtils.newLayoutInfo(
+                        newUserTO,
+                        
anyTypeRestClient.read(AnyTypeKind.USER.name()).getClasses(),
+                        
AnyLayoutUtils.fetch(Collections.singletonList(AnyTypeKind.USER.name())).getUser(),
+                        pageRef).
+                        build(BaseModal.CONTENT_ID, 0, 
AjaxWizard.Mode.EDIT_APPROVAL));
 
                 send(UserRequestFormDirectoryPanel.this, Broadcast.EXACT, 
editItemActionEvent);
             }
diff --git 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormApplierImpl.java
 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
similarity index 66%
rename from 
ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormApplierImpl.java
rename to 
ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
index 638f656..b9de3f7 100644
--- 
a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormApplierImpl.java
+++ 
b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
@@ -19,29 +19,24 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.annotations.UserRequestApplier;
 import org.apache.syncope.client.console.rest.UserRequestRestClient;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.client.console.annotations.UserFormFinalize;
 
-@UserRequestApplier(mode = "EDIT_APPROVAL")
-public class UserRequestFormApplierImpl implements Applier {
+@UserFormFinalize(mode = AjaxWizard.Mode.EDIT_APPROVAL)
+public class UserRequestFormFinalizer implements UserFormFinalizer {
 
     private final UserRequestRestClient restClient = new 
UserRequestRestClient();
 
-    public UserRequestFormApplierImpl() {
-
-    }
-
     @Override
-    public void getClaimerForm(final String key) {
-        restClient.getForm(key).ifPresent(form -> claimForm(form.getTaskId()));
-    }
-
-    private void claimForm(final String taskId) {
-        try {
-            restClient.claimForm(taskId);
-        } catch (SyncopeClientException e) {
-            SyncopeConsoleSession.get().onException(e);
-        }
+    public void afterUpdate(final String userKey) {
+        restClient.getForm(userKey).ifPresent(form -> {
+            try {
+                restClient.claimForm(form.getTaskId());
+            } catch (SyncopeClientException e) {
+                SyncopeConsoleSession.get().onException(e);
+            }
+        });
     }
 }

Reply via email to