Massive package refactoring
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / AbstractDirectoryContent.java
index 42b0a08044370a8bc57dfe0adcd5c6e275850f73..ac0a7317fba008f187be64fdc14d011a7ccd0b2f 100644 (file)
@@ -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 <A> Optional<A> get(QName key, Class<A> 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<A> 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<String, Object> properties = doGetProperties();
                List<QName> 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;
        }