X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FAggregatingAuthorization.java;h=05ba94889d403e5d681a3744db1d6d5fde14cf9e;hb=f9efbe5228615951dd8482a4582aa24e00c10ce5;hp=f270b8d89822bafa4db4a730fe3da9e07fb18751;hpb=e66b9893b0e511f8ab295e3cee42b7dc966f1597;p=lgpl%2Fargeo-commons.git 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 f270b8d89..05ba94889 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java @@ -1,28 +1,32 @@ package org.argeo.osgi.useradmin; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.security.auth.x500.X500Principal; import org.osgi.service.useradmin.Authorization; +/** An {@link Authorization} which combines roles form various auth sources. */ class AggregatingAuthorization implements Authorization { private final String name; private final String displayName; - private final List systemRoles; - private final List roles; + private final Set systemRoles; + private final Set roles; - public AggregatingAuthorization(String name, String displayName, - Collection systemRoles, String[] roles) { + public AggregatingAuthorization(String name, String displayName, Set systemRoles, String[] roles) { this.name = new X500Principal(name).getName(); this.displayName = displayName; - this.systemRoles = Collections.unmodifiableList(new ArrayList( - systemRoles)); - this.roles = Collections.unmodifiableList(Arrays.asList(roles)); + this.systemRoles = Collections.unmodifiableSet(new HashSet<>(systemRoles)); + Set temp = new HashSet<>(); + for (String role : roles) { + if (!temp.contains(role)) + temp.add(role); + } + this.roles = Collections.unmodifiableSet(temp); } @Override