X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fauth%2FImpliedByPrincipal.java;h=c753601296657c9e69d03499a7b931ad9bdf8ee4;hb=ddc70245fe7413b7341205914c91015600726b4a;hp=417ea69cee817ff4e0fafc834e39d2f0b4641dd1;hpb=93a457cf047cebb0170abd0f37a9b4291a2ae3e9;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java index 417ea69ce..c75360129 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/ImpliedByPrincipal.java @@ -1,8 +1,8 @@ package org.argeo.cms.internal.auth; import java.security.Principal; -import java.security.acl.Group; import java.util.Collections; +import java.util.Dictionary; import java.util.Enumeration; import java.util.HashSet; import java.util.Set; @@ -10,26 +10,28 @@ import java.util.Set; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; -import org.argeo.cms.CmsException; import org.osgi.service.useradmin.Authorization; +import org.osgi.service.useradmin.Role; /** * A {@link Principal} which has been implied by an {@link Authorization}. If it - * is empty it meeans this is an additional identity, otherwise it lists the + * is empty it means this is an additional identity, otherwise it lists the * users (typically the logged in user but possibly empty * {@link ImpliedByPrincipal}s) which have implied it. When an additional - * identityx is removed, the related {@link ImpliedByPrincipal}s can thus be + * identity is removed, the related {@link ImpliedByPrincipal}s can thus be * removed. */ -public final class ImpliedByPrincipal implements Group { +public final class ImpliedByPrincipal implements Principal, Role { private final LdapName name; private Set causes = new HashSet(); + private int type = Role.ROLE; + public ImpliedByPrincipal(String name, Principal userPrincipal) { try { this.name = new LdapName(name); } catch (InvalidNameException e) { - throw new CmsException("Badly formatted role name", e); + throw new IllegalArgumentException("Badly formatted role name", e); } if (userPrincipal != null) causes.add(userPrincipal); @@ -41,31 +43,46 @@ public final class ImpliedByPrincipal implements Group { causes.add(userPrincipal); } - @Override public String getName() { return name.toString(); } - @Override public boolean addMember(Principal user) { throw new UnsupportedOperationException(); } - @Override public boolean removeMember(Principal user) { throw new UnsupportedOperationException(); } - @Override public boolean isMember(Principal member) { return causes.contains(member); } - @Override public Enumeration members() { return Collections.enumeration(causes); } + /* + * USER ADMIN + */ + + @Override + /** Type of {@link Role}, if known. */ + public int getType() { + return type; + } + + @Override + /** Not supported for the time being. */ + public Dictionary getProperties() { + throw new UnsupportedOperationException(); + } + + /* + * OBJECT + */ + @Override public int hashCode() { return name.hashCode(); @@ -85,6 +102,7 @@ public final class ImpliedByPrincipal implements Group { @Override public String toString() { - return name.toString() + ", implied by " + causes; + // return name.toString() + " implied by " + causes; + return name.toString(); } }