]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/acr/CmsContentSession.java
Merge tag 'v2.3.18' into testing
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / CmsContentSession.java
index 8d475fd204853737eae48b94629c04fcdf858ea2..daefe9835e371c4210bf6487ce108ac04700e05d 100644 (file)
@@ -26,10 +26,11 @@ import org.argeo.api.acr.spi.ProvidedContent;
 import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.acr.spi.ProvidedSession;
 import org.argeo.api.uuid.UuidFactory;
+import org.argeo.api.uuid.UuidIdentified;
 import org.argeo.cms.CurrentUser;
 
 /** Implements {@link ProvidedSession}. */
-class CmsContentSession implements ProvidedSession {
+class CmsContentSession implements ProvidedSession, UuidIdentified {
        final private AbstractContentRepository contentRepository;
 
        private final UUID uuid;
@@ -69,32 +70,25 @@ class CmsContentSession implements ProvidedSession {
 
        @Override
        public Content get(String path) {
-               if (!path.startsWith(ContentUtils.ROOT_SLASH))
+               if (!path.startsWith(Content.ROOT_PATH))
                        throw new IllegalArgumentException(path + " is not an absolute path");
                ContentProvider contentProvider = contentRepository.getMountManager().findContentProvider(path);
                String mountPath = contentProvider.getMountPath();
-               String relativePath = extractRelativePath(mountPath, path);
+               String relativePath = ContentUtils.relativize(mountPath, path);
                ProvidedContent content = contentProvider.get(CmsContentSession.this, relativePath);
                return content;
        }
 
        @Override
        public boolean exists(String path) {
-               if (!path.startsWith(ContentUtils.ROOT_SLASH))
+               if (!path.startsWith(Content.ROOT_PATH))
                        throw new IllegalArgumentException(path + " is not an absolute path");
                ContentProvider contentProvider = contentRepository.getMountManager().findContentProvider(path);
                String mountPath = contentProvider.getMountPath();
-               String relativePath = extractRelativePath(mountPath, path);
+               String relativePath = ContentUtils.relativize(mountPath, path);
                return contentProvider.exists(this, relativePath);
        }
 
-       private String extractRelativePath(String mountPath, String path) {
-               String relativePath = path.substring(mountPath.length());
-               if (relativePath.length() > 0 && relativePath.charAt(0) == '/')
-                       relativePath = relativePath.substring(1);
-               return relativePath;
-       }
-
        @Override
        public Subject getSubject() {
                return subject;
@@ -161,7 +155,7 @@ class CmsContentSession implements ProvidedSession {
        }
 
        @Override
-       public UUID getUuid() {
+       public UUID uuid() {
                return uuid;
        }
 
@@ -180,11 +174,18 @@ class CmsContentSession implements ProvidedSession {
                return sessionRunDir;
        }
 
+       /*
+        * OBJECT METHODS
+        */
+
        @Override
        public boolean equals(Object o) {
-               if (o instanceof CmsContentSession session)
-                       return uuid.equals(session.uuid);
-               return false;
+               return UuidIdentified.equals(this, o);
+       }
+
+       @Override
+       public int hashCode() {
+               return UuidIdentified.hashCode(this);
        }
 
        @Override