X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FAggregatingAuthorization.java;h=05ba94889d403e5d681a3744db1d6d5fde14cf9e;hb=f9efbe5228615951dd8482a4582aa24e00c10ce5;hp=758d3e35515aa5af947b7227c77006c92f02a98f;hpb=1f642af942db627207d8b171dd2fc4db6dce746a;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 758d3e355..05ba94889 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/AggregatingAuthorization.java @@ -2,27 +2,31 @@ package org.argeo.osgi.useradmin; import java.util.ArrayList; 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, Set systemRoles, String[] roles) { - this.name = name; + this.name = new X500Principal(name).getName(); this.displayName = displayName; - this.systemRoles = Collections.unmodifiableList(new ArrayList(systemRoles)); - List temp = new ArrayList<>(); + 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.unmodifiableList(temp); + this.roles = Collections.unmodifiableSet(temp); } @Override