X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2Fdirectory%2FRoleContent.java;h=64feb1d6735955310ee458a00c50a53adbe842c8;hb=84914c5224fe7d441cc10f30b8418bf4ac4b0a0f;hp=2a22f023cb5795f40efa7545a8a83a4ef1ca6187;hpb=e2ffdf6872592aa22d0de2b0ec69ee4eca698c45;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/directory/RoleContent.java b/org.argeo.cms/src/org/argeo/cms/acr/directory/RoleContent.java index 2a22f023c..64feb1d67 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/directory/RoleContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/directory/RoleContent.java @@ -1,45 +1,30 @@ package org.argeo.cms.acr.directory; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.TreeSet; +import java.util.Dictionary; -import javax.swing.GroupLayout.Group; import javax.xml.namespace.QName; import org.argeo.api.acr.Content; import org.argeo.api.acr.ContentName; -import org.argeo.api.acr.CrName; -import org.argeo.api.acr.NamespaceUtils; -import org.argeo.api.acr.spi.ContentProvider; import org.argeo.api.acr.spi.ProvidedSession; -import org.argeo.cms.acr.AbstractContent; -import org.argeo.osgi.useradmin.UserDirectory; -import org.argeo.util.naming.LdapAttrs; -import org.argeo.util.naming.LdapObjs; +import org.argeo.api.cms.directory.UserDirectory; import org.osgi.service.useradmin.Role; -import org.osgi.service.useradmin.User; -class RoleContent extends AbstractContent { +class RoleContent extends AbstractDirectoryContent { - private DirectoryContentProvider provider; private HierarchyUnitContent parent; private Role role; public RoleContent(ProvidedSession session, DirectoryContentProvider provider, HierarchyUnitContent parent, Role role) { - super(session); - this.provider = provider; + super(session, provider); this.parent = parent; this.role = role; } @Override - public ContentProvider getProvider() { - return provider; + Dictionary doGetProperties() { + return role.getProperties(); } @Override @@ -53,68 +38,10 @@ class RoleContent extends AbstractContent { return parent; } - @SuppressWarnings("unchecked") - @Override - public Optional get(QName key, Class clss) { - String attrName = key.getLocalPart(); - Object value = role.getProperties().get(attrName); - if (value == null) - return Optional.empty(); - // TODO deal with type and multiple - return Optional.of((A) value); - } - - @Override - protected Iterable keys() { - Set keys = new TreeSet<>(NamespaceUtils.QNAME_COMPARATOR); - keys: for (Enumeration it = role.getProperties().keys(); it.hasMoreElements();) { - String key = it.nextElement(); - if (key.equalsIgnoreCase(LdapAttrs.objectClass.name())) - continue keys; - ContentName name = new ContentName(CrName.LDAP_NAMESPACE_URI, key, provider); - keys.add(name); - } - return keys; - } - - @Override - public List getTypes() { - List contentClasses = new ArrayList<>(); - String objectClass = role.getProperties().get(LdapAttrs.objectClass.name()).toString(); - contentClasses.add(new ContentName(CrName.LDAP_NAMESPACE_URI, objectClass, provider)); - - String[] objectClasses = role.getProperties().get(LdapAttrs.objectClasses.name()).toString().split("\\n"); - objectClasses: for (String oc : objectClasses) { - if (LdapObjs.top.name().equalsIgnoreCase(oc)) - continue objectClasses; - if (objectClass.equalsIgnoreCase(oc)) - continue objectClasses; - contentClasses.add(new ContentName(CrName.LDAP_NAMESPACE_URI, oc, provider)); - } - return contentClasses; - } - - @Override - public Object put(QName key, Object value) { - Object previous = get(key); - // TODO deal with typing - role.getProperties().put(key.getLocalPart(), value); - return previous; - } - - @Override - protected void removeAttr(QName key) { - role.getProperties().remove(key.getLocalPart()); - } - @SuppressWarnings("unchecked") @Override public A adapt(Class clss) { - if (clss.equals(Group.class)) - return (A) role; - else if (clss.equals(User.class)) - return (A) role; - else if (clss.equals(Role.class)) + if (Role.class.isAssignableFrom(clss)) return (A) role; return super.adapt(clss); }