]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java
Add cached path to content
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / AbstractContent.java
index 2703af035ee0005f2b386cc0c8dfe3fe2568e629..0aa4e9d4f783d770d9c2e1b44ecdef76ec854129 100644 (file)
@@ -22,6 +22,9 @@ import org.argeo.util.LangUtils;
 public abstract class AbstractContent extends AbstractMap<QName, Object> implements ProvidedContent {
        private final ProvidedSession session;
 
+       // cache
+       private String _path = null;
+
        public AbstractContent(ProvidedSession session) {
                this.session = session;
        }
@@ -88,16 +91,19 @@ public abstract class AbstractContent extends AbstractMap<QName, Object> impleme
 
        @Override
        public String getPath() {
+               if (_path != null)
+                       return _path;
                List<Content> ancestors = new ArrayList<>();
                collectAncestors(ancestors, this);
                StringBuilder path = new StringBuilder();
                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();
+               _path = path.toString();
+               return _path;
        }
 
        private void collectAncestors(List<Content> ancestors, Content content) {
@@ -231,4 +237,12 @@ public abstract class AbstractContent extends AbstractMap<QName, Object> impleme
                }
 
        }
+
+       /*
+        * OBJECT METHODS
+        */
+       @Override
+       public String toString() {
+               return "content " + getPath();
+       }
 }