import javax.xml.namespace.QName;
import org.argeo.api.acr.Content;
+import org.argeo.api.acr.CrAttributeType;
import org.argeo.api.acr.CrName;
import org.argeo.api.acr.NamespaceUtils;
import org.argeo.api.acr.spi.ProvidedContent;
import org.argeo.api.acr.spi.ProvidedSession;
-import org.argeo.util.LangUtils;
+import org.argeo.cms.util.LangUtils;
/** Partial reference implementation of a {@link ProvidedContent}. */
public abstract class AbstractContent extends AbstractMap<QName, Object> implements ProvidedContent {
}
/*
- * ATTRIBUTES OPERATIONS
+ * ATTRIBUTES MAP IMPLEMENTATION
*/
-// protected abstract Iterable<QName> keys();
-//
-// protected abstract void removeAttr(QName key);
-
@Override
public Set<Entry<QName, Object>> entrySet() {
Set<Entry<QName, Object>> result = new AttrSet();
return result;
}
+ @Override
+ public Object get(Object key) {
+ return get((QName) key, Object.class).orElse(null);
+ }
+
+ /*
+ * ATTRIBUTES OPERATIONS
+ */
@Override
public Class<?> getType(QName key) {
return String.class;
if (value == null)
return new ArrayList<>();
if (value instanceof List) {
- if (isDefaultAttrTypeRequested(clss))
+ if (clss.isAssignableFrom(Object.class))
return (List<A>) value;
List<A> res = new ArrayList<>();
List<?> lst = (List<?>) value;
for (Object o : lst) {
- A item = clss.isAssignableFrom(String.class) ? (A) o.toString() : (A) o;
+ A item = CrAttributeType.cast(clss, o).get();
res.add(item);
}
return res;
} else {// singleton
-// try {
- A res = (A) value;
+ A res = CrAttributeType.cast(clss, value).get();
return Collections.singletonList(res);
-// } catch (ClassCastException e) {
-// return Optional.empty();
-// }
}
}
return ancestors.size();
}
+ @Override
+ public boolean isRoot() {
+ return CrName.root.qName().equals(getName());
+ }
+
@Override
public String getSessionLocalId() {
return getPath();
/*
* UTILITIES
*/
- protected boolean isDefaultAttrTypeRequested(Class<?> clss) {
- // check whether clss is Object.class
- return clss.isAssignableFrom(Object.class);
- }
+// protected boolean isDefaultAttrTypeRequested(Class<?> clss) {
+// // check whether clss is Object.class
+// return clss.isAssignableFrom(Object.class);
+// }
// @Override
// public String toString() {
@Override
public <A> Optional<A> get(QName key, Class<A> clss) {
- return null;
+ return Optional.empty();
}
protected void removeAttr(QName key) {