]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java
Start centralising ACR attribute cast.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / directory / AbstractDirectoryContent.java
index 62148b9af354df302b12d8a63ebe7302f6fbe811..2d337c0dda38d78bdfc5d78a428a6ae110942cd8 100644 (file)
@@ -11,6 +11,7 @@ import java.util.TreeSet;
 import javax.xml.namespace.QName;
 
 import org.argeo.api.acr.ContentName;
+import org.argeo.api.acr.CrAttributeType;
 import org.argeo.api.acr.CrName;
 import org.argeo.api.acr.NamespaceUtils;
 import org.argeo.api.acr.spi.ContentProvider;
@@ -36,8 +37,11 @@ abstract class AbstractDirectoryContent extends AbstractContent {
                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
@@ -57,7 +61,7 @@ abstract class AbstractDirectoryContent extends AbstractContent {
        }
 
        @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();
@@ -92,5 +96,4 @@ abstract class AbstractDirectoryContent extends AbstractContent {
                return provider;
        }
 
-
 }