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 cdd3d42  [SYNCOPE-1521] Role assignment filter
cdd3d42 is described below

commit cdd3d42a76ad007c4fe1a1e23d7be85ae9015b3d
Author: Marco Di Sabatino Di Diodoro <marco.disabat...@tirasa.net>
AuthorDate: Wed Dec 4 07:34:27 2019 +0100

    [SYNCOPE-1521] Role assignment filter
---
 .../syncope/client/console/wizards/any/Roles.java  | 31 +++++++++++++++++++---
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
index 974d7e9..fd05ced 100644
--- 
a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
+++ 
b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Roles.java
@@ -44,6 +44,8 @@ public class Roles extends WizardStep implements ICondition {
 
     private static final long serialVersionUID = 552437609667518888L;
 
+    private static final int MAX_ROLE_LIST_SIZE = 30;
+
     private final List<String> allRoles;
 
     public <T extends AnyTO> Roles(final AnyWrapper<?> modelObject) {
@@ -79,12 +81,33 @@ public class Roles extends WizardStep implements ICondition 
{
                 : Collections.<String>emptyList();
         Collections.sort(allRoles);
 
-        add(new AjaxPalettePanel.Builder<String>().build("roles",
-                new PropertyModel<List<String>>(entityTO, "roles"),
-                new 
ListModel<>(allRoles)).hideLabel().setOutputMarkupId(true));
+        add(new AjaxPalettePanel.Builder<String>().
+                withFilter().
+                setAllowOrder(true).
+                build("roles",
+                        new PropertyModel<>(modelObject.getInnerObject(), 
"roles"),
+                        new AjaxPalettePanel.Builder.Query<String>() {
+
+                    private static final long serialVersionUID = 
3900199363626636719L;
+
+                    @Override
+                    public List<String> execute(final String filter) {
+                        if (StringUtils.isEmpty(filter) || "*".equals(filter)) 
{
+                            return allRoles.size() > MAX_ROLE_LIST_SIZE
+                                    ? allRoles.subList(0, MAX_ROLE_LIST_SIZE)
+                                    : allRoles;
+
+                        }
+                        return allRoles.stream().
+                                filter(role -> 
StringUtils.containsIgnoreCase(role, filter)).
+                                collect(Collectors.toList());
+                    }
+                }).
+                hideLabel().
+                setOutputMarkupId(true));
 
         add(new AjaxPalettePanel.Builder<String>().build("dynroles",
-                new PropertyModel<List<String>>(entityTO, "dynRoles"),
+                new PropertyModel<>(entityTO, "dynRoles"),
                 new 
ListModel<>(allRoles)).hideLabel().setEnabled(false).setOutputMarkupId(true));
     }
 

Reply via email to