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;
Object value = doGetProperties().get(attrName);
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
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;
}
@Override
- public List<QName> getTypes() {
+ public List<QName> getContentClasses() {
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) {
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;
}
return provider;
}
-
}