X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2Fdirectory%2FRoleContent.java;h=3b1ae46b29b5dfd31fe3cbc89f00c72bcffa2b0d;hb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;hp=bf3b319f40bd4aa5f248e2cdb637b5cca74028e4;hpb=5c9bae758b5bb13ff3b046ad680886ae540865e8;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 bf3b319f4..3b1ae46b2 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,49 +1,37 @@ 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.util.naming.LdapAttrs; -import org.argeo.util.naming.LdapObjs; +import org.argeo.cms.osgi.useradmin.UserDirectory; +import org.osgi.service.useradmin.Group; 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 public QName getName() { - String name = parent.getHierarchyUnit().getDirectory().getRoleSimpleName(role); + String name = ((UserDirectory) parent.getHierarchyUnit().getDirectory()).getRoleSimpleName(role); return new ContentName(name); } @@ -52,60 +40,6 @@ 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) {