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

commit df0818aa20e1ac821dd04db0d63348b439a9f5da
Author: Francesco Chicchiriccò <ilgro...@apache.org>
AuthorDate: Fri Feb 24 11:23:35 2023 +0100

    [SYNCOPE-1735] Avoid using LoadableDetachableModel inside Spring beans
---
 .../clientapps/ClientAppModalPanelBuilder.java     | 13 +++---
 .../console/commons/AMRealmPolicyProvider.java     | 48 +++++-----------------
 .../wizards/resources/ResourceSecurityPanel.java   | 19 +++++----
 .../console/commons/IdRepoRealmPolicyProvider.java | 35 ++++------------
 .../wicket/markup/html/form/PolicyRenderer.java    |  7 ++--
 5 files changed, 38 insertions(+), 84 deletions(-)

diff --git 
a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
 
b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
index bcc20e79cf..975a42d34e 100644
--- 
a/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
+++ 
b/client/am/console/src/main/java/org/apache/syncope/client/console/clientapps/ClientAppModalPanelBuilder.java
@@ -21,6 +21,7 @@ package org.apache.syncope.client.console.clientapps;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -84,7 +85,7 @@ public class ClientAppModalPanelBuilder<T extends 
ClientAppTO> extends AbstractM
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.ACCESS).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -95,7 +96,7 @@ public class ClientAppModalPanelBuilder<T extends 
ClientAppTO> extends AbstractM
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.ATTR_RELEASE).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -106,7 +107,7 @@ public class ClientAppModalPanelBuilder<T extends 
ClientAppTO> extends AbstractM
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.AUTH).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -182,21 +183,21 @@ public class ClientAppModalPanelBuilder<T extends 
ClientAppTO> extends AbstractM
 
             AjaxDropDownChoicePanel<String> accessPolicy = new 
AjaxDropDownChoicePanel<>(
                     "field", "accessPolicy", new PropertyModel<>(clientAppTO, 
"accessPolicy"), false);
-            accessPolicy.setChoiceRenderer(new PolicyRenderer(accessPolicies));
+            accessPolicy.setChoiceRenderer(new 
PolicyRenderer(accessPolicies.getObject()));
             accessPolicy.setChoices(new 
ArrayList<>(accessPolicies.getObject().keySet()));
             ((AbstractSingleSelectChoice<?>) 
accessPolicy.getField()).setNullValid(true);
             fields.add(accessPolicy);
 
             AjaxDropDownChoicePanel<String> attrReleasePolicy = new 
AjaxDropDownChoicePanel<>(
                     "field", "attrReleasePolicy", new 
PropertyModel<>(clientAppTO, "attrReleasePolicy"), false);
-            attrReleasePolicy.setChoiceRenderer(new 
PolicyRenderer(attrReleasePolicies));
+            attrReleasePolicy.setChoiceRenderer(new 
PolicyRenderer(attrReleasePolicies.getObject()));
             attrReleasePolicy.setChoices(new 
ArrayList<>(attrReleasePolicies.getObject().keySet()));
             ((AbstractSingleSelectChoice<?>) 
attrReleasePolicy.getField()).setNullValid(true);
             fields.add(attrReleasePolicy);
 
             AjaxDropDownChoicePanel<String> authPolicy = new 
AjaxDropDownChoicePanel<>(
                     "field", "authPolicy", new PropertyModel<>(clientAppTO, 
"authPolicy"), false);
-            authPolicy.setChoiceRenderer(new PolicyRenderer(authPolicies));
+            authPolicy.setChoiceRenderer(new 
PolicyRenderer(authPolicies.getObject()));
             authPolicy.setChoices(new 
ArrayList<>(authPolicies.getObject().keySet()));
             authPolicy.setRequired(true);
             ((AbstractSingleSelectChoice<?>) 
authPolicy.getField()).setNullValid(true);
diff --git 
a/client/am/console/src/main/java/org/apache/syncope/client/console/commons/AMRealmPolicyProvider.java
 
b/client/am/console/src/main/java/org/apache/syncope/client/console/commons/AMRealmPolicyProvider.java
index 174d03153d..bd358e2c47 100644
--- 
a/client/am/console/src/main/java/org/apache/syncope/client/console/commons/AMRealmPolicyProvider.java
+++ 
b/client/am/console/src/main/java/org/apache/syncope/client/console/commons/AMRealmPolicyProvider.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.commons;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
@@ -29,8 +30,6 @@ import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.markup.html.form.AbstractSingleSelectChoice;
 import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 
@@ -38,70 +37,43 @@ public class AMRealmPolicyProvider extends 
IdRepoRealmPolicyProvider {
 
     private static final long serialVersionUID = 1671878489700L;
 
-    private final IModel<Map<String, String>> accessPolicies = new 
LoadableDetachableModel<>() {
-
-        private static final long serialVersionUID = -2012833443695917883L;
-
-        @Override
-        protected Map<String, String> load() {
-            return PolicyRestClient.list(PolicyType.ACCESS).stream().
-                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
-        }
-    };
-
-    private final IModel<Map<String, String>> attrReleasePolicies = new 
LoadableDetachableModel<>() {
-
-        private static final long serialVersionUID = -2012833443695917883L;
-
-        @Override
-        protected Map<String, String> load() {
-            return PolicyRestClient.list(PolicyType.ATTR_RELEASE).stream().
-                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
-        }
-    };
-
-    private final IModel<Map<String, String>> authPolicies = new 
LoadableDetachableModel<>() {
-
-        private static final long serialVersionUID = -2012833443695917883L;
-
-        @Override
-        protected Map<String, String> load() {
-            return PolicyRestClient.list(PolicyType.AUTH).stream().
-                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
-        }
-    };
-
     @Override
     public void add(final RealmTO realmTO, final RepeatingView view) {
         super.add(realmTO, view);
 
+        Map<String, String> accessPolicies = 
PolicyRestClient.list(PolicyType.ACCESS).stream().
+                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, 
(v1, v2) -> v1, LinkedHashMap::new));
         AjaxDropDownChoicePanel<String> accessPolicy = new 
AjaxDropDownChoicePanel<>(
                 view.newChildId(),
                 new ResourceModel("accessPolicy", "accessPolicy").getObject(),
                 new PropertyModel<>(realmTO, "accessPolicy"),
                 false);
         accessPolicy.setChoiceRenderer(new PolicyRenderer(accessPolicies));
-        accessPolicy.setChoices(new 
ArrayList<>(accessPolicies.getObject().keySet()));
+        accessPolicy.setChoices(new ArrayList<>(accessPolicies.keySet()));
         ((AbstractSingleSelectChoice<?>) 
accessPolicy.getField()).setNullValid(true);
         view.add(accessPolicy);
 
+        Map<String, String> attrReleasePolicies = 
PolicyRestClient.list(PolicyType.ATTR_RELEASE).stream().
+                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, 
(v1, v2) -> v1, LinkedHashMap::new));
         AjaxDropDownChoicePanel<String> attrReleasePolicy = new 
AjaxDropDownChoicePanel<>(
                 view.newChildId(),
                 new ResourceModel("attrReleasePolicy", 
"attrReleasePolicy").getObject(),
                 new PropertyModel<>(realmTO, "attrReleasePolicy"),
                 false);
         attrReleasePolicy.setChoiceRenderer(new 
PolicyRenderer(attrReleasePolicies));
-        attrReleasePolicy.setChoices(new 
ArrayList<>(attrReleasePolicies.getObject().keySet()));
+        attrReleasePolicy.setChoices(new 
ArrayList<>(attrReleasePolicies.keySet()));
         ((AbstractSingleSelectChoice<?>) 
attrReleasePolicy.getField()).setNullValid(true);
         view.add(attrReleasePolicy);
 
+        Map<String, String> authPolicies = 
PolicyRestClient.list(PolicyType.AUTH).stream().
+                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, 
(v1, v2) -> v1, LinkedHashMap::new));
         AjaxDropDownChoicePanel<String> authPolicy = new 
AjaxDropDownChoicePanel<>(
                 view.newChildId(),
                 new ResourceModel("authPolicy", "authPolicy").getObject(),
                 new PropertyModel<>(realmTO, "authPolicy"),
                 false);
         authPolicy.setChoiceRenderer(new PolicyRenderer(authPolicies));
-        authPolicy.setChoices(new 
ArrayList<>(authPolicies.getObject().keySet()));
+        
authPolicy.setChoices(authPolicies.keySet().stream().collect(Collectors.toList()));
         ((AbstractSingleSelectChoice<?>) 
authPolicy.getField()).setNullValid(true);
         view.add(authPolicy);
     }
diff --git 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
index ef9dae064f..ed1bf1753e 100644
--- 
a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
+++ 
b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.wizards.resources;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
@@ -46,7 +47,7 @@ public class ResourceSecurityPanel extends WizardStep {
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.PASSWORD).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -57,7 +58,7 @@ public class ResourceSecurityPanel extends WizardStep {
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.ACCOUNT).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -68,7 +69,7 @@ public class ResourceSecurityPanel extends WizardStep {
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.PROPAGATION).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -79,7 +80,7 @@ public class ResourceSecurityPanel extends WizardStep {
         @Override
         protected Map<String, String> load() {
             return PolicyRestClient.list(PolicyType.PULL).stream().
-                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName));
+                    collect(Collectors.toMap(PolicyTO::getKey, 
PolicyTO::getName, (v1, v2) -> v1, LinkedHashMap::new));
         }
     };
 
@@ -111,7 +112,7 @@ public class ResourceSecurityPanel extends WizardStep {
                 new ResourceModel("passwordPolicy", 
"passwordPolicy").getObject(),
                 new PropertyModel<>(resourceTO, "passwordPolicy"),
                 false);
-        passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies));
+        passwordPolicy.setChoiceRenderer(new 
PolicyRenderer(passwordPolicies.getObject()));
         passwordPolicy.setChoices(new 
ArrayList<>(passwordPolicies.getObject().keySet()));
         ((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
         container.add(passwordPolicy);
@@ -125,7 +126,7 @@ public class ResourceSecurityPanel extends WizardStep {
                 new ResourceModel("accountPolicy", 
"accountPolicy").getObject(),
                 new PropertyModel<>(resourceTO, "accountPolicy"),
                 false);
-        accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies));
+        accountPolicy.setChoiceRenderer(new 
PolicyRenderer(accountPolicies.getObject()));
         accountPolicy.setChoices(new 
ArrayList<>(accountPolicies.getObject().keySet()));
         ((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
         container.add(accountPolicy);
@@ -139,7 +140,7 @@ public class ResourceSecurityPanel extends WizardStep {
                 new ResourceModel("propagationPolicy", 
"propagationPolicy").getObject(),
                 new PropertyModel<>(resourceTO, "propagationPolicy"),
                 false);
-        propagationPolicy.setChoiceRenderer(new 
PolicyRenderer(propagationPolicies));
+        propagationPolicy.setChoiceRenderer(new 
PolicyRenderer(propagationPolicies.getObject()));
         propagationPolicy.setChoices(new 
ArrayList<>(propagationPolicies.getObject().keySet()));
         ((DropDownChoice<?>) propagationPolicy.getField()).setNullValid(true);
         container.add(propagationPolicy);
@@ -153,7 +154,7 @@ public class ResourceSecurityPanel extends WizardStep {
                 new ResourceModel("pullPolicy", "pullPolicy").getObject(),
                 new PropertyModel<>(resourceTO, "pullPolicy"),
                 false);
-        pullPolicy.setChoiceRenderer(new PolicyRenderer(pullPolicies));
+        pullPolicy.setChoiceRenderer(new 
PolicyRenderer(pullPolicies.getObject()));
         pullPolicy.setChoices(new 
ArrayList<>(pullPolicies.getObject().keySet()));
         ((DropDownChoice<?>) pullPolicy.getField()).setNullValid(true);
         container.add(pullPolicy);
@@ -167,7 +168,7 @@ public class ResourceSecurityPanel extends WizardStep {
                 new ResourceModel("pushPolicy", "pushPolicy").getObject(),
                 new PropertyModel<>(resourceTO, "pushPolicy"),
                 false);
-        pushPolicy.setChoiceRenderer(new PolicyRenderer(pushPolicies));
+        pushPolicy.setChoiceRenderer(new 
PolicyRenderer(pushPolicies.getObject()));
         pushPolicy.setChoices(new 
ArrayList<>(pushPolicies.getObject().keySet()));
         ((DropDownChoice<?>) pushPolicy.getField()).setNullValid(true);
         container.add(pushPolicy);
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoRealmPolicyProvider.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoRealmPolicyProvider.java
index 1e6737043b..c983e030e4 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoRealmPolicyProvider.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/IdRepoRealmPolicyProvider.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.commons;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
@@ -29,56 +30,36 @@ import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.markup.html.form.AbstractSingleSelectChoice;
 import org.apache.wicket.markup.repeater.RepeatingView;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 
 public class IdRepoRealmPolicyProvider implements RealmPolicyProvider {
 
-    private static final long serialVersionUID = 1L;
-
-    private final IModel<Map<String, String>> accountPolicies = new 
LoadableDetachableModel<>() {
-
-        private static final long serialVersionUID = -2012833443695917883L;
-
-        @Override
-        protected Map<String, String> load() {
-            return PolicyRestClient.list(PolicyType.ACCOUNT).stream().
-                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
-        }
-    };
-
-    private final IModel<Map<String, String>> passwordPolicies = new 
LoadableDetachableModel<>() {
-
-        private static final long serialVersionUID = -2012833443695917883L;
-
-        @Override
-        protected Map<String, String> load() {
-            return PolicyRestClient.list(PolicyType.PASSWORD).stream().
-                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName));
-        }
-    };
+    private static final long serialVersionUID = 2933826125264961282L;
 
     @Override
     public void add(final RealmTO realmTO, final RepeatingView view) {
+        Map<String, String> accountPolicies = 
PolicyRestClient.list(PolicyType.ACCOUNT).stream().
+                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, 
(v1, v2) -> v1, LinkedHashMap::new));
         AjaxDropDownChoicePanel<String> accountPolicy = new 
AjaxDropDownChoicePanel<>(
                 view.newChildId(),
                 new ResourceModel("accountPolicy", 
"accountPolicy").getObject(),
                 new PropertyModel<>(realmTO, "accountPolicy"),
                 false);
         accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies));
-        accountPolicy.setChoices(new 
ArrayList<>(accountPolicies.getObject().keySet()));
+        accountPolicy.setChoices(new ArrayList<>(accountPolicies.keySet()));
         ((AbstractSingleSelectChoice<?>) 
accountPolicy.getField()).setNullValid(true);
         view.add(accountPolicy);
 
+        Map<String, String> passwordPolicies = 
PolicyRestClient.list(PolicyType.PASSWORD).stream().
+                collect(Collectors.toMap(PolicyTO::getKey, PolicyTO::getName, 
(v1, v2) -> v1, LinkedHashMap::new));
         AjaxDropDownChoicePanel<String> passwordPolicy = new 
AjaxDropDownChoicePanel<>(
                 view.newChildId(),
                 new ResourceModel("passwordPolicy", 
"passwordPolicy").getObject(),
                 new PropertyModel<>(realmTO, "passwordPolicy"),
                 false);
         passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies));
-        passwordPolicy.setChoices(new 
ArrayList<>(passwordPolicies.getObject().keySet()));
+        passwordPolicy.setChoices(new ArrayList<>(passwordPolicies.keySet()));
         ((AbstractSingleSelectChoice<?>) 
passwordPolicy.getField()).setNullValid(true);
         view.add(passwordPolicy);
     }
diff --git 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
index 2b05c1b1e3..3d560b5967 100644
--- 
a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
+++ 
b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/PolicyRenderer.java
@@ -20,22 +20,21 @@ package 
org.apache.syncope.client.console.wicket.markup.html.form;
 
 import java.util.Map;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.model.IModel;
 
 public class PolicyRenderer extends ChoiceRenderer<String> {
 
     private static final long serialVersionUID = 8060500161321947000L;
 
-    private final IModel<Map<String, String>> policies;
+    private final Map<String, String> policies;
 
-    public PolicyRenderer(final IModel<Map<String, String>> policies) {
+    public PolicyRenderer(final Map<String, String> policies) {
         super();
         this.policies = policies;
     }
 
     @Override
     public Object getDisplayValue(final String object) {
-        return policies.getObject().get(object);
+        return policies.get(object);
     }
 
     @Override

Reply via email to