From 1f642af942db627207d8b171dd2fc4db6dce746a Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 23 Nov 2020 19:22:42 +0100 Subject: [PATCH] Prevent duplicate roles. --- .../osgi/useradmin/AggregatingAuthorization.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java index 6729a2c2d..758d3e355 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java @@ -1,10 +1,9 @@ package org.argeo.osgi.useradmin; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; import org.osgi.service.useradmin.Authorization; @@ -14,13 +13,16 @@ class AggregatingAuthorization implements Authorization { private final List systemRoles; private final List roles; - public AggregatingAuthorization(String name, String displayName, - Collection systemRoles, String[] roles) { + public AggregatingAuthorization(String name, String displayName, Set systemRoles, String[] roles) { this.name = name; this.displayName = displayName; - this.systemRoles = Collections.unmodifiableList(new ArrayList( - systemRoles)); - this.roles = Collections.unmodifiableList(Arrays.asList(roles)); + this.systemRoles = Collections.unmodifiableList(new ArrayList(systemRoles)); + List temp = new ArrayList<>(); + for (String role : roles) { + if (!temp.contains(role)) + temp.add(role); + } + this.roles = Collections.unmodifiableList(temp); } @Override -- 2.30.2