X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2Fdirectory%2FAbstractDirectoryContent.java;h=ac0a7317fba008f187be64fdc14d011a7ccd0b2f;hb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;hp=42b0a08044370a8bc57dfe0adcd5c6e275850f73;hpb=15f93a026914b55e52f147e6aa53392434652522;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java b/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java index 42b0a0804..ac0a7317f 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java @@ -10,14 +10,15 @@ import java.util.TreeSet; import javax.xml.namespace.QName; +import org.argeo.api.acr.ArgeoNamespace; import org.argeo.api.acr.ContentName; -import org.argeo.api.acr.CrName; +import org.argeo.api.acr.CrAttributeType; import org.argeo.api.acr.NamespaceUtils; +import org.argeo.api.acr.ldap.LdapAttrs; +import org.argeo.api.acr.ldap.LdapObjs; 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; abstract class AbstractDirectoryContent extends AbstractContent { protected final DirectoryContentProvider provider; @@ -34,12 +35,13 @@ abstract class AbstractDirectoryContent extends AbstractContent { public Optional get(QName key, Class clss) { String attrName = key.getLocalPart(); Object value = doGetProperties().get(attrName); - if (Long.class.isAssignableFrom(clss)) - return Optional.of((A) (Long) Long.parseLong(value.toString())); if (value == null) return Optional.empty(); - // TODO deal with type and multiple - return Optional.of((A) value); + Optional res = CrAttributeType.cast(clss, value); + if (res.isEmpty()) + return Optional.of((A) value); + else + return res; } @Override @@ -52,7 +54,7 @@ abstract class AbstractDirectoryContent extends AbstractContent { continue keys; if (key.equalsIgnoreCase(LdapAttrs.objectClasses.name())) continue keys; - ContentName name = new ContentName(CrName.LDAP_NAMESPACE_URI, key, provider); + ContentName name = new ContentName(ArgeoNamespace.LDAP_NAMESPACE_URI, key, provider); keys.add(name); } return keys; @@ -63,7 +65,7 @@ abstract class AbstractDirectoryContent extends AbstractContent { Dictionary properties = doGetProperties(); List contentClasses = new ArrayList<>(); String objectClass = properties.get(LdapAttrs.objectClass.name()).toString(); - contentClasses.add(new ContentName(CrName.LDAP_NAMESPACE_URI, objectClass, provider)); + contentClasses.add(new ContentName(ArgeoNamespace.LDAP_NAMESPACE_URI, objectClass, provider)); String[] objectClasses = properties.get(LdapAttrs.objectClasses.name()).toString().split("\\n"); objectClasses: for (String oc : objectClasses) { @@ -71,7 +73,7 @@ abstract class AbstractDirectoryContent extends AbstractContent { continue objectClasses; if (objectClass.equalsIgnoreCase(oc)) continue objectClasses; - contentClasses.add(new ContentName(CrName.LDAP_NAMESPACE_URI, oc, provider)); + contentClasses.add(new ContentName(ArgeoNamespace.LDAP_NAMESPACE_URI, oc, provider)); } return contentClasses; }