X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FAbstractContent.java;h=fd4ef4cfc2c8dddc6870c91d2df8184a4c202289;hb=7e464c3cedfa41ece64811fb55ddc9ce740a1050;hp=b614a14cbb0702ef2723bd11e12ee0943adcb2d1;hpb=eb4cc3db3bf141c229f0f7ff929daff108bee6d2;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java b/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java index b614a14cb..fd4ef4cfc 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java @@ -15,16 +15,23 @@ import javax.xml.namespace.QName; import org.argeo.api.acr.Content; import org.argeo.api.acr.CrName; import org.argeo.api.acr.spi.ProvidedContent; +import org.argeo.api.acr.spi.ProvidedSession; +import org.argeo.util.LangUtils; /** Partial reference implementation of a {@link ProvidedContent}. */ public abstract class AbstractContent extends AbstractMap implements ProvidedContent { + private final ProvidedSession session; + + public AbstractContent(ProvidedSession session) { + this.session = session; + } /* * ATTRIBUTES OPERATIONS */ - protected abstract Iterable keys(); - - protected abstract void removeAttr(QName key); +// protected abstract Iterable keys(); +// +// protected abstract void removeAttr(QName key); @Override public Set> entrySet() { @@ -87,7 +94,7 @@ public abstract class AbstractContent extends AbstractMap impleme for (Content c : ancestors) { QName name = c.getName(); // FIXME - if (!CrName.ROOT.get().equals(name)) + if (!CrName.root.qName().equals(name)) path.append('/').append(name); } return path.toString(); @@ -100,6 +107,36 @@ public abstract class AbstractContent extends AbstractMap impleme collectAncestors(ancestors, content.getParent()); } + @Override + public int getDepth() { + List ancestors = new ArrayList<>(); + collectAncestors(ancestors, this); + return ancestors.size(); + } + + @Override + public String getSessionLocalId() { + return getPath(); + } + + /* + * SESSION + */ + + @Override + public ProvidedSession getSession() { + return session; + } + + /* + * TYPING + */ + + @Override + public List getContentClasses() { + return new ArrayList<>(); + } + /* * UTILITIES */ @@ -113,6 +150,40 @@ public abstract class AbstractContent extends AbstractMap impleme // return "content " + getPath(); // } + /* + * DEFAULTS + */ + // - no children + // - no attributes + // - cannot be modified + @Override + public Iterator iterator() { + return Collections.emptyIterator(); + } + + @Override + public Content add(QName name, QName... classes) { + throw new UnsupportedOperationException("Content cannot be added."); + } + + @Override + public void remove() { + throw new UnsupportedOperationException("Content cannot be removed."); + } + + protected Iterable keys() { + return Collections.emptySet(); + } + + @Override + public Optional get(QName key, Class clss) { + return null; + } + + protected void removeAttr(QName key) { + throw new UnsupportedOperationException("Attributes cannot be removed."); + } + /* * SUB CLASSES */ @@ -156,12 +227,7 @@ public abstract class AbstractContent extends AbstractMap impleme @Override public int size() { - - int count = 0; - for (Iterator it = keys().iterator(); it.hasNext();) { - count++; - } - return count; + return LangUtils.size(keys()); } }