X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FAbstractContent.java;h=1cffef40ef5cc77f5be0783bfd5087ba48c1a565;hb=975fb5e581d0650768afc68a0e839657f318e77a;hp=0aa4e9d4f783d770d9c2e1b44ecdef76ec854129;hpb=5a7b8b145ad29401b9940f7e1493a7dec1cd0156;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 0aa4e9d4f..1cffef40e 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java @@ -14,6 +14,7 @@ import javax.xml.namespace.QName; import org.argeo.api.acr.Content; 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; @@ -23,7 +24,7 @@ public abstract class AbstractContent extends AbstractMap impleme private final ProvidedSession session; // cache - private String _path = null; +// private String _path = null; public AbstractContent(ProvidedSession session) { this.session = session; @@ -57,7 +58,7 @@ public abstract class AbstractContent extends AbstractMap impleme public Optional> getMultiple(QName key, Class clss) { Object value = get(key); if (value == null) - return null; + return Optional.empty(); if (value instanceof List) { try { List res = (List) value; @@ -91,19 +92,25 @@ public abstract class AbstractContent extends AbstractMap impleme @Override public String getPath() { - if (_path != null) - return _path; +// if (_path != null) +// return _path; List ancestors = new ArrayList<>(); collectAncestors(ancestors, this); StringBuilder path = new StringBuilder(); - for (Content c : ancestors) { + ancestors: for (Content c : ancestors) { QName name = c.getName(); - // FIXME - if (!CrName.root.qName().equals(name)) - path.append('/').append(name); + if (CrName.root.qName().equals(name)) + continue ancestors; + + path.append('/'); + path.append(NamespaceUtils.toPrefixedName(name)); + int siblingIndex = c.getSiblingIndex(); + if (siblingIndex != 1) + path.append('[').append(siblingIndex).append(']'); } - _path = path.toString(); - return _path; +// _path = path.toString(); +// return _path; + return path.toString(); } private void collectAncestors(List ancestors, Content content) {