Add cached path to content
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 5 Sep 2022 06:29:31 +0000 (08:29 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 5 Sep 2022 06:29:31 +0000 (08:29 +0200)
org.argeo.cms/src/org/argeo/cms/acr/AbstractContent.java

index fd4ef4cfc2c8dddc6870c91d2df8184a4c202289..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,6 +91,8 @@ 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();
@@ -97,7 +102,8 @@ public abstract class AbstractContent extends AbstractMap<QName, Object> impleme
                        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();
+       }
 }