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=6729a2c2df1167fa873c18ebbc6e14cb356e59ae;hpb=31d7eccd2b0effdadaaa5b6349e5b6b6ea753e3c;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 6729a2c2d..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,26 +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) { - this.name = name; + 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